Subject: [PATCH] Built motion from commit db94841.|2.5.3

From: Vito Macchia <[email-masked]>
Date: Wed, 9 Sep 2020 16:12:06 +0200

---
 apidoc/api_data.js                                 |38664 +++++++++++++++++++-
 apidoc/api_data.json                               |38664 +++++++++++++++++++-
 apidoc/api_project.js                              |   25 +-
 apidoc/api_project.json                            |   25 +-
 apidoc/css/style.css                               |   62 +-
 apidoc/fonts/glyphicons-halflings-regular.eot      |  Bin 20127 -> 20127 bytes
 apidoc/fonts/glyphicons-halflings-regular.ttf      |  Bin 45404 -> 45404 bytes
 apidoc/fonts/glyphicons-halflings-regular.woff     |  Bin 23424 -> 23424 bytes
 apidoc/fonts/glyphicons-halflings-regular.woff2    |  Bin 18028 -> 18028 bytes
 apidoc/img/favicon.ico                             |  Bin 894 -> 894 bytes
 apidoc/index.html                                  |   37 +-
 apidoc/main.js                                     |  105 +-
 apidoc/utils/handlebars_helper.js                  |   21 +-
 apidoc/utils/send_sample_request.js                |   49 +-
 apidoc/utils/send_sample_request_utils.js          |   86 +
 apidoc/vendor/handlebars.min.js                    |   14 +-
 apidoc/vendor/lodash.custom.min.js                 |   68 +-
 apidoc/vendor/prettify.css                         |   51 -
 apidoc/vendor/prettify/lang-Splus.js               |   18 -
 apidoc/vendor/prettify/lang-aea.js                 |   18 -
 apidoc/vendor/prettify/lang-agc.js                 |   18 -
 apidoc/vendor/prettify/lang-apollo.js              |   18 -
 apidoc/vendor/prettify/lang-basic.js               |   18 -
 apidoc/vendor/prettify/lang-cbm.js                 |   18 -
 apidoc/vendor/prettify/lang-cl.js                  |   18 -
 apidoc/vendor/prettify/lang-clj.js                 |   17 -
 apidoc/vendor/prettify/lang-css.js                 |   18 -
 apidoc/vendor/prettify/lang-dart.js                |   19 -
 apidoc/vendor/prettify/lang-el.js                  |   18 -
 apidoc/vendor/prettify/lang-erl.js                 |   18 -
 apidoc/vendor/prettify/lang-erlang.js              |   18 -
 apidoc/vendor/prettify/lang-fs.js                  |   18 -
 apidoc/vendor/prettify/lang-go.js                  |   17 -
 apidoc/vendor/prettify/lang-hs.js                  |   18 -
 apidoc/vendor/prettify/lang-lasso.js               |   19 -
 apidoc/vendor/prettify/lang-lassoscript.js         |   19 -
 apidoc/vendor/prettify/lang-latex.js               |   17 -
 apidoc/vendor/prettify/lang-lgt.js                 |   18 -
 apidoc/vendor/prettify/lang-lisp.js                |   18 -
 apidoc/vendor/prettify/lang-ll.js                  |   17 -
 apidoc/vendor/prettify/lang-llvm.js                |   17 -
 apidoc/vendor/prettify/lang-logtalk.js             |   18 -
 apidoc/vendor/prettify/lang-ls.js                  |   19 -
 apidoc/vendor/prettify/lang-lsp.js                 |   18 -
 apidoc/vendor/prettify/lang-lua.js                 |   18 -
 apidoc/vendor/prettify/lang-matlab.js              |   29 -
 apidoc/vendor/prettify/lang-ml.js                  |   18 -
 apidoc/vendor/prettify/lang-mumps.js               |   18 -
 apidoc/vendor/prettify/lang-n.js                   |   19 -
 apidoc/vendor/prettify/lang-nemerle.js             |   19 -
 apidoc/vendor/prettify/lang-pascal.js              |   18 -
 apidoc/vendor/prettify/lang-proto.js               |   17 -
 apidoc/vendor/prettify/lang-r.js                   |   18 -
 apidoc/vendor/prettify/lang-rd.js                  |   17 -
 apidoc/vendor/prettify/lang-rkt.js                 |   18 -
 apidoc/vendor/prettify/lang-rust.js                |   20 -
 apidoc/vendor/prettify/lang-s.js                   |   18 -
 apidoc/vendor/prettify/lang-scala.js               |   18 -
 apidoc/vendor/prettify/lang-scm.js                 |   18 -
 apidoc/vendor/prettify/lang-sql.js                 |   18 -
 apidoc/vendor/prettify/lang-ss.js                  |   18 -
 apidoc/vendor/prettify/lang-swift.js               |   16 -
 apidoc/vendor/prettify/lang-tcl.js                 |   18 -
 apidoc/vendor/prettify/lang-tex.js                 |   17 -
 apidoc/vendor/prettify/lang-vb.js                  |   19 -
 apidoc/vendor/prettify/lang-vbs.js                 |   19 -
 apidoc/vendor/prettify/lang-vhd.js                 |   19 -
 apidoc/vendor/prettify/lang-vhdl.js                |   19 -
 apidoc/vendor/prettify/lang-wiki.js                |   18 -
 apidoc/vendor/prettify/lang-xq.js                  |   19 -
 apidoc/vendor/prettify/lang-xquery.js              |   19 -
 apidoc/vendor/prettify/lang-yaml.js                |   18 -
 apidoc/vendor/prettify/lang-yml.js                 |   18 -
 apidoc/vendor/prettify/prettify.css                |    1 -
 apidoc/vendor/prettify/prettify.js                 |   46 -
 apidoc/vendor/prettify/run_prettify.js             |   63 -
 apidoc/vendor/prism.css                            |  125 +
 apidoc/vendor/prism.js                             |   21 +
 package.json                                       |  201 +-
 public/app/errors/404/i18n/ru.json                 |    6 +-
 public/app/errors/500/i18n/ru.json                 |   12 +-
 public/app/footer/i18n/ru.json                     |    2 +-
 public/app/forgot/i18n/ru.json                     |   18 +-
 public/app/header/i18n/ru.json                     |    2 +-
 public/app/login/i18n/ru.json                      |   16 +-
 public/app/main/apps/analytics/i18n/ru.json        |  100 +-
 public/app/main/apps/callysquare/i18n/ar.json      |    4 +-
 public/app/main/apps/callysquare/i18n/cs.json      |    4 +-
 public/app/main/apps/callysquare/i18n/da.json      |    4 +-
 public/app/main/apps/callysquare/i18n/de.json      |    4 +-
 public/app/main/apps/callysquare/i18n/en.json      |    7 +-
 public/app/main/apps/callysquare/i18n/es.json      |    4 +-
 public/app/main/apps/callysquare/i18n/et.json      |    4 +-
 public/app/main/apps/callysquare/i18n/fa.json      |    4 +-
 public/app/main/apps/callysquare/i18n/fi.json      |    4 +-
 public/app/main/apps/callysquare/i18n/fr.json      |    4 +-
 public/app/main/apps/callysquare/i18n/he.json      |    4 +-
 public/app/main/apps/callysquare/i18n/hi.json      |    4 +-
 public/app/main/apps/callysquare/i18n/id.json      |    4 +-
 public/app/main/apps/callysquare/i18n/it.json      |    7 +-
 public/app/main/apps/callysquare/i18n/ja.json      |    4 +-
 public/app/main/apps/callysquare/i18n/ko.json      |    4 +-
 public/app/main/apps/callysquare/i18n/lt.json      |    4 +-
 public/app/main/apps/callysquare/i18n/lv.json      |    4 +-
 public/app/main/apps/callysquare/i18n/nl.json      |    4 +-
 public/app/main/apps/callysquare/i18n/no.json      |    4 +-
 public/app/main/apps/callysquare/i18n/pl.json      |    4 +-
 public/app/main/apps/callysquare/i18n/pt-BR.json   |    4 +-
 public/app/main/apps/callysquare/i18n/pt-PT.json   |    4 +-
 public/app/main/apps/callysquare/i18n/ru.json      |  328 +-
 public/app/main/apps/callysquare/i18n/sv.json      |    4 +-
 public/app/main/apps/callysquare/i18n/tr.json      |    4 +-
 public/app/main/apps/callysquare/i18n/zh-CN.json   |    4 +-
 public/app/main/apps/callysquare/i18n/zh-TW.json   |    4 +-
 public/app/main/apps/chat/i18n/ar.json             |   10 +-
 public/app/main/apps/chat/i18n/da.json             |   10 +-
 public/app/main/apps/chat/i18n/de.json             |   10 +-
 public/app/main/apps/chat/i18n/en.json             |    6 +
 public/app/main/apps/chat/i18n/es.json             |   10 +-
 public/app/main/apps/chat/i18n/fa.json             |   10 +-
 public/app/main/apps/chat/i18n/fi.json             |   10 +-
 public/app/main/apps/chat/i18n/fr.json             |   10 +-
 public/app/main/apps/chat/i18n/he.json             |   10 +-
 public/app/main/apps/chat/i18n/hi.json             |   10 +-
 public/app/main/apps/chat/i18n/id.json             |   10 +-
 public/app/main/apps/chat/i18n/it.json             |    8 +-
 public/app/main/apps/chat/i18n/ja.json             |   10 +-
 public/app/main/apps/chat/i18n/ko.json             |   10 +-
 public/app/main/apps/chat/i18n/lv.json             |   10 +-
 public/app/main/apps/chat/i18n/nl.json             |   10 +-
 public/app/main/apps/chat/i18n/no.json             |   10 +-
 public/app/main/apps/chat/i18n/pl.json             |   10 +-
 public/app/main/apps/chat/i18n/pt-BR.json          |   10 +-
 public/app/main/apps/chat/i18n/pt-PT.json          |   10 +-
 public/app/main/apps/chat/i18n/ru.json             |  618 +-
 public/app/main/apps/chat/i18n/sv.json             |   10 +-
 public/app/main/apps/chat/i18n/tr.json             |   10 +-
 public/app/main/apps/chat/i18n/zh-CN.json          |   10 +-
 public/app/main/apps/chat/i18n/zh-TW.json          |   10 +-
 public/app/main/apps/contactmanager/i18n/ar.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/da.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/de.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/en.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/es.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/fa.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/fi.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/fr.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/he.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/hi.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/id.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/it.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/ja.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/ko.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/lv.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/nl.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/no.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/pl.json   |    3 +-
 .../app/main/apps/contactmanager/i18n/pt-BR.json   |    3 +-
 .../app/main/apps/contactmanager/i18n/pt-PT.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/ru.json   |  211 +-
 public/app/main/apps/contactmanager/i18n/sv.json   |    3 +-
 public/app/main/apps/contactmanager/i18n/tr.json   |    3 +-
 .../app/main/apps/contactmanager/i18n/zh-CN.json   |    3 +-
 .../app/main/apps/contactmanager/i18n/zh-TW.json   |    3 +-
 public/app/main/apps/dashboards/i18n/ar.json       |    6 +-
 public/app/main/apps/dashboards/i18n/da.json       |    6 +-
 public/app/main/apps/dashboards/i18n/de.json       |    6 +-
 public/app/main/apps/dashboards/i18n/en.json       |    6 +-
 public/app/main/apps/dashboards/i18n/es.json       |    6 +-
 public/app/main/apps/dashboards/i18n/fa.json       |    6 +-
 public/app/main/apps/dashboards/i18n/fi.json       |    6 +-
 public/app/main/apps/dashboards/i18n/fr.json       |    6 +-
 public/app/main/apps/dashboards/i18n/he.json       |    6 +-
 public/app/main/apps/dashboards/i18n/hi.json       |    6 +-
 public/app/main/apps/dashboards/i18n/id.json       |    6 +-
 public/app/main/apps/dashboards/i18n/it.json       |    6 +-
 public/app/main/apps/dashboards/i18n/ja.json       |    6 +-
 public/app/main/apps/dashboards/i18n/ko.json       |    6 +-
 public/app/main/apps/dashboards/i18n/lt.json       |  474 +-
 public/app/main/apps/dashboards/i18n/lv.json       |    6 +-
 public/app/main/apps/dashboards/i18n/nl.json       |    6 +-
 public/app/main/apps/dashboards/i18n/no.json       |    6 +-
 public/app/main/apps/dashboards/i18n/pl.json       |    6 +-
 public/app/main/apps/dashboards/i18n/pt-BR.json    |    6 +-
 public/app/main/apps/dashboards/i18n/pt-PT.json    |    6 +-
 public/app/main/apps/dashboards/i18n/ru.json       |  764 +-
 public/app/main/apps/dashboards/i18n/sv.json       |    6 +-
 public/app/main/apps/dashboards/i18n/tr.json       |    6 +-
 public/app/main/apps/dashboards/i18n/zh-CN.json    |    6 +-
 public/app/main/apps/dashboards/i18n/zh-TW.json    |    6 +-
 public/app/main/apps/fax/i18n/lt.json              |  494 +-
 public/app/main/apps/fax/i18n/ru.json              |  324 +-
 public/app/main/apps/help/i18n/lt.json             |    8 +-
 public/app/main/apps/help/i18n/ru.json             |    6 +-
 public/app/main/apps/integrations/i18n/lt.json     |  454 +-
 public/app/main/apps/integrations/i18n/ru.json     |  292 +-
 public/app/main/apps/jscripty/i18n/lt.json         |  288 +-
 public/app/main/apps/jscripty/i18n/ru.json         |  244 +-
 public/app/main/apps/mail/i18n/lt.json             |  622 +-
 public/app/main/apps/mail/i18n/ru.json             |  412 +-
 public/app/main/apps/marketplace/i18n/ru.json      |   40 +-
 public/app/main/apps/motiondialer/i18n/ar.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/cs.json     |   50 +-
 public/app/main/apps/motiondialer/i18n/da.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/de.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/en.json     |    2 +-
 public/app/main/apps/motiondialer/i18n/es.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/et.json     |   50 +-
 public/app/main/apps/motiondialer/i18n/fa.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/fi.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/fr.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/he.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/hi.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/id.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/it.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/ja.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/ko.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/lt.json     |  638 +-
 public/app/main/apps/motiondialer/i18n/lv.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/nl.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/no.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/pl.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/pt-BR.json  |   15 +-
 public/app/main/apps/motiondialer/i18n/pt-PT.json  |   15 +-
 public/app/main/apps/motiondialer/i18n/ru.json     | 1018 +-
 public/app/main/apps/motiondialer/i18n/sv.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/tr.json     |   15 +-
 public/app/main/apps/motiondialer/i18n/zh-CN.json  |   15 +-
 public/app/main/apps/motiondialer/i18n/zh-TW.json  |   15 +-
 public/app/main/apps/openchannel/i18n/ru.json      |  334 +-
 public/app/main/apps/settings/i18n/ar.json         |   33 +-
 public/app/main/apps/settings/i18n/da.json         |   33 +-
 public/app/main/apps/settings/i18n/de.json         |   33 +-
 public/app/main/apps/settings/i18n/en.json         |  131 +-
 public/app/main/apps/settings/i18n/es.json         |   33 +-
 public/app/main/apps/settings/i18n/fa.json         |   33 +-
 public/app/main/apps/settings/i18n/fi.json         |   33 +-
 public/app/main/apps/settings/i18n/fr.json         |   33 +-
 public/app/main/apps/settings/i18n/he.json         |   33 +-
 public/app/main/apps/settings/i18n/hi.json         |   33 +-
 public/app/main/apps/settings/i18n/id.json         |   33 +-
 public/app/main/apps/settings/i18n/it.json         |  127 +-
 public/app/main/apps/settings/i18n/ja.json         |   33 +-
 public/app/main/apps/settings/i18n/ko.json         |   33 +-
 public/app/main/apps/settings/i18n/lv.json         |   33 +-
 public/app/main/apps/settings/i18n/nl.json         |   33 +-
 public/app/main/apps/settings/i18n/no.json         |   33 +-
 public/app/main/apps/settings/i18n/pl.json         |   33 +-
 public/app/main/apps/settings/i18n/pt-BR.json      |   33 +-
 public/app/main/apps/settings/i18n/pt-PT.json      |   33 +-
 public/app/main/apps/settings/i18n/ru.json         |  307 +-
 public/app/main/apps/settings/i18n/sv.json         |   33 +-
 public/app/main/apps/settings/i18n/tr.json         |   33 +-
 public/app/main/apps/settings/i18n/zh-CN.json      |   33 +-
 public/app/main/apps/settings/i18n/zh-TW.json      |   33 +-
 public/app/main/apps/sms/i18n/ru.json              |  362 +-
 public/app/main/apps/staff/i18n/ar.json            |   20 +-
 public/app/main/apps/staff/i18n/da.json            |   20 +-
 public/app/main/apps/staff/i18n/de.json            |   20 +-
 public/app/main/apps/staff/i18n/en.json            |   14 +
 public/app/main/apps/staff/i18n/es.json            |   20 +-
 public/app/main/apps/staff/i18n/fa.json            |   20 +-
 public/app/main/apps/staff/i18n/fi.json            |   20 +-
 public/app/main/apps/staff/i18n/fr.json            |   20 +-
 public/app/main/apps/staff/i18n/he.json            |   20 +-
 public/app/main/apps/staff/i18n/hi.json            |   20 +-
 public/app/main/apps/staff/i18n/id.json            |   20 +-
 public/app/main/apps/staff/i18n/it.json            |   20 +-
 public/app/main/apps/staff/i18n/ja.json            |   20 +-
 public/app/main/apps/staff/i18n/ko.json            |   20 +-
 public/app/main/apps/staff/i18n/lv.json            |   20 +-
 public/app/main/apps/staff/i18n/nl.json            |   20 +-
 public/app/main/apps/staff/i18n/no.json            |   20 +-
 public/app/main/apps/staff/i18n/pl.json            |   20 +-
 public/app/main/apps/staff/i18n/pt-BR.json         |   20 +-
 public/app/main/apps/staff/i18n/pt-PT.json         |   20 +-
 public/app/main/apps/staff/i18n/ru.json            |  480 +-
 public/app/main/apps/staff/i18n/sv.json            |   20 +-
 public/app/main/apps/staff/i18n/tr.json            |   20 +-
 public/app/main/apps/staff/i18n/zh-CN.json         |   20 +-
 public/app/main/apps/staff/i18n/zh-TW.json         |   20 +-
 public/app/main/apps/tools/i18n/ar.json            |    3 +-
 public/app/main/apps/tools/i18n/da.json            |    3 +-
 public/app/main/apps/tools/i18n/de.json            |    3 +-
 public/app/main/apps/tools/i18n/en.json            |    3 +-
 public/app/main/apps/tools/i18n/es.json            |    3 +-
 public/app/main/apps/tools/i18n/fa.json            |    3 +-
 public/app/main/apps/tools/i18n/fi.json            |    3 +-
 public/app/main/apps/tools/i18n/fr.json            |    3 +-
 public/app/main/apps/tools/i18n/he.json            |    3 +-
 public/app/main/apps/tools/i18n/hi.json            |    3 +-
 public/app/main/apps/tools/i18n/id.json            |    3 +-
 public/app/main/apps/tools/i18n/it.json            |    3 +-
 public/app/main/apps/tools/i18n/ja.json            |    3 +-
 public/app/main/apps/tools/i18n/ko.json            |    3 +-
 public/app/main/apps/tools/i18n/lv.json            |    3 +-
 public/app/main/apps/tools/i18n/nl.json            |    3 +-
 public/app/main/apps/tools/i18n/no.json            |    3 +-
 public/app/main/apps/tools/i18n/pl.json            |    3 +-
 public/app/main/apps/tools/i18n/pt-BR.json         |    3 +-
 public/app/main/apps/tools/i18n/pt-PT.json         |    3 +-
 public/app/main/apps/tools/i18n/ru.json            |  545 +-
 public/app/main/apps/tools/i18n/sv.json            |    3 +-
 public/app/main/apps/tools/i18n/tr.json            |    3 +-
 public/app/main/apps/tools/i18n/zh-CN.json         |    3 +-
 public/app/main/apps/tools/i18n/zh-TW.json         |    3 +-
 public/app/main/apps/video/i18n/ru.json            |   46 +-
 public/app/main/apps/voice/i18n/ar.json            |   25 +-
 public/app/main/apps/voice/i18n/cs.json            |    6 +-
 public/app/main/apps/voice/i18n/da.json            |   25 +-
 public/app/main/apps/voice/i18n/de.json            |   25 +-
 public/app/main/apps/voice/i18n/en.json            |  215 +-
 public/app/main/apps/voice/i18n/es.json            |   25 +-
 public/app/main/apps/voice/i18n/et.json            |    6 +-
 public/app/main/apps/voice/i18n/fa.json            |   25 +-
 public/app/main/apps/voice/i18n/fi.json            |   25 +-
 public/app/main/apps/voice/i18n/fr.json            |   25 +-
 public/app/main/apps/voice/i18n/he.json            |   25 +-
 public/app/main/apps/voice/i18n/hi.json            |   25 +-
 public/app/main/apps/voice/i18n/id.json            |   25 +-
 public/app/main/apps/voice/i18n/it.json            |  217 +-
 public/app/main/apps/voice/i18n/ja.json            |   43 +-
 public/app/main/apps/voice/i18n/ko.json            |   25 +-
 public/app/main/apps/voice/i18n/lt.json            |    6 +-
 public/app/main/apps/voice/i18n/lv.json            |   25 +-
 public/app/main/apps/voice/i18n/nl.json            |   25 +-
 public/app/main/apps/voice/i18n/no.json            |   25 +-
 public/app/main/apps/voice/i18n/pl.json            |   25 +-
 public/app/main/apps/voice/i18n/pt-BR.json         |   25 +-
 public/app/main/apps/voice/i18n/pt-PT.json         |   25 +-
 public/app/main/apps/voice/i18n/ru.json            |  709 +-
 public/app/main/apps/voice/i18n/sv.json            |   25 +-
 public/app/main/apps/voice/i18n/tr.json            |   25 +-
 public/app/main/apps/voice/i18n/zh-CN.json         |   25 +-
 public/app/main/apps/voice/i18n/zh-TW.json         |   25 +-
 public/app/quick-panel/i18n/ru.json                |   74 +-
 public/app/reset/i18n/ru.json                      |   22 +-
 public/app/toolbar/i18n/ar.json                    |    6 +-
 public/app/toolbar/i18n/da.json                    |    6 +-
 public/app/toolbar/i18n/de.json                    |    6 +-
 public/app/toolbar/i18n/en.json                    |    8 +-
 public/app/toolbar/i18n/es.json                    |    6 +-
 public/app/toolbar/i18n/fa.json                    |    6 +-
 public/app/toolbar/i18n/fi.json                    |    6 +-
 public/app/toolbar/i18n/fr.json                    |    6 +-
 public/app/toolbar/i18n/he.json                    |    6 +-
 public/app/toolbar/i18n/hi.json                    |    6 +-
 public/app/toolbar/i18n/id.json                    |    6 +-
 public/app/toolbar/i18n/it.json                    |    6 +-
 public/app/toolbar/i18n/ja.json                    |    6 +-
 public/app/toolbar/i18n/ko.json                    |    6 +-
 public/app/toolbar/i18n/lv.json                    |    6 +-
 public/app/toolbar/i18n/nl.json                    |    6 +-
 public/app/toolbar/i18n/no.json                    |    6 +-
 public/app/toolbar/i18n/pl.json                    |    6 +-
 public/app/toolbar/i18n/pt-BR.json                 |    6 +-
 public/app/toolbar/i18n/pt-PT.json                 |    6 +-
 public/app/toolbar/i18n/ru.json                    |  122 +-
 public/app/toolbar/i18n/sv.json                    |    6 +-
 public/app/toolbar/i18n/tr.json                    |    6 +-
 public/app/toolbar/i18n/zh-CN.json                 |    6 +-
 public/app/toolbar/i18n/zh-TW.json                 |    6 +-
 public/index.html                                  |    6 +-
 public/scripts/app.74f89fce.js                     |    1 -
 public/scripts/app.87a823db.js                     |   18 +
 public/scripts/vendor.17cdb947.js                  |    1 -
 public/scripts/vendor.4b108999.js                  |  587 +
 public/styles/app.9ec358c8.css                     |    1 -
 public/styles/app.daa56aff.css                     |    1 +
 server/api/action/action.attributes.js             |    2 +-
 server/api/action/action.controller.js             |    2 +-
 server/api/action/action.model.js                  |    2 +-
 server/api/action/action.rpc.js                    |    2 +-
 server/api/action/index.js                         |    2 +-
 .../analyticCustomReport.attributes.js             |    2 +-
 .../analyticCustomReport.controller.js             |    2 +-
 .../analyticCustomReport.model.js                  |    2 +-
 .../analyticCustomReport.rpc.js                    |    2 +-
 server/api/analyticCustomReport/index.js           |    2 +-
 .../analyticDefaultReport.attributes.js            |    2 +-
 .../analyticDefaultReport.controller.js            |    2 +-
 .../analyticDefaultReport.model.js                 |    2 +-
 .../analyticDefaultReport.rpc.js                   |    2 +-
 server/api/analyticDefaultReport/index.js          |    2 +-
 .../analyticExtractedReport.attributes.js          |    2 +-
 .../analyticExtractedReport.controller.js          |    2 +-
 .../analyticExtractedReport.model.js               |    2 +-
 .../analyticExtractedReport.rpc.js                 |    2 +-
 server/api/analyticExtractedReport/index.js        |    2 +-
 .../analyticFieldReport.attributes.js              |    2 +-
 .../analyticFieldReport.controller.js              |    2 +-
 .../analyticFieldReport.model.js                   |    2 +-
 .../analyticFieldReport/analyticFieldReport.rpc.js |    2 +-
 server/api/analyticFieldReport/index.js            |    2 +-
 .../analyticMetric/analyticMetric.attributes.js    |    2 +-
 .../analyticMetric/analyticMetric.controller.js    |    2 +-
 server/api/analyticMetric/analyticMetric.model.js  |    2 +-
 server/api/analyticMetric/analyticMetric.rpc.js    |    2 +-
 server/api/analyticMetric/index.js                 |    2 +-
 .../analyticTreeReport.attributes.js               |    2 +-
 .../analyticTreeReport.controller.js               |    2 +-
 .../analyticTreeReport/analyticTreeReport.model.js |    2 +-
 .../analyticTreeReport/analyticTreeReport.rpc.js   |    2 +-
 server/api/analyticTreeReport/index.js             |    2 +-
 server/api/attachment/attachment.attributes.js     |    2 +-
 server/api/attachment/attachment.controller.js     |    2 +-
 server/api/attachment/attachment.model.js          |    2 +-
 server/api/attachment/attachment.rpc.js            |    2 +-
 server/api/attachment/index.js                     |    2 +-
 server/api/authGoogle/authGoogle.controller.js     |    2 +-
 server/api/authGoogle/index.js                     |    2 +-
 server/api/authLocal/authLocal.controller.js       |    2 +-
 server/api/authLocal/index.js                      |    2 +-
 server/api/automation/automation.attributes.js     |    2 +-
 server/api/automation/automation.controller.js     |    2 +-
 server/api/automation/automation.model.js          |    2 +-
 server/api/automation/automation.rpc.js            |    2 +-
 server/api/automation/index.js                     |    2 +-
 server/api/campaign/campaign.attributes.js         |    2 +-
 server/api/campaign/campaign.controller.js         |    2 +-
 server/api/campaign/campaign.model.js              |    2 +-
 server/api/campaign/campaign.rpc.js                |    2 +-
 server/api/campaign/index.js                       |    2 +-
 server/api/cannedAnswer/cannedAnswer.attributes.js |    2 +-
 server/api/cannedAnswer/cannedAnswer.controller.js |    2 +-
 server/api/cannedAnswer/cannedAnswer.model.js      |    2 +-
 server/api/cannedAnswer/cannedAnswer.rpc.js        |    2 +-
 server/api/cannedAnswer/index.js                   |    2 +-
 server/api/cdr/cdr.attributes.js                   |    2 +-
 server/api/cdr/cdr.controller.js                   |    2 +-
 server/api/cdr/cdr.model.js                        |    2 +-
 server/api/cdr/cdr.rpc.js                          |    2 +-
 server/api/cdr/index.js                            |    2 +-
 .../chatApplication/chatApplication.attributes.js  |    2 +-
 .../chatApplication/chatApplication.controller.js  |    2 +-
 .../api/chatApplication/chatApplication.model.js   |    2 +-
 server/api/chatApplication/chatApplication.rpc.js  |    2 +-
 server/api/chatApplication/index.js                |    2 +-
 server/api/chatGroup/chatGroup.attributes.js       |    2 +-
 server/api/chatGroup/chatGroup.controller.js       |    2 +-
 server/api/chatGroup/chatGroup.events.js           |    2 +-
 server/api/chatGroup/chatGroup.model.js            |    2 +-
 server/api/chatGroup/chatGroup.rpc.js              |    2 +-
 server/api/chatGroup/chatGroup.socket.js           |    2 +-
 server/api/chatGroup/index.js                      |    2 +-
 .../chatInteraction/chatInteraction.attributes.js  |    2 +-
 .../chatInteraction/chatInteraction.controller.js  |    2 +-
 .../api/chatInteraction/chatInteraction.events.js  |    2 +-
 .../api/chatInteraction/chatInteraction.model.js   |    2 +-
 server/api/chatInteraction/chatInteraction.rpc.js  |    2 +-
 .../api/chatInteraction/chatInteraction.socket.js  |    2 +-
 server/api/chatInteraction/index.js                |    2 +-
 .../chatInternalMessage.attributes.js              |    2 +-
 .../chatInternalMessage.controller.js              |    2 +-
 .../chatInternalMessage.events.js                  |    2 +-
 .../chatInternalMessage.model.js                   |    2 +-
 .../chatInternalMessage/chatInternalMessage.rpc.js |    2 +-
 .../chatInternalMessage.socket.js                  |    2 +-
 server/api/chatInternalMessage/index.js            |    2 +-
 server/api/chatMessage/chatMessage.attributes.js   |    2 +-
 server/api/chatMessage/chatMessage.controller.js   |    2 +-
 server/api/chatMessage/chatMessage.events.js       |    2 +-
 server/api/chatMessage/chatMessage.model.js        |    2 +-
 server/api/chatMessage/chatMessage.rpc.js          |    2 +-
 server/api/chatMessage/chatMessage.socket.js       |    2 +-
 server/api/chatMessage/index.js                    |    2 +-
 .../chatOfflineMessage.attributes.js               |    2 +-
 .../chatOfflineMessage.controller.js               |    2 +-
 .../chatOfflineMessage/chatOfflineMessage.model.js |    2 +-
 .../chatOfflineMessage/chatOfflineMessage.rpc.js   |    2 +-
 server/api/chatOfflineMessage/index.js             |    2 +-
 .../chatProactiveAction.attributes.js              |    2 +-
 .../chatProactiveAction.controller.js              |    2 +-
 .../chatProactiveAction.model.js                   |    2 +-
 .../chatProactiveAction/chatProactiveAction.rpc.js |    2 +-
 server/api/chatProactiveAction/index.js            |    2 +-
 server/api/chatQueue/chatQueue.attributes.js       |    2 +-
 server/api/chatQueue/chatQueue.controller.js       |    2 +-
 server/api/chatQueue/chatQueue.events.js           |    2 +-
 server/api/chatQueue/chatQueue.model.js            |    2 +-
 server/api/chatQueue/chatQueue.rpc.js              |    2 +-
 server/api/chatQueue/chatQueue.socket.js           |    2 +-
 server/api/chatQueue/index.js                      |    2 +-
 .../chatQueueReport/chatQueueReport.attributes.js  |    2 +-
 .../chatQueueReport/chatQueueReport.controller.js  |    2 +-
 .../api/chatQueueReport/chatQueueReport.model.js   |    2 +-
 server/api/chatQueueReport/chatQueueReport.rpc.js  |    2 +-
 server/api/chatQueueReport/index.js                |    2 +-
 .../chatTransferReport.attributes.js               |    2 +-
 .../chatTransferReport.controller.js               |    2 +-
 .../chatTransferReport/chatTransferReport.model.js |    2 +-
 .../chatTransferReport/chatTransferReport.rpc.js   |    2 +-
 server/api/chatTransferReport/index.js             |    2 +-
 server/api/chatWebsite/chatWebsite.attributes.js   |    2 +-
 server/api/chatWebsite/chatWebsite.controller.js   |    2 +-
 server/api/chatWebsite/chatWebsite.events.js       |    2 +-
 server/api/chatWebsite/chatWebsite.model.js        |    2 +-
 server/api/chatWebsite/chatWebsite.rpc.js          |    2 +-
 server/api/chatWebsite/chatWebsite.socket.js       |    2 +-
 server/api/chatWebsite/index.js                    |    2 +-
 .../api/cloudProvider/cloudProvider.attributes.js  |    2 +-
 .../api/cloudProvider/cloudProvider.controller.js  |    2 +-
 server/api/cloudProvider/cloudProvider.model.js    |    2 +-
 server/api/cloudProvider/cloudProvider.rpc.js      |    2 +-
 server/api/cloudProvider/index.js                  |    2 +-
 server/api/cmCompany/cmCompany.attributes.js       |    2 +-
 server/api/cmCompany/cmCompany.controller.js       |    2 +-
 server/api/cmCompany/cmCompany.model.js            |    2 +-
 server/api/cmCompany/cmCompany.rpc.js              |    2 +-
 server/api/cmCompany/index.js                      |    2 +-
 server/api/cmContact/cmContact.attributes.js       |    2 +-
 server/api/cmContact/cmContact.controller.js       |    2 +-
 server/api/cmContact/cmContact.events.js           |    2 +-
 server/api/cmContact/cmContact.model.js            |    2 +-
 server/api/cmContact/cmContact.rpc.js              |    2 +-
 server/api/cmContact/cmContact.socket.js           |    2 +-
 server/api/cmContact/index.js                      |    2 +-
 .../api/cmCustomField/cmCustomField.attributes.js  |    2 +-
 .../api/cmCustomField/cmCustomField.controller.js  |    2 +-
 server/api/cmCustomField/cmCustomField.model.js    |    2 +-
 server/api/cmCustomField/cmCustomField.rpc.js      |    2 +-
 server/api/cmCustomField/index.js                  |    2 +-
 server/api/cmHopper/cmHopper.attributes.js         |    2 +-
 server/api/cmHopper/cmHopper.controller.js         |    2 +-
 server/api/cmHopper/cmHopper.model.js              |    2 +-
 server/api/cmHopper/cmHopper.rpc.js                |    2 +-
 server/api/cmHopper/index.js                       |    2 +-
 .../api/cmHopperBlack/cmHopperBlack.attributes.js  |    2 +-
 .../api/cmHopperBlack/cmHopperBlack.controller.js  |    2 +-
 server/api/cmHopperBlack/cmHopperBlack.model.js    |    2 +-
 server/api/cmHopperBlack/cmHopperBlack.rpc.js      |    2 +-
 server/api/cmHopperBlack/index.js                  |    2 +-
 .../api/cmHopperFinal/cmHopperFinal.attributes.js  |    2 +-
 .../api/cmHopperFinal/cmHopperFinal.controller.js  |    2 +-
 server/api/cmHopperFinal/cmHopperFinal.model.js    |    2 +-
 server/api/cmHopperFinal/cmHopperFinal.rpc.js      |    2 +-
 server/api/cmHopperFinal/index.js                  |    2 +-
 .../cmHopperHistory/cmHopperHistory.attributes.js  |    2 +-
 .../cmHopperHistory/cmHopperHistory.controller.js  |    2 +-
 .../api/cmHopperHistory/cmHopperHistory.model.js   |    2 +-
 server/api/cmHopperHistory/cmHopperHistory.rpc.js  |    2 +-
 server/api/cmHopperHistory/index.js                |    2 +-
 server/api/cmList/cmList.attributes.js             |    2 +-
 server/api/cmList/cmList.controller.js             |    2 +-
 server/api/cmList/cmList.events.js                 |    2 +-
 server/api/cmList/cmList.model.js                  |    2 +-
 server/api/cmList/cmList.rpc.js                    |    2 +-
 server/api/cmList/cmList.socket.js                 |    2 +-
 server/api/cmList/index.js                         |    2 +-
 server/api/condition/condition.attributes.js       |    2 +-
 server/api/condition/condition.controller.js       |    2 +-
 server/api/condition/condition.model.js            |    2 +-
 server/api/condition/condition.rpc.js              |    2 +-
 server/api/condition/index.js                      |    2 +-
 server/api/dashboard/dashboard.attributes.js       |    2 +-
 server/api/dashboard/dashboard.controller.js       |    2 +-
 server/api/dashboard/dashboard.events.js           |    2 +-
 server/api/dashboard/dashboard.model.js            |    2 +-
 server/api/dashboard/dashboard.rpc.js              |    2 +-
 server/api/dashboard/dashboard.socket.js           |    2 +-
 server/api/dashboard/index.js                      |    2 +-
 .../api/dashboardItem/dashboardItem.attributes.js  |    2 +-
 .../api/dashboardItem/dashboardItem.controller.js  |    2 +-
 server/api/dashboardItem/dashboardItem.events.js   |    2 +-
 server/api/dashboardItem/dashboardItem.model.js    |    2 +-
 server/api/dashboardItem/dashboardItem.rpc.js      |    2 +-
 server/api/dashboardItem/dashboardItem.socket.js   |    2 +-
 server/api/dashboardItem/index.js                  |    2 +-
 server/api/disposition/disposition.attributes.js   |    2 +-
 server/api/disposition/disposition.controller.js   |    2 +-
 server/api/disposition/disposition.model.js        |    2 +-
 server/api/disposition/disposition.rpc.js          |    2 +-
 server/api/disposition/index.js                    |    2 +-
 server/api/faxAccount/faxAccount.attributes.js     |    2 +-
 server/api/faxAccount/faxAccount.controller.js     |    2 +-
 server/api/faxAccount/faxAccount.events.js         |    2 +-
 server/api/faxAccount/faxAccount.model.js          |    2 +-
 server/api/faxAccount/faxAccount.rpc.js            |    2 +-
 server/api/faxAccount/faxAccount.socket.js         |    2 +-
 server/api/faxAccount/index.js                     |    2 +-
 .../faxApplication/faxApplication.attributes.js    |    2 +-
 .../faxApplication/faxApplication.controller.js    |    2 +-
 server/api/faxApplication/faxApplication.model.js  |    2 +-
 server/api/faxApplication/faxApplication.rpc.js    |    2 +-
 server/api/faxApplication/index.js                 |    2 +-
 .../faxInteraction/faxInteraction.attributes.js    |    2 +-
 .../faxInteraction/faxInteraction.controller.js    |    2 +-
 server/api/faxInteraction/faxInteraction.events.js |    2 +-
 server/api/faxInteraction/faxInteraction.model.js  |    2 +-
 server/api/faxInteraction/faxInteraction.rpc.js    |    2 +-
 server/api/faxInteraction/faxInteraction.socket.js |    2 +-
 server/api/faxInteraction/index.js                 |    2 +-
 server/api/faxMessage/faxMessage.attributes.js     |    2 +-
 server/api/faxMessage/faxMessage.controller.js     |    2 +-
 server/api/faxMessage/faxMessage.events.js         |    2 +-
 server/api/faxMessage/faxMessage.model.js          |    2 +-
 server/api/faxMessage/faxMessage.rpc.js            |    2 +-
 server/api/faxMessage/faxMessage.socket.js         |    2 +-
 server/api/faxMessage/index.js                     |    2 +-
 server/api/faxQueue/faxQueue.attributes.js         |    2 +-
 server/api/faxQueue/faxQueue.controller.js         |    2 +-
 server/api/faxQueue/faxQueue.events.js             |    2 +-
 server/api/faxQueue/faxQueue.model.js              |    2 +-
 server/api/faxQueue/faxQueue.rpc.js                |    2 +-
 server/api/faxQueue/faxQueue.socket.js             |    2 +-
 server/api/faxQueue/index.js                       |    2 +-
 .../faxQueueReport/faxQueueReport.attributes.js    |    2 +-
 .../faxQueueReport/faxQueueReport.controller.js    |    2 +-
 server/api/faxQueueReport/faxQueueReport.model.js  |    2 +-
 server/api/faxQueueReport/faxQueueReport.rpc.js    |    2 +-
 server/api/faxQueueReport/index.js                 |    2 +-
 .../faxTransferReport.attributes.js                |    2 +-
 .../faxTransferReport.controller.js                |    2 +-
 .../faxTransferReport/faxTransferReport.model.js   |    2 +-
 .../api/faxTransferReport/faxTransferReport.rpc.js |    2 +-
 server/api/faxTransferReport/index.js              |    2 +-
 server/api/intDeskAccount/index.js                 |    2 +-
 .../intDeskAccount/intDeskAccount.attributes.js    |    2 +-
 .../intDeskAccount/intDeskAccount.controller.js    |    2 +-
 server/api/intDeskAccount/intDeskAccount.model.js  |    2 +-
 server/api/intDeskAccount/intDeskAccount.rpc.js    |    2 +-
 server/api/intDeskConfiguration/index.js           |    2 +-
 .../intDeskConfiguration.attributes.js             |    2 +-
 .../intDeskConfiguration.controller.js             |    2 +-
 .../intDeskConfiguration.model.js                  |    2 +-
 .../intDeskConfiguration.rpc.js                    |    2 +-
 server/api/intDeskField/index.js                   |    2 +-
 server/api/intDeskField/intDeskField.attributes.js |    2 +-
 server/api/intDeskField/intDeskField.controller.js |    2 +-
 server/api/intDeskField/intDeskField.model.js      |    2 +-
 server/api/intDeskField/intDeskField.rpc.js        |    2 +-
 server/api/intDynamics365Account/index.js          |    2 +-
 .../intDynamics365Account.attributes.js            |    2 +-
 .../intDynamics365Account.controller.js            |    2 +-
 .../intDynamics365Account.model.js                 |    2 +-
 .../intDynamics365Account.rpc.js                   |    2 +-
 server/api/intDynamics365Configuration/index.js    |    2 +-
 .../intDynamics365Configuration.attributes.js      |    2 +-
 .../intDynamics365Configuration.controller.js      |    2 +-
 .../intDynamics365Configuration.model.js           |    2 +-
 .../intDynamics365Configuration.rpc.js             |    2 +-
 server/api/intDynamics365Field/index.js            |    2 +-
 .../intDynamics365Field.attributes.js              |    2 +-
 .../intDynamics365Field.controller.js              |    2 +-
 .../intDynamics365Field.model.js                   |    2 +-
 .../intDynamics365Field/intDynamics365Field.rpc.js |    2 +-
 server/api/intFreshdeskAccount/index.js            |    2 +-
 .../intFreshdeskAccount.attributes.js              |    2 +-
 .../intFreshdeskAccount.controller.js              |    2 +-
 .../intFreshdeskAccount.model.js                   |    2 +-
 .../intFreshdeskAccount/intFreshdeskAccount.rpc.js |    2 +-
 server/api/intFreshdeskConfiguration/index.js      |    2 +-
 .../intFreshdeskConfiguration.attributes.js        |    2 +-
 .../intFreshdeskConfiguration.controller.js        |    2 +-
 .../intFreshdeskConfiguration.model.js             |    2 +-
 .../intFreshdeskConfiguration.rpc.js               |    2 +-
 server/api/intFreshdeskField/index.js              |    2 +-
 .../intFreshdeskField.attributes.js                |    2 +-
 .../intFreshdeskField.controller.js                |    2 +-
 .../intFreshdeskField/intFreshdeskField.model.js   |    2 +-
 .../api/intFreshdeskField/intFreshdeskField.rpc.js |    2 +-
 server/api/intFreshsalesAccount/index.js           |    2 +-
 .../intFreshsalesAccount.attributes.js             |    2 +-
 .../intFreshsalesAccount.controller.js             |    2 +-
 .../intFreshsalesAccount.model.js                  |    2 +-
 .../intFreshsalesAccount.rpc.js                    |    2 +-
 server/api/intFreshsalesConfiguration/index.js     |    2 +-
 .../intFreshsalesConfiguration.attributes.js       |    2 +-
 .../intFreshsalesConfiguration.controller.js       |    2 +-
 .../intFreshsalesConfiguration.model.js            |    2 +-
 .../intFreshsalesConfiguration.rpc.js              |    2 +-
 server/api/intFreshsalesField/index.js             |    2 +-
 .../intFreshsalesField.attributes.js               |    2 +-
 .../intFreshsalesField.controller.js               |    2 +-
 .../intFreshsalesField/intFreshsalesField.model.js |    2 +-
 .../intFreshsalesField/intFreshsalesField.rpc.js   |    2 +-
 server/api/intSalesforceAccount/index.js           |    2 +-
 .../intSalesforceAccount.attributes.js             |    2 +-
 .../intSalesforceAccount.controller.js             |    2 +-
 .../intSalesforceAccount.model.js                  |    2 +-
 .../intSalesforceAccount.rpc.js                    |    2 +-
 server/api/intSalesforceConfiguration/index.js     |    2 +-
 .../intSalesforceConfiguration.attributes.js       |    2 +-
 .../intSalesforceConfiguration.controller.js       |    2 +-
 .../intSalesforceConfiguration.model.js            |    2 +-
 .../intSalesforceConfiguration.rpc.js              |    2 +-
 server/api/intSalesforceField/index.js             |    2 +-
 .../intSalesforceField.attributes.js               |    2 +-
 .../intSalesforceField.controller.js               |    2 +-
 .../intSalesforceField/intSalesforceField.model.js |    2 +-
 .../intSalesforceField/intSalesforceField.rpc.js   |    2 +-
 server/api/intServicenowAccount/index.js           |    2 +-
 .../intServicenowAccount.attributes.js             |    2 +-
 .../intServicenowAccount.controller.js             |    2 +-
 .../intServicenowAccount.model.js                  |    2 +-
 .../intServicenowAccount.rpc.js                    |    2 +-
 server/api/intServicenowConfiguration/index.js     |    2 +-
 .../intServicenowConfiguration.attributes.js       |    2 +-
 .../intServicenowConfiguration.controller.js       |    2 +-
 .../intServicenowConfiguration.model.js            |    2 +-
 .../intServicenowConfiguration.rpc.js              |    2 +-
 server/api/intServicenowField/index.js             |    2 +-
 .../intServicenowField.attributes.js               |    2 +-
 .../intServicenowField.controller.js               |    2 +-
 .../intServicenowField/intServicenowField.model.js |    2 +-
 .../intServicenowField/intServicenowField.rpc.js   |    2 +-
 server/api/intSugarcrmAccount/index.js             |    2 +-
 .../intSugarcrmAccount.attributes.js               |    2 +-
 .../intSugarcrmAccount.controller.js               |    2 +-
 .../intSugarcrmAccount/intSugarcrmAccount.model.js |    2 +-
 .../intSugarcrmAccount/intSugarcrmAccount.rpc.js   |    2 +-
 server/api/intSugarcrmConfiguration/index.js       |    2 +-
 .../intSugarcrmConfiguration.attributes.js         |    2 +-
 .../intSugarcrmConfiguration.controller.js         |    2 +-
 .../intSugarcrmConfiguration.model.js              |    2 +-
 .../intSugarcrmConfiguration.rpc.js                |    2 +-
 server/api/intSugarcrmField/index.js               |    2 +-
 .../intSugarcrmField.attributes.js                 |    2 +-
 .../intSugarcrmField.controller.js                 |    2 +-
 .../api/intSugarcrmField/intSugarcrmField.model.js |    2 +-
 .../api/intSugarcrmField/intSugarcrmField.rpc.js   |    2 +-
 server/api/intVtigerAccount/index.js               |    2 +-
 .../intVtigerAccount.attributes.js                 |    2 +-
 .../intVtigerAccount.controller.js                 |    2 +-
 .../api/intVtigerAccount/intVtigerAccount.model.js |    2 +-
 .../api/intVtigerAccount/intVtigerAccount.rpc.js   |    2 +-
 server/api/intVtigerConfiguration/index.js         |    2 +-
 .../intVtigerConfiguration.attributes.js           |    2 +-
 .../intVtigerConfiguration.controller.js           |    2 +-
 .../intVtigerConfiguration.model.js                |    2 +-
 .../intVtigerConfiguration.rpc.js                  |    2 +-
 server/api/intVtigerField/index.js                 |    2 +-
 .../intVtigerField/intVtigerField.attributes.js    |    2 +-
 .../intVtigerField/intVtigerField.controller.js    |    2 +-
 server/api/intVtigerField/intVtigerField.model.js  |    2 +-
 server/api/intVtigerField/intVtigerField.rpc.js    |    2 +-
 server/api/intZendeskAccount/index.js              |    2 +-
 .../intZendeskAccount.attributes.js                |    2 +-
 .../intZendeskAccount.controller.js                |    2 +-
 .../intZendeskAccount/intZendeskAccount.model.js   |    2 +-
 .../api/intZendeskAccount/intZendeskAccount.rpc.js |    2 +-
 server/api/intZendeskConfiguration/index.js        |    2 +-
 .../intZendeskConfiguration.attributes.js          |    2 +-
 .../intZendeskConfiguration.controller.js          |    2 +-
 .../intZendeskConfiguration.model.js               |    2 +-
 .../intZendeskConfiguration.rpc.js                 |    2 +-
 server/api/intZendeskField/index.js                |    2 +-
 .../intZendeskField/intZendeskField.attributes.js  |    2 +-
 .../intZendeskField/intZendeskField.controller.js  |    2 +-
 .../api/intZendeskField/intZendeskField.model.js   |    2 +-
 server/api/intZendeskField/intZendeskField.rpc.js  |    2 +-
 server/api/intZohoAccount/index.js                 |    2 +-
 .../intZohoAccount/intZohoAccount.attributes.js    |    2 +-
 .../intZohoAccount/intZohoAccount.controller.js    |    2 +-
 server/api/intZohoAccount/intZohoAccount.model.js  |    2 +-
 server/api/intZohoAccount/intZohoAccount.rpc.js    |    2 +-
 server/api/intZohoConfiguration/index.js           |    2 +-
 .../intZohoConfiguration.attributes.js             |    2 +-
 .../intZohoConfiguration.controller.js             |    2 +-
 .../intZohoConfiguration.model.js                  |    2 +-
 .../intZohoConfiguration.rpc.js                    |    2 +-
 server/api/intZohoField/index.js                   |    2 +-
 server/api/intZohoField/intZohoField.attributes.js |    2 +-
 server/api/intZohoField/intZohoField.controller.js |    2 +-
 server/api/intZohoField/intZohoField.model.js      |    2 +-
 server/api/intZohoField/intZohoField.rpc.js        |    2 +-
 server/api/integration/index.js                    |    2 +-
 server/api/integration/integration.attributes.js   |    2 +-
 server/api/integration/integration.controller.js   |    2 +-
 server/api/integration/integration.model.js        |    2 +-
 server/api/integration/integration.rpc.js          |    2 +-
 server/api/integrationReport/index.js              |    2 +-
 .../integrationReport.attributes.js                |    2 +-
 .../integrationReport.controller.js                |    2 +-
 .../integrationReport/integrationReport.model.js   |    2 +-
 .../api/integrationReport/integrationReport.rpc.js |    2 +-
 server/api/interval/index.js                       |    2 +-
 server/api/interval/interval.attributes.js         |    2 +-
 server/api/interval/interval.controller.js         |    2 +-
 server/api/interval/interval.model.js              |    2 +-
 server/api/interval/interval.rpc.js                |    2 +-
 server/api/jira/index.js                           |    2 +-
 server/api/jira/jira.controller.js                 |    2 +-
 server/api/jscriptyAnswerReport/index.js           |    2 +-
 .../jscriptyAnswerReport.attributes.js             |    2 +-
 .../jscriptyAnswerReport.controller.js             |    2 +-
 .../jscriptyAnswerReport.model.js                  |    2 +-
 .../jscriptyAnswerReport.rpc.js                    |    2 +-
 server/api/jscriptyProject/index.js                |    2 +-
 .../jscriptyProject/jscriptyProject.attributes.js  |    2 +-
 .../jscriptyProject/jscriptyProject.controller.js  |    2 +-
 .../api/jscriptyProject/jscriptyProject.model.js   |    2 +-
 server/api/jscriptyProject/jscriptyProject.rpc.js  |    2 +-
 server/api/jscriptyQuestionReport/index.js         |    2 +-
 .../jscriptyQuestionReport.attributes.js           |    2 +-
 .../jscriptyQuestionReport.controller.js           |    2 +-
 .../jscriptyQuestionReport.model.js                |    2 +-
 .../jscriptyQuestionReport.rpc.js                  |    2 +-
 server/api/jscriptySessionReport/index.js          |    2 +-
 .../jscriptySessionReport.attributes.js            |    2 +-
 .../jscriptySessionReport.controller.js            |    2 +-
 .../jscriptySessionReport.model.js                 |    2 +-
 .../jscriptySessionReport.rpc.js                   |    2 +-
 server/api/license/index.js                        |    2 +-
 server/api/license/license.attributes.js           |    2 +-
 server/api/license/license.controller.js           |    2 +-
 server/api/license/license.model.js                |    2 +-
 server/api/license/license.rpc.js                  |    2 +-
 server/api/mailAccount/index.js                    |    2 +-
 server/api/mailAccount/mailAccount.attributes.js   |    2 +-
 server/api/mailAccount/mailAccount.controller.js   |    2 +-
 server/api/mailAccount/mailAccount.events.js       |    2 +-
 server/api/mailAccount/mailAccount.model.js        |    2 +-
 server/api/mailAccount/mailAccount.rpc.js          |    2 +-
 server/api/mailAccount/mailAccount.socket.js       |    2 +-
 server/api/mailApplication/index.js                |    2 +-
 .../mailApplication/mailApplication.attributes.js  |    2 +-
 .../mailApplication/mailApplication.controller.js  |    2 +-
 .../api/mailApplication/mailApplication.model.js   |    2 +-
 server/api/mailApplication/mailApplication.rpc.js  |    2 +-
 server/api/mailInteraction/index.js                |    2 +-
 .../mailInteraction/mailInteraction.attributes.js  |    2 +-
 .../mailInteraction/mailInteraction.controller.js  |    2 +-
 .../api/mailInteraction/mailInteraction.events.js  |    2 +-
 .../api/mailInteraction/mailInteraction.model.js   |    2 +-
 server/api/mailInteraction/mailInteraction.rpc.js  |    2 +-
 .../api/mailInteraction/mailInteraction.socket.js  |    2 +-
 server/api/mailMessage/index.js                    |    2 +-
 server/api/mailMessage/mailMessage.attributes.js   |    2 +-
 server/api/mailMessage/mailMessage.controller.js   |    2 +-
 server/api/mailMessage/mailMessage.events.js       |    2 +-
 server/api/mailMessage/mailMessage.model.js        |    2 +-
 server/api/mailMessage/mailMessage.rpc.js          |    2 +-
 server/api/mailMessage/mailMessage.socket.js       |    2 +-
 server/api/mailQueue/index.js                      |    2 +-
 server/api/mailQueue/mailQueue.attributes.js       |    2 +-
 server/api/mailQueue/mailQueue.controller.js       |    2 +-
 server/api/mailQueue/mailQueue.events.js           |    2 +-
 server/api/mailQueue/mailQueue.model.js            |    2 +-
 server/api/mailQueue/mailQueue.rpc.js              |    2 +-
 server/api/mailQueue/mailQueue.socket.js           |    2 +-
 server/api/mailQueueReport/index.js                |    2 +-
 .../mailQueueReport/mailQueueReport.attributes.js  |    2 +-
 .../mailQueueReport/mailQueueReport.controller.js  |    2 +-
 .../api/mailQueueReport/mailQueueReport.model.js   |    2 +-
 server/api/mailQueueReport/mailQueueReport.rpc.js  |    2 +-
 server/api/mailServerIn/index.js                   |    2 +-
 server/api/mailServerIn/mailServerIn.attributes.js |    2 +-
 server/api/mailServerIn/mailServerIn.model.js      |    2 +-
 server/api/mailServerIn/mailServerIn.rpc.js        |    2 +-
 server/api/mailServerOut/index.js                  |    2 +-
 .../api/mailServerOut/mailServerOut.attributes.js  |    2 +-
 .../api/mailServerOut/mailServerOut.controller.js  |    2 +-
 server/api/mailServerOut/mailServerOut.model.js    |    2 +-
 server/api/mailServerOut/mailServerOut.rpc.js      |    2 +-
 server/api/mailSubstatus/index.js                  |    2 +-
 .../api/mailSubstatus/mailSubstatus.attributes.js  |    2 +-
 .../api/mailSubstatus/mailSubstatus.controller.js  |    2 +-
 server/api/mailSubstatus/mailSubstatus.model.js    |    2 +-
 server/api/mailSubstatus/mailSubstatus.rpc.js      |    2 +-
 server/api/mailTransferReport/index.js             |    2 +-
 .../mailTransferReport.attributes.js               |    2 +-
 .../mailTransferReport.controller.js               |    2 +-
 .../mailTransferReport/mailTransferReport.model.js |    2 +-
 .../mailTransferReport/mailTransferReport.rpc.js   |    2 +-
 server/api/memberReport/index.js                   |    2 +-
 server/api/memberReport/memberReport.attributes.js |    2 +-
 server/api/memberReport/memberReport.controller.js |    2 +-
 server/api/memberReport/memberReport.model.js      |    2 +-
 server/api/memberReport/memberReport.rpc.js        |    2 +-
 server/api/migration/index.js                      |    2 +-
 server/api/migration/migration.attributes.js       |    2 +-
 server/api/migration/migration.controller.js       |    2 +-
 server/api/migration/migration.model.js            |    2 +-
 server/api/migration/migration.rpc.js              |    2 +-
 server/api/network/index.js                        |    2 +-
 server/api/network/network.attributes.js           |    2 +-
 server/api/network/network.controller.js           |    2 +-
 server/api/network/network.model.js                |    2 +-
 server/api/network/network.rpc.js                  |    2 +-
 server/api/notification/index.js                   |    2 +-
 server/api/notification/notification.attributes.js |    2 +-
 server/api/notification/notification.controller.js |    2 +-
 server/api/notification/notification.events.js     |    2 +-
 server/api/notification/notification.model.js      |    2 +-
 server/api/notification/notification.rpc.js        |    2 +-
 server/api/notification/notification.socket.js     |    2 +-
 server/api/openchannelAccount/index.js             |    2 +-
 .../openchannelAccount.attributes.js               |    2 +-
 .../openchannelAccount.controller.js               |    2 +-
 .../openchannelAccount.events.js                   |    2 +-
 .../openchannelAccount/openchannelAccount.model.js |    2 +-
 .../openchannelAccount/openchannelAccount.rpc.js   |    2 +-
 .../openchannelAccount.socket.js                   |    2 +-
 server/api/openchannelApplication/index.js         |    2 +-
 .../openchannelApplication.attributes.js           |    2 +-
 .../openchannelApplication.controller.js           |    2 +-
 .../openchannelApplication.model.js                |    2 +-
 .../openchannelApplication.rpc.js                  |    2 +-
 server/api/openchannelInteraction/index.js         |    2 +-
 .../openchannelInteraction.attributes.js           |    2 +-
 .../openchannelInteraction.controller.js           |    2 +-
 .../openchannelInteraction.events.js               |    2 +-
 .../openchannelInteraction.model.js                |    2 +-
 .../openchannelInteraction.rpc.js                  |    2 +-
 .../openchannelInteraction.socket.js               |    2 +-
 server/api/openchannelMessage/index.js             |    2 +-
 .../openchannelMessage.attributes.js               |    2 +-
 .../openchannelMessage.controller.js               |    2 +-
 .../openchannelMessage.events.js                   |    2 +-
 .../openchannelMessage/openchannelMessage.model.js |    2 +-
 .../openchannelMessage/openchannelMessage.rpc.js   |    2 +-
 .../openchannelMessage.socket.js                   |    2 +-
 server/api/openchannelQueue/index.js               |    2 +-
 .../openchannelQueue.attributes.js                 |    2 +-
 .../openchannelQueue.controller.js                 |    2 +-
 .../openchannelQueue/openchannelQueue.events.js    |    2 +-
 .../api/openchannelQueue/openchannelQueue.model.js |    2 +-
 .../api/openchannelQueue/openchannelQueue.rpc.js   |    2 +-
 .../openchannelQueue/openchannelQueue.socket.js    |    2 +-
 server/api/openchannelQueueReport/index.js         |    2 +-
 .../openchannelQueueReport.attributes.js           |    2 +-
 .../openchannelQueueReport.controller.js           |    2 +-
 .../openchannelQueueReport.model.js                |    2 +-
 .../openchannelQueueReport.rpc.js                  |    2 +-
 server/api/openchannelTransferReport/index.js      |    2 +-
 .../openchannelTransferReport.attributes.js        |    2 +-
 .../openchannelTransferReport.controller.js        |    2 +-
 .../openchannelTransferReport.model.js             |    2 +-
 .../openchannelTransferReport.rpc.js               |    2 +-
 server/api/pause/index.js                          |    2 +-
 server/api/pause/pause.attributes.js               |    2 +-
 server/api/pause/pause.controller.js               |    2 +-
 server/api/pause/pause.model.js                    |    2 +-
 server/api/pause/pause.rpc.js                      |    2 +-
 server/api/plugin/index.js                         |    2 +-
 server/api/plugin/plugin.attributes.js             |    2 +-
 server/api/plugin/plugin.controller.js             |    2 +-
 server/api/plugin/plugin.events.js                 |    2 +-
 server/api/plugin/plugin.model.js                  |    2 +-
 server/api/plugin/plugin.rpc.js                    |    2 +-
 server/api/plugin/plugin.socket.js                 |    2 +-
 server/api/pm2/index.js                            |    2 +-
 server/api/pm2/pm2.controller.js                   |    2 +-
 server/api/reportAgentPreview/index.js             |    2 +-
 .../reportAgentPreview.attributes.js               |    2 +-
 .../reportAgentPreview/reportAgentPreview.model.js |    2 +-
 .../reportAgentPreview/reportAgentPreview.rpc.js   |    2 +-
 server/api/rpc/index.js                            |    2 +-
 server/api/rpc/rpc.controller.js                   |    2 +-
 server/api/schedule/index.js                       |    2 +-
 server/api/schedule/schedule.attributes.js         |    2 +-
 server/api/schedule/schedule.controller.js         |    2 +-
 server/api/schedule/schedule.model.js              |    2 +-
 server/api/schedule/schedule.rpc.js                |    2 +-
 server/api/screenRecording/index.js                |    2 +-
 .../screenRecording/screenRecording.attributes.js  |    2 +-
 .../screenRecording/screenRecording.controller.js  |    2 +-
 .../api/screenRecording/screenRecording.model.js   |    2 +-
 server/api/screenRecording/screenRecording.rpc.js  |    2 +-
 server/api/setting/index.js                        |    2 +-
 server/api/setting/setting.attributes.js           |    2 +-
 server/api/setting/setting.controller.js           |    2 +-
 server/api/setting/setting.model.js                |    2 +-
 server/api/setting/setting.rpc.js                  |    2 +-
 server/api/smsAccount/index.js                     |    2 +-
 server/api/smsAccount/smsAccount.attributes.js     |    2 +-
 server/api/smsAccount/smsAccount.controller.js     |    2 +-
 server/api/smsAccount/smsAccount.events.js         |    2 +-
 server/api/smsAccount/smsAccount.model.js          |    2 +-
 server/api/smsAccount/smsAccount.rpc.js            |    2 +-
 server/api/smsAccount/smsAccount.socket.js         |    2 +-
 server/api/smsApplication/index.js                 |    2 +-
 .../smsApplication/smsApplication.attributes.js    |    2 +-
 .../smsApplication/smsApplication.controller.js    |    2 +-
 server/api/smsApplication/smsApplication.model.js  |    2 +-
 server/api/smsApplication/smsApplication.rpc.js    |    2 +-
 server/api/smsInteraction/index.js                 |    2 +-
 .../smsInteraction/smsInteraction.attributes.js    |    2 +-
 .../smsInteraction/smsInteraction.controller.js    |    2 +-
 server/api/smsInteraction/smsInteraction.events.js |    2 +-
 server/api/smsInteraction/smsInteraction.model.js  |    2 +-
 server/api/smsInteraction/smsInteraction.rpc.js    |    2 +-
 server/api/smsInteraction/smsInteraction.socket.js |    2 +-
 server/api/smsMessage/index.js                     |    2 +-
 server/api/smsMessage/smsMessage.attributes.js     |    2 +-
 server/api/smsMessage/smsMessage.controller.js     |    2 +-
 server/api/smsMessage/smsMessage.events.js         |    2 +-
 server/api/smsMessage/smsMessage.model.js          |    2 +-
 server/api/smsMessage/smsMessage.rpc.js            |    2 +-
 server/api/smsMessage/smsMessage.socket.js         |    2 +-
 server/api/smsQueue/index.js                       |    2 +-
 server/api/smsQueue/smsQueue.attributes.js         |    2 +-
 server/api/smsQueue/smsQueue.controller.js         |    2 +-
 server/api/smsQueue/smsQueue.events.js             |    2 +-
 server/api/smsQueue/smsQueue.model.js              |    2 +-
 server/api/smsQueue/smsQueue.rpc.js                |    2 +-
 server/api/smsQueue/smsQueue.socket.js             |    2 +-
 server/api/smsQueueReport/index.js                 |    2 +-
 .../smsQueueReport/smsQueueReport.attributes.js    |    2 +-
 .../smsQueueReport/smsQueueReport.controller.js    |    2 +-
 server/api/smsQueueReport/smsQueueReport.model.js  |    2 +-
 server/api/smsQueueReport/smsQueueReport.rpc.js    |    2 +-
 server/api/smsTransferReport/index.js              |    2 +-
 .../smsTransferReport.attributes.js                |    2 +-
 .../smsTransferReport.controller.js                |    2 +-
 .../smsTransferReport/smsTransferReport.model.js   |    2 +-
 .../api/smsTransferReport/smsTransferReport.rpc.js |    2 +-
 server/api/sound/index.js                          |    2 +-
 server/api/sound/sound.attributes.js               |    2 +-
 server/api/sound/sound.controller.js               |    2 +-
 server/api/sound/sound.model.js                    |    2 +-
 server/api/sound/sound.rpc.js                      |    2 +-
 server/api/squareMessage/index.js                  |    2 +-
 .../api/squareMessage/squareMessage.attributes.js  |    2 +-
 .../api/squareMessage/squareMessage.controller.js  |    2 +-
 server/api/squareMessage/squareMessage.model.js    |    2 +-
 server/api/squareMessage/squareMessage.rpc.js      |    2 +-
 server/api/squareOdbc/index.js                     |    2 +-
 server/api/squareOdbc/squareOdbc.attributes.js     |    2 +-
 server/api/squareOdbc/squareOdbc.controller.js     |    2 +-
 server/api/squareOdbc/squareOdbc.model.js          |    2 +-
 server/api/squareOdbc/squareOdbc.rpc.js            |    2 +-
 server/api/squareProject/index.js                  |    2 +-
 .../api/squareProject/squareProject.attributes.js  |    2 +-
 .../api/squareProject/squareProject.controller.js  |    2 +-
 server/api/squareProject/squareProject.events.js   |    2 +-
 server/api/squareProject/squareProject.model.js    |    2 +-
 server/api/squareProject/squareProject.rpc.js      |    2 +-
 server/api/squareProject/squareProject.socket.js   |    2 +-
 server/api/squareRecording/index.js                |    2 +-
 .../squareRecording/squareRecording.attributes.js  |    2 +-
 .../squareRecording/squareRecording.controller.js  |    2 +-
 .../api/squareRecording/squareRecording.model.js   |    2 +-
 server/api/squareRecording/squareRecording.rpc.js  |    2 +-
 server/api/squareReport/index.js                   |    2 +-
 server/api/squareReport/squareReport.attributes.js |    2 +-
 server/api/squareReport/squareReport.controller.js |    2 +-
 server/api/squareReport/squareReport.model.js      |    2 +-
 server/api/squareReport/squareReport.rpc.js        |    2 +-
 server/api/squareReportDetail/index.js             |    2 +-
 .../squareReportDetail.attributes.js               |    2 +-
 .../squareReportDetail.controller.js               |    2 +-
 .../squareReportDetail/squareReportDetail.model.js |    2 +-
 .../squareReportDetail/squareReportDetail.rpc.js   |    2 +-
 server/api/system/index.js                         |    2 +-
 server/api/system/system.controller.js             |    2 +-
 server/api/tag/index.js                            |    2 +-
 server/api/tag/tag.attributes.js                   |    2 +-
 server/api/tag/tag.controller.js                   |    2 +-
 server/api/tag/tag.model.js                        |    2 +-
 server/api/tag/tag.rpc.js                          |    2 +-
 server/api/team/index.js                           |    2 +-
 server/api/team/team.attributes.js                 |    2 +-
 server/api/team/team.controller.js                 |    2 +-
 server/api/team/team.events.js                     |    2 +-
 server/api/team/team.model.js                      |    2 +-
 server/api/team/team.rpc.js                        |    2 +-
 server/api/team/team.socket.js                     |    2 +-
 server/api/template/index.js                       |    2 +-
 server/api/template/template.attributes.js         |    2 +-
 server/api/template/template.controller.js         |    2 +-
 server/api/template/template.model.js              |    2 +-
 server/api/template/template.rpc.js                |    2 +-
 server/api/trigger/index.js                        |    2 +-
 server/api/trigger/trigger.attributes.js           |    2 +-
 server/api/trigger/trigger.controller.js           |    2 +-
 server/api/trigger/trigger.model.js                |    2 +-
 server/api/trigger/trigger.rpc.js                  |    2 +-
 server/api/trunk/index.js                          |    2 +-
 server/api/trunk/trunk.attributes.js               |    2 +-
 server/api/trunk/trunk.controller.js               |    2 +-
 server/api/trunk/trunk.model.js                    |    2 +-
 server/api/trunk/trunk.rpc.js                      |    2 +-
 server/api/user/index.js                           |    2 +-
 server/api/user/user.attributes.js                 |    2 +-
 server/api/user/user.controller.js                 |    2 +-
 server/api/user/user.events.js                     |    2 +-
 server/api/user/user.model.js                      |    2 +-
 server/api/user/user.rpc.js                        |    2 +-
 server/api/user/user.socket.js                     |    2 +-
 server/api/userChatQueue/index.js                  |    2 +-
 .../api/userChatQueue/userChatQueue.attributes.js  |    2 +-
 server/api/userChatQueue/userChatQueue.model.js    |    2 +-
 server/api/userChatQueue/userChatQueue.rpc.js      |    2 +-
 server/api/userFaxQueue/index.js                   |    2 +-
 server/api/userFaxQueue/userFaxQueue.attributes.js |    2 +-
 server/api/userFaxQueue/userFaxQueue.model.js      |    2 +-
 server/api/userFaxQueue/userFaxQueue.rpc.js        |    2 +-
 server/api/userMailQueue/index.js                  |    2 +-
 .../api/userMailQueue/userMailQueue.attributes.js  |    2 +-
 server/api/userMailQueue/userMailQueue.model.js    |    2 +-
 server/api/userMailQueue/userMailQueue.rpc.js      |    2 +-
 server/api/userOpenchannelQueue/index.js           |    2 +-
 .../userOpenchannelQueue.attributes.js             |    2 +-
 .../userOpenchannelQueue.model.js                  |    2 +-
 .../userOpenchannelQueue.rpc.js                    |    2 +-
 server/api/userProfile/index.js                    |    2 +-
 server/api/userProfile/userProfile.attributes.js   |    2 +-
 server/api/userProfile/userProfile.controller.js   |    2 +-
 server/api/userProfile/userProfile.events.js       |    2 +-
 server/api/userProfile/userProfile.model.js        |    2 +-
 server/api/userProfile/userProfile.rpc.js          |    2 +-
 server/api/userProfile/userProfile.socket.js       |    2 +-
 server/api/userProfileResource/index.js            |    2 +-
 .../userProfileResource.attributes.js              |    2 +-
 .../userProfileResource.controller.js              |    2 +-
 .../userProfileResource.model.js                   |    2 +-
 .../userProfileResource/userProfileResource.rpc.js |    2 +-
 server/api/userProfileSection/index.js             |    2 +-
 .../userProfileSection.attributes.js               |    2 +-
 .../userProfileSection.controller.js               |    2 +-
 .../userProfileSection/userProfileSection.model.js |    2 +-
 .../userProfileSection/userProfileSection.rpc.js   |    2 +-
 server/api/userSmsQueue/index.js                   |    2 +-
 server/api/userSmsQueue/userSmsQueue.attributes.js |    2 +-
 server/api/userSmsQueue/userSmsQueue.model.js      |    2 +-
 server/api/userSmsQueue/userSmsQueue.rpc.js        |    2 +-
 server/api/userVoiceQueue/index.js                 |    2 +-
 .../userVoiceQueue/userVoiceQueue.attributes.js    |    2 +-
 server/api/userVoiceQueue/userVoiceQueue.model.js  |    2 +-
 server/api/userVoiceQueue/userVoiceQueue.rpc.js    |    2 +-
 server/api/userVoiceQueueRt/index.js               |    2 +-
 .../userVoiceQueueRt.attributes.js                 |    2 +-
 .../userVoiceQueueRt/userVoiceQueueRt.events.js    |    2 +-
 .../api/userVoiceQueueRt/userVoiceQueueRt.model.js |    2 +-
 .../api/userVoiceQueueRt/userVoiceQueueRt.rpc.js   |    2 +-
 .../userVoiceQueueRt/userVoiceQueueRt.socket.js    |    2 +-
 server/api/userWhatsappQueue/index.js              |    2 +-
 .../userWhatsappQueue.attributes.js                |    2 +-
 .../userWhatsappQueue/userWhatsappQueue.model.js   |    2 +-
 .../api/userWhatsappQueue/userWhatsappQueue.rpc.js |    2 +-
 server/api/variable/index.js                       |    2 +-
 server/api/variable/variable.attributes.js         |    2 +-
 server/api/variable/variable.controller.js         |    2 +-
 server/api/variable/variable.model.js              |    2 +-
 server/api/variable/variable.rpc.js                |    2 +-
 server/api/version/index.js                        |    2 +-
 server/api/version/version.controller.js           |    2 +-
 server/api/voiceAgentReport/index.js               |    2 +-
 .../voiceAgentReport.attributes.js                 |    2 +-
 .../voiceAgentReport.controller.js                 |    2 +-
 .../api/voiceAgentReport/voiceAgentReport.model.js |    2 +-
 .../api/voiceAgentReport/voiceAgentReport.rpc.js   |    2 +-
 server/api/voiceCallReport/index.js                |    2 +-
 .../voiceCallReport/voiceCallReport.attributes.js  |    2 +-
 .../voiceCallReport/voiceCallReport.controller.js  |    2 +-
 .../api/voiceCallReport/voiceCallReport.model.js   |    2 +-
 server/api/voiceCallReport/voiceCallReport.rpc.js  |    2 +-
 server/api/voiceChanSpy/index.js                   |    2 +-
 server/api/voiceChanSpy/voiceChanSpy.attributes.js |    2 +-
 server/api/voiceChanSpy/voiceChanSpy.controller.js |    2 +-
 server/api/voiceChanSpy/voiceChanSpy.model.js      |    2 +-
 server/api/voiceChanSpy/voiceChanSpy.rpc.js        |    2 +-
 server/api/voiceContext/index.js                   |    2 +-
 server/api/voiceContext/voiceContext.attributes.js |    2 +-
 server/api/voiceContext/voiceContext.controller.js |    2 +-
 server/api/voiceContext/voiceContext.model.js      |    2 +-
 server/api/voiceContext/voiceContext.rpc.js        |    2 +-
 server/api/voiceDialReport/index.js                |    2 +-
 .../voiceDialReport/voiceDialReport.attributes.js  |    2 +-
 .../voiceDialReport/voiceDialReport.controller.js  |    2 +-
 .../api/voiceDialReport/voiceDialReport.model.js   |    2 +-
 server/api/voiceDialReport/voiceDialReport.rpc.js  |    2 +-
 server/api/voiceExtension/index.js                 |    2 +-
 .../voiceExtension/voiceExtension.attributes.js    |    2 +-
 .../voiceExtension/voiceExtension.controller.js    |    2 +-
 server/api/voiceExtension/voiceExtension.events.js |    2 +-
 server/api/voiceExtension/voiceExtension.model.js  |    2 +-
 server/api/voiceExtension/voiceExtension.rpc.js    |    2 +-
 server/api/voiceExtension/voiceExtension.socket.js |    2 +-
 server/api/voiceMail/index.js                      |    2 +-
 server/api/voiceMail/voiceMail.attributes.js       |    2 +-
 server/api/voiceMail/voiceMail.controller.js       |    2 +-
 server/api/voiceMail/voiceMail.model.js            |    2 +-
 server/api/voiceMail/voiceMail.rpc.js              |    2 +-
 server/api/voiceMailMessage/index.js               |    2 +-
 .../voiceMailMessage.attributes.js                 |    2 +-
 .../voiceMailMessage.controller.js                 |    2 +-
 .../api/voiceMailMessage/voiceMailMessage.model.js |    2 +-
 .../api/voiceMailMessage/voiceMailMessage.rpc.js   |    2 +-
 server/api/voiceMusicOnHold/index.js               |    2 +-
 .../voiceMusicOnHold.attributes.js                 |    2 +-
 .../voiceMusicOnHold.controller.js                 |    2 +-
 .../api/voiceMusicOnHold/voiceMusicOnHold.model.js |    2 +-
 .../api/voiceMusicOnHold/voiceMusicOnHold.rpc.js   |    2 +-
 server/api/voicePrefix/index.js                    |    2 +-
 server/api/voicePrefix/voicePrefix.attributes.js   |    2 +-
 server/api/voicePrefix/voicePrefix.controller.js   |    2 +-
 server/api/voicePrefix/voicePrefix.events.js       |    2 +-
 server/api/voicePrefix/voicePrefix.model.js        |    2 +-
 server/api/voicePrefix/voicePrefix.rpc.js          |    2 +-
 server/api/voicePrefix/voicePrefix.socket.js       |    2 +-
 server/api/voiceQueue/index.js                     |    2 +-
 server/api/voiceQueue/voiceQueue.attributes.js     |    2 +-
 server/api/voiceQueue/voiceQueue.controller.js     |    2 +-
 server/api/voiceQueue/voiceQueue.events.js         |    2 +-
 server/api/voiceQueue/voiceQueue.model.js          |    2 +-
 server/api/voiceQueue/voiceQueue.rpc.js            |    2 +-
 server/api/voiceQueue/voiceQueue.socket.js         |    2 +-
 server/api/voiceQueueReport/index.js               |    2 +-
 .../voiceQueueReport.attributes.js                 |    2 +-
 .../voiceQueueReport.controller.js                 |    2 +-
 .../voiceQueueReport/voiceQueueReport.events.js    |    2 +-
 .../api/voiceQueueReport/voiceQueueReport.model.js |    2 +-
 .../api/voiceQueueReport/voiceQueueReport.rpc.js   |    2 +-
 .../voiceQueueReport/voiceQueueReport.socket.js    |    2 +-
 server/api/voiceQueuesLog/index.js                 |    2 +-
 .../voiceQueuesLog/voiceQueuesLog.attributes.js    |    2 +-
 .../voiceQueuesLog/voiceQueuesLog.controller.js    |    2 +-
 server/api/voiceQueuesLog/voiceQueuesLog.model.js  |    2 +-
 server/api/voiceQueuesLog/voiceQueuesLog.rpc.js    |    2 +-
 server/api/voiceRecording/index.js                 |    2 +-
 .../voiceRecording/voiceRecording.attributes.js    |    2 +-
 .../voiceRecording/voiceRecording.controller.js    |    2 +-
 server/api/voiceRecording/voiceRecording.model.js  |    2 +-
 server/api/voiceRecording/voiceRecording.rpc.js    |    2 +-
 server/api/voiceTransferReport/index.js            |    2 +-
 .../voiceTransferReport.attributes.js              |    2 +-
 .../voiceTransferReport.controller.js              |    2 +-
 .../voiceTransferReport.model.js                   |    2 +-
 .../voiceTransferReport/voiceTransferReport.rpc.js |    2 +-
 server/api/webbar/index.js                         |    2 +-
 server/api/webbar/webbar.controller.js             |    2 +-
 server/api/whatsappAccount/index.js                |    2 +-
 .../whatsappAccount/whatsappAccount.attributes.js  |    2 +-
 .../whatsappAccount/whatsappAccount.controller.js  |    2 +-
 .../api/whatsappAccount/whatsappAccount.events.js  |    2 +-
 .../api/whatsappAccount/whatsappAccount.model.js   |    2 +-
 server/api/whatsappAccount/whatsappAccount.rpc.js  |    2 +-
 .../api/whatsappAccount/whatsappAccount.socket.js  |    2 +-
 server/api/whatsappApplication/index.js            |    2 +-
 .../whatsappApplication.attributes.js              |    2 +-
 .../whatsappApplication.controller.js              |    2 +-
 .../whatsappApplication.model.js                   |    2 +-
 .../whatsappApplication/whatsappApplication.rpc.js |    2 +-
 server/api/whatsappInteraction/index.js            |    2 +-
 .../whatsappInteraction.attributes.js              |    2 +-
 .../whatsappInteraction.controller.js              |    2 +-
 .../whatsappInteraction.events.js                  |    2 +-
 .../whatsappInteraction.model.js                   |    2 +-
 .../whatsappInteraction/whatsappInteraction.rpc.js |    2 +-
 .../whatsappInteraction.socket.js                  |    2 +-
 server/api/whatsappMessage/index.js                |    2 +-
 .../whatsappMessage/whatsappMessage.attributes.js  |    2 +-
 .../whatsappMessage/whatsappMessage.controller.js  |    2 +-
 .../api/whatsappMessage/whatsappMessage.events.js  |    2 +-
 .../api/whatsappMessage/whatsappMessage.model.js   |    2 +-
 server/api/whatsappMessage/whatsappMessage.rpc.js  |    2 +-
 .../api/whatsappMessage/whatsappMessage.socket.js  |    2 +-
 server/api/whatsappQueue/index.js                  |    2 +-
 .../api/whatsappQueue/whatsappQueue.attributes.js  |    2 +-
 .../api/whatsappQueue/whatsappQueue.controller.js  |    2 +-
 server/api/whatsappQueue/whatsappQueue.events.js   |    2 +-
 server/api/whatsappQueue/whatsappQueue.model.js    |    2 +-
 server/api/whatsappQueue/whatsappQueue.rpc.js      |    2 +-
 server/api/whatsappQueue/whatsappQueue.socket.js   |    2 +-
 server/api/whatsappQueueReport/index.js            |    2 +-
 .../whatsappQueueReport.attributes.js              |    2 +-
 .../whatsappQueueReport.controller.js              |    2 +-
 .../whatsappQueueReport.model.js                   |    2 +-
 .../whatsappQueueReport/whatsappQueueReport.rpc.js |    2 +-
 server/api/whatsappTransferReport/index.js         |    2 +-
 .../whatsappTransferReport.attributes.js           |    2 +-
 .../whatsappTransferReport.controller.js           |    2 +-
 .../whatsappTransferReport.model.js                |    2 +-
 .../whatsappTransferReport.rpc.js                  |    2 +-
 server/app.js                                      |    2 +-
 server/components/auth/service.js                  |    2 +-
 server/components/encryptor/index.js               |    2 +-
 server/components/export/csv.js                    |    2 +-
 server/components/export/pdf.js                    |    2 +-
 server/components/export/xlsx.js                   |    2 +-
 server/components/extensions/rewrite.js            |    2 +-
 server/components/import/cm/csv.js                 |    2 +-
 server/components/import/cm/csv2.js                |    2 +-
 server/components/integrations/configuration.js    |    2 +-
 server/components/interaction/service.js           |    2 +-
 server/components/license/service.js               |    2 +-
 server/components/parsers/advancedSearch.js        |    2 +-
 server/components/parsers/qs.js                    |    2 +-
 server/config/environment/development.js           |    6 +-
 server/config/express.js                           |    2 +-
 server/config/license/hardware.js                  |    2 +-
 server/config/license/index.js                     |    2 +-
 server/config/license/util.js                      |    2 +-
 server/config/local.env.js                         |    2 +-
 server/config/logger.js                            |    2 +-
 server/config/pm2/config.js                        |    2 +-
 server/config/pm2/index.js                         |    2 +-
 server/config/schedule/chat.js                     |    2 +-
 server/config/schedule/index.js                    |    2 +-
 server/config/schedule/transcribe.js               |    2 +-
 server/config/seedContact.js                       |    2 +-
 server/config/seedDB/report/default.js             |  104 +-
 server/config/seedDB/report/fields.js              |  257 +
 server/config/seedDB/tree/index.js                 |    4 +
 server/config/seedDB/users.js                      |    4 +-
 server/config/seedUsers.js                         |    2 +-
 server/config/socketio.js                          |    2 +-
 server/config/triggers/index.js                    |    2 +-
 server/config/utils.js                             |    2 +-
 server/errors/index.js                             |    2 +-
 .../1598272067460-Auto Generated Inline Image 1    |  Bin 15665 -> 0 bytes
 .../1598272067646-Auto Generated Inline Image 1    |  Bin 15665 -> 0 bytes
 ...ptura de pantalla 2020-08-14 a las 15.53.25.png |  Bin 443861 -> 0 bytes
 ...ptura de pantalla 2020-08-14 a las 15.57.11.png |  Bin 266109 -> 0 bytes
 ...ptura de pantalla 2020-08-25 a las 13.11.05.png |  Bin 291579 -> 0 bytes
 server/migrations/2.4.13.js                        |    2 +-
 server/migrations/2.4.17.js                        |  155 -
 server/migrations/2.4.6.js                         |    4 +-
 server/migrations/2.5.0.js                         |  247 +-
 server/migrations/2.5.2.js                         |  161 +-
 server/migrations/2.5.3.js                         |  167 +
 server/mysqldb/index.js                            |    2 +-
 server/routes.js                                   |    2 +-
 server/rpc/index.js                                |    2 +-
 server/services/agi/channel.js                     |    2 +-
 server/services/agi/error.js                       |    2 +-
 server/services/agi/graph/index.js                 |    2 +-
 server/services/agi/index.js                       |    2 +-
 server/services/agi/mailRpc/index.js               |    2 +-
 server/services/agi/reply.js                       |    2 +-
 server/services/agi/rpc/index.js                   |    2 +-
 server/services/agi/scripts/aws/index.js           |    2 +-
 server/services/agi/scripts/aws/lex/index.js       |    2 +-
 server/services/agi/scripts/aws/lex/lib/api.js     |    2 +-
 server/services/agi/scripts/aws/polly/index.js     |    2 +-
 server/services/agi/scripts/aws/polly/lib/api.js   |    2 +-
 server/services/agi/scripts/google/asr/index.js    |    2 +-
 server/services/agi/scripts/google/asr/lib/api.js  |    2 +-
 server/services/agi/scripts/google/index.js        |    2 +-
 server/services/agi/scripts/index.js               |    2 +-
 server/services/agi/scripts/sestek/index.js        |    2 +-
 server/services/agi/scripts/sestek/nda/index.js    |    2 +-
 server/services/agi/scripts/tilde/asr/index.js     |    2 +-
 server/services/agi/scripts/tilde/asr/lib/api.js   |    2 +-
 server/services/agi/scripts/tilde/index.js         |    2 +-
 server/services/agi/server.js                      |    2 +-
 server/services/agi/vertices.js                    |    2 +-
 server/services/ami/acw/index.js                   |    2 +-
 server/services/ami/ami.js                         |    2 +-
 server/services/ami/client.js                      |    2 +-
 server/services/ami/dialer/action.js               |    2 +-
 server/services/ami/dialer/agentComplete.js        |    2 +-
 server/services/ami/dialer/final.js                |    2 +-
 server/services/ami/dialer/hangup.js               |    2 +-
 server/services/ami/dialer/history.js              |    2 +-
 server/services/ami/dialer/index.js                |    2 +-
 server/services/ami/dialer/queueCallerAbandon.js   |    2 +-
 server/services/ami/fax/action.js                  |    2 +-
 server/services/ami/fax/index.js                   |    2 +-
 server/services/ami/fax/rpcDb.js                   |    2 +-
 server/services/ami/fax/util/gs.js                 |    2 +-
 server/services/ami/fax/util/util.js               |    2 +-
 server/services/ami/index.js                       |    2 +-
 server/services/ami/model/agent.js                 |    2 +-
 server/services/ami/model/campaign.js              |    2 +-
 server/services/ami/model/channel.js               |    2 +-
 server/services/ami/model/deskAccount.js           |    2 +-
 server/services/ami/model/dynamics365Account.js    |    2 +-
 server/services/ami/model/faxAccount.js            |    2 +-
 server/services/ami/model/freshdeskAccount.js      |    2 +-
 server/services/ami/model/freshsalesAccount.js     |    2 +-
 server/services/ami/model/queueReport.js           |    2 +-
 server/services/ami/model/salesforceAccount.js     |    2 +-
 server/services/ami/model/servicenowAccount.js     |    2 +-
 server/services/ami/model/sugarcrmAccount.js       |    2 +-
 server/services/ami/model/telephone.js             |    2 +-
 server/services/ami/model/template.js              |    2 +-
 server/services/ami/model/trigger.js               |    2 +-
 server/services/ami/model/trunk.js                 |    2 +-
 server/services/ami/model/voiceExtension.js        |    2 +-
 server/services/ami/model/voiceQueue.js            |    2 +-
 server/services/ami/model/vtigerAccount.js         |    2 +-
 server/services/ami/model/zendeskAccount.js        |    2 +-
 server/services/ami/model/zohoAccount.js           |    2 +-
 server/services/ami/preview/action.js              |    2 +-
 server/services/ami/preview/index.js               |    2 +-
 server/services/ami/preview/rpcDb.js               |    2 +-
 server/services/ami/preview/util/util.js           |    2 +-
 server/services/ami/properties.js                  |    2 +-
 server/services/ami/realtime/index.js              |    2 +-
 server/services/ami/report/index.js                |    2 +-
 server/services/ami/report/userReport.js           |    2 +-
 server/services/ami/report/voiceAgentReport.js     |    2 +-
 server/services/ami/report/voiceCallReport.js      |    2 +-
 server/services/ami/report/voiceDialReport.js      |    2 +-
 server/services/ami/report/voiceQueueReport.js     |    2 +-
 server/services/ami/rpc/agentReportPreview.js      |    2 +-
 server/services/ami/rpc/attachment.js              |    2 +-
 server/services/ami/rpc/campaign.js                |    2 +-
 server/services/ami/rpc/cmContact.js               |    2 +-
 server/services/ami/rpc/cmHopper.js                |    2 +-
 server/services/ami/rpc/cmHopperBlack.js           |    2 +-
 server/services/ami/rpc/cmHopperFinal.js           |    2 +-
 server/services/ami/rpc/cmHopperHistory.js         |    2 +-
 server/services/ami/rpc/faxAccount.js              |    2 +-
 server/services/ami/rpc/faxMessage.js              |    2 +-
 server/services/ami/rpc/integrations/desk.js       |    2 +-
 .../services/ami/rpc/integrations/dynamics365.js   |    2 +-
 server/services/ami/rpc/integrations/freshdesk.js  |    2 +-
 server/services/ami/rpc/integrations/freshsales.js |    2 +-
 server/services/ami/rpc/integrations/salesforce.js |    2 +-
 server/services/ami/rpc/integrations/servicenow.js |    2 +-
 server/services/ami/rpc/integrations/sugarcrm.js   |    2 +-
 server/services/ami/rpc/integrations/vtiger.js     |    2 +-
 server/services/ami/rpc/integrations/zendesk.js    |    2 +-
 server/services/ami/rpc/integrations/zoho.js       |    2 +-
 server/services/ami/rpc/memberReport.js            |    2 +-
 server/services/ami/rpc/template.js                |    2 +-
 server/services/ami/rpc/trigger.js                 |    2 +-
 server/services/ami/rpc/trunk.js                   |    2 +-
 server/services/ami/rpc/user.js                    |    2 +-
 server/services/ami/rpc/voiceAgentReport.js        |    2 +-
 server/services/ami/rpc/voiceCallReport.js         |    2 +-
 server/services/ami/rpc/voiceDialReport.js         |    2 +-
 server/services/ami/rpc/voiceExtension.js          |    2 +-
 server/services/ami/rpc/voiceQueue.js              |    2 +-
 server/services/ami/rpc/voiceQueueReport.js        |    2 +-
 server/services/ami/rpc/voiceQueueRt.js            |    2 +-
 server/services/ami/rpc/voiceRecording.js          |    2 +-
 server/services/ami/rpc/voiceTransferReport.js     |    2 +-
 server/services/ami/server/index.js                |    2 +-
 server/services/ami/trigger/cmContact/index.js     |    2 +-
 server/services/ami/trigger/index.js               |    2 +-
 server/services/ami/trigger/integration/desk.js    |    2 +-
 .../ami/trigger/integration/dynamics365.js         |    2 +-
 .../services/ami/trigger/integration/freshdesk.js  |    2 +-
 .../services/ami/trigger/integration/freshsales.js |    2 +-
 server/services/ami/trigger/integration/index.js   |    2 +-
 .../services/ami/trigger/integration/salesforce.js |    2 +-
 .../services/ami/trigger/integration/servicenow.js |    2 +-
 .../services/ami/trigger/integration/sugarcrm.js   |    2 +-
 server/services/ami/trigger/integration/util.js    |    2 +-
 server/services/ami/trigger/integration/vtiger.js  |    2 +-
 server/services/ami/trigger/integration/zendesk.js |    2 +-
 server/services/ami/trigger/integration/zoho.js    |    2 +-
 server/services/ami/trigger/script/index.js        |    2 +-
 server/services/ami/trigger/urlforward/index.js    |    2 +-
 server/services/email/client.js                    |    2 +-
 server/services/email/index.js                     |    2 +-
 server/services/email/lib/email.js                 |    2 +-
 server/services/email/lib/imap.js                  |    2 +-
 server/services/email/lib/smtp.js                  |    2 +-
 server/services/email/lib/utils.js                 |    2 +-
 server/services/email/model/mailAccount.js         |    2 +-
 server/services/email/realtime/index.js            |    2 +-
 server/services/email/rpc/mailAccount.js           |    2 +-
 server/services/email/server/index.js              |    2 +-
 server/services/express/index.js                   |    2 +-
 server/services/routing/client.js                  |    2 +-
 server/services/routing/index.js                   |    2 +-
 server/services/routing/lib/rule-engine.js         |    2 +-
 server/services/routing/mailRpc/index.js           |    2 +-
 server/services/routing/model/agent.js             |    2 +-
 server/services/routing/model/chatQueue.js         |    2 +-
 server/services/routing/model/faxQueue.js          |    2 +-
 server/services/routing/model/interval.js          |    2 +-
 server/services/routing/model/mailQueue.js         |    2 +-
 server/services/routing/model/openchannelQueue.js  |    2 +-
 server/services/routing/model/smsQueue.js          |    2 +-
 server/services/routing/model/whatsappQueue.js     |    2 +-
 server/services/routing/realtime/index.js          |    2 +-
 server/services/routing/rpc/chatInteraction.js     |    2 +-
 server/services/routing/rpc/chatMessage.js         |    2 +-
 server/services/routing/rpc/chatQueue.js           |    2 +-
 server/services/routing/rpc/chatQueueReport.js     |    2 +-
 server/services/routing/rpc/faxInteraction.js      |    2 +-
 server/services/routing/rpc/faxMessage.js          |    2 +-
 server/services/routing/rpc/faxQueue.js            |    2 +-
 server/services/routing/rpc/faxQueueReport.js      |    2 +-
 server/services/routing/rpc/interval.js            |    2 +-
 server/services/routing/rpc/mailInteraction.js     |    2 +-
 server/services/routing/rpc/mailMessage.js         |    2 +-
 server/services/routing/rpc/mailQueue.js           |    2 +-
 server/services/routing/rpc/mailQueueReport.js     |    2 +-
 .../services/routing/rpc/openchannelInteraction.js |    2 +-
 server/services/routing/rpc/openchannelMessage.js  |    2 +-
 server/services/routing/rpc/openchannelQueue.js    |    2 +-
 .../services/routing/rpc/openchannelQueueReport.js |    2 +-
 server/services/routing/rpc/smsInteraction.js      |    2 +-
 server/services/routing/rpc/smsMessage.js          |    2 +-
 server/services/routing/rpc/smsQueue.js            |    2 +-
 server/services/routing/rpc/smsQueueReport.js      |    2 +-
 server/services/routing/rpc/user.js                |    2 +-
 server/services/routing/rpc/whatsappInteraction.js |    2 +-
 server/services/routing/rpc/whatsappMessage.js     |    2 +-
 server/services/routing/rpc/whatsappQueue.js       |    2 +-
 server/services/routing/rpc/whatsappQueueReport.js |    2 +-
 .../services/routing/server/applications/agent.js  |    2 +-
 .../routing/server/applications/amazonlex.js       |    2 +-
 .../routing/server/applications/autoreply.js       |    2 +-
 .../services/routing/server/applications/close.js  |    2 +-
 .../routing/server/applications/dialogflow.js      |    2 +-
 .../services/routing/server/applications/gotoif.js |    2 +-
 .../services/routing/server/applications/gotop.js  |    2 +-
 .../routing/server/applications/message.js         |    2 +-
 .../services/routing/server/applications/noop.js   |    2 +-
 .../services/routing/server/applications/queue.js  |    2 +-
 .../routing/server/applications/strategy/agent.js  |    2 +-
 .../server/applications/strategy/beepall.js        |    2 +-
 .../routing/server/applications/strategy/index.js  |    2 +-
 .../server/applications/strategy/rrmemory.js       |    2 +-
 .../routing/server/applications/strategy/util.js   |    2 +-
 .../services/routing/server/applications/system.js |    2 +-
 server/services/routing/server/applications/tag.js |    2 +-
 .../services/routing/server/applications/utils.js  |    2 +-
 server/services/routing/server/index.js            |    2 +-
 server/services/routing/server/interval.js         |    2 +-
 server/services/xdr/agents.controller.js           |    2 +-
 server/services/xdr/calls.controller.js            |    2 +-
 server/services/xdr/core.controller.js             |    2 +-
 server/services/xdr/dials.controller.js            |    2 +-
 server/services/xdr/index.js                       |    2 +-
 server/services/xdr/members.controller.js          |    2 +-
 server/services/xdr/queues.controller.js           |    2 +-
 server/services/xdr/recordings.controller.js       |    2 +-
 server/services/xdr/transfers.controller.js        |    2 +-
 server/services/xdr/utils.js                       |    2 +-
 1520 files changed, 88722 insertions(+), 8704 deletions(-)
 mode change 100755 => 100644 apidoc/css/style.css
 mode change 100755 => 100644 apidoc/fonts/glyphicons-halflings-regular.eot
 mode change 100755 => 100644 apidoc/fonts/glyphicons-halflings-regular.svg
 mode change 100755 => 100644 apidoc/fonts/glyphicons-halflings-regular.ttf
 mode change 100755 => 100644 apidoc/fonts/glyphicons-halflings-regular.woff
 mode change 100755 => 100644 apidoc/fonts/glyphicons-halflings-regular.woff2
 mode change 100755 => 100644 apidoc/img/favicon.ico
 mode change 100755 => 100644 apidoc/index.html
 mode change 100755 => 100644 apidoc/locales/ca.js
 mode change 100755 => 100644 apidoc/locales/cs.js
 mode change 100755 => 100644 apidoc/locales/de.js
 mode change 100755 => 100644 apidoc/locales/es.js
 mode change 100755 => 100644 apidoc/locales/fr.js
 mode change 100755 => 100644 apidoc/locales/it.js
 mode change 100755 => 100644 apidoc/locales/locale.js
 mode change 100755 => 100644 apidoc/locales/nl.js
 mode change 100755 => 100644 apidoc/locales/pl.js
 mode change 100755 => 100644 apidoc/locales/pt_br.js
 mode change 100755 => 100644 apidoc/locales/ro.js
 mode change 100755 => 100644 apidoc/locales/ru.js
 mode change 100755 => 100644 apidoc/locales/tr.js
 mode change 100755 => 100644 apidoc/locales/vi.js
 mode change 100755 => 100644 apidoc/locales/zh.js
 mode change 100755 => 100644 apidoc/locales/zh_cn.js
 mode change 100755 => 100644 apidoc/main.js
 mode change 100755 => 100644 apidoc/utils/handlebars_helper.js
 create mode 100755 apidoc/utils/send_sample_request_utils.js
 mode change 100755 => 100644 apidoc/vendor/bootstrap.min.css
 mode change 100755 => 100644 apidoc/vendor/bootstrap.min.js
 mode change 100755 => 100644 apidoc/vendor/diff_match_patch.min.js
 mode change 100755 => 100644 apidoc/vendor/handlebars.min.js
 mode change 100755 => 100644 apidoc/vendor/jquery.min.js
 mode change 100755 => 100644 apidoc/vendor/list.min.js
 mode change 100755 => 100644 apidoc/vendor/lodash.custom.min.js
 mode change 100755 => 100644 apidoc/vendor/path-to-regexp/LICENSE
 mode change 100755 => 100644 apidoc/vendor/path-to-regexp/index.js
 mode change 100755 => 100644 apidoc/vendor/polyfill.js
 delete mode 100755 apidoc/vendor/prettify.css
 delete mode 100755 apidoc/vendor/prettify/lang-Splus.js
 delete mode 100755 apidoc/vendor/prettify/lang-aea.js
 delete mode 100755 apidoc/vendor/prettify/lang-agc.js
 delete mode 100755 apidoc/vendor/prettify/lang-apollo.js
 delete mode 100755 apidoc/vendor/prettify/lang-basic.js
 delete mode 100755 apidoc/vendor/prettify/lang-cbm.js
 delete mode 100755 apidoc/vendor/prettify/lang-cl.js
 delete mode 100755 apidoc/vendor/prettify/lang-clj.js
 delete mode 100755 apidoc/vendor/prettify/lang-css.js
 delete mode 100755 apidoc/vendor/prettify/lang-dart.js
 delete mode 100755 apidoc/vendor/prettify/lang-el.js
 delete mode 100755 apidoc/vendor/prettify/lang-erl.js
 delete mode 100755 apidoc/vendor/prettify/lang-erlang.js
 delete mode 100755 apidoc/vendor/prettify/lang-fs.js
 delete mode 100755 apidoc/vendor/prettify/lang-go.js
 delete mode 100755 apidoc/vendor/prettify/lang-hs.js
 delete mode 100755 apidoc/vendor/prettify/lang-lasso.js
 delete mode 100755 apidoc/vendor/prettify/lang-lassoscript.js
 delete mode 100755 apidoc/vendor/prettify/lang-latex.js
 delete mode 100755 apidoc/vendor/prettify/lang-lgt.js
 delete mode 100755 apidoc/vendor/prettify/lang-lisp.js
 delete mode 100755 apidoc/vendor/prettify/lang-ll.js
 delete mode 100755 apidoc/vendor/prettify/lang-llvm.js
 delete mode 100755 apidoc/vendor/prettify/lang-logtalk.js
 delete mode 100755 apidoc/vendor/prettify/lang-ls.js
 delete mode 100755 apidoc/vendor/prettify/lang-lsp.js
 delete mode 100755 apidoc/vendor/prettify/lang-lua.js
 delete mode 100755 apidoc/vendor/prettify/lang-matlab.js
 delete mode 100755 apidoc/vendor/prettify/lang-ml.js
 delete mode 100755 apidoc/vendor/prettify/lang-mumps.js
 delete mode 100755 apidoc/vendor/prettify/lang-n.js
 delete mode 100755 apidoc/vendor/prettify/lang-nemerle.js
 delete mode 100755 apidoc/vendor/prettify/lang-pascal.js
 delete mode 100755 apidoc/vendor/prettify/lang-proto.js
 delete mode 100755 apidoc/vendor/prettify/lang-r.js
 delete mode 100755 apidoc/vendor/prettify/lang-rd.js
 delete mode 100755 apidoc/vendor/prettify/lang-rkt.js
 delete mode 100755 apidoc/vendor/prettify/lang-rust.js
 delete mode 100755 apidoc/vendor/prettify/lang-s.js
 delete mode 100755 apidoc/vendor/prettify/lang-scala.js
 delete mode 100755 apidoc/vendor/prettify/lang-scm.js
 delete mode 100755 apidoc/vendor/prettify/lang-sql.js
 delete mode 100755 apidoc/vendor/prettify/lang-ss.js
 delete mode 100755 apidoc/vendor/prettify/lang-swift.js
 delete mode 100755 apidoc/vendor/prettify/lang-tcl.js
 delete mode 100755 apidoc/vendor/prettify/lang-tex.js
 delete mode 100755 apidoc/vendor/prettify/lang-vb.js
 delete mode 100755 apidoc/vendor/prettify/lang-vbs.js
 delete mode 100755 apidoc/vendor/prettify/lang-vhd.js
 delete mode 100755 apidoc/vendor/prettify/lang-vhdl.js
 delete mode 100755 apidoc/vendor/prettify/lang-wiki.js
 delete mode 100755 apidoc/vendor/prettify/lang-xq.js
 delete mode 100755 apidoc/vendor/prettify/lang-xquery.js
 delete mode 100755 apidoc/vendor/prettify/lang-yaml.js
 delete mode 100755 apidoc/vendor/prettify/lang-yml.js
 delete mode 100755 apidoc/vendor/prettify/prettify.css
 delete mode 100755 apidoc/vendor/prettify/prettify.js
 delete mode 100755 apidoc/vendor/prettify/run_prettify.js
 create mode 100644 apidoc/vendor/prism.css
 create mode 100644 apidoc/vendor/prism.js
 mode change 100755 => 100644 apidoc/vendor/require.min.js
 mode change 100755 => 100644 apidoc/vendor/semver.min.js
 mode change 100755 => 100644 apidoc/vendor/webfontloader.js
 delete mode 100644 public/scripts/app.74f89fce.js
 create mode 100644 public/scripts/app.87a823db.js
 delete mode 100644 public/scripts/vendor.17cdb947.js
 create mode 100644 public/scripts/vendor.4b108999.js
 delete mode 100644 public/styles/app.9ec358c8.css
 create mode 100644 public/styles/app.daa56aff.css
 delete mode 100644 server/files/attachments/1598272067460-Auto Generated Inline Image 1
 delete mode 100644 server/files/attachments/1598272067646-Auto Generated Inline Image 1
 delete mode 100644 server/files/attachments/1598272068853-Captura de pantalla 2020-08-14 a las 15.53.25.png
 delete mode 100644 server/files/attachments/1598272068853-Captura de pantalla 2020-08-14 a las 15.57.11.png
 delete mode 100644 server/files/attachments/1598360289779-Captura de pantalla 2020-08-25 a las 13.11.05.png
 create mode 100644 server/migrations/2.5.3.js

diff --git a/apidoc/api_data.js b/apidoc/api_data.js
index df13155..bfa991a 100644
--- a/apidoc/api_data.js
+++ b/apidoc/api_data.js
@@ -1 +1,38663 @@
-define({ "api": [
  {
    "type": "delete",
    "url": "/api/actions/{id}",
    "title": "Deletes a Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/actions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteActions",
    "group": "Actions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/action/index.js",
    "groupTitle": "Actions"
  },
  {
    "type": "put",
    "url": "/api/actions/{id}",
    "title": "Update an existing Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/actions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateActions",
    "group": "Actions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/action/index.js",
    "groupTitle": "Actions"
  },
  {
    "type": "post",
    "url": "/api/analytics/custom_reports",
    "title": "Creates a new Analytic Custom Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Custom_Reports",
    "group": "Analytic_Custom_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "parent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "table",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "conditions",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "joins",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/custom_reports/{id}",
    "title": "Deletes a Analytic Custom Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Custom_Reports",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/custom_reports",
    "title": "Gets a list of Analytic Custom Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Custom_Reports",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/custom_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/custom_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/custom_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/custom_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/custom_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/custom_reports/{id}",
    "title": "Gets a single Analytic Custom Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Custom_Reports",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/custom_reports/{id}/preview",
    "title": "Report Preview",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/preview -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "preview",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/custom_reports/{id}/query",
    "title": "Report Query SQL",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/query -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "query",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/custom_reports/{id}/run",
    "title": "Report Run",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/run -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "run",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "put",
    "url": "/api/analytics/custom_reports/{id}",
    "title": "Update an existing Analytic Custom Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Custom_Reports",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/default_reports",
    "title": "Creates a new Analytic Default Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Default_Reports",
    "group": "Analytic_Default_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "parent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "table",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "conditions",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "joins",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/default_reports/{id}",
    "title": "Deletes a Analytic Default Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Default_Reports",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/default_reports",
    "title": "Gets a list of Analytic Default Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Default_Reports",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/default_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/default_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/default_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/default_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/default_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/default_reports/{id}",
    "title": "Gets a single Analytic Default Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Default_Reports",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/default_reports/{id}/preview",
    "title": "Report Preview",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id}/preview -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "preview",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/default_reports/{id}/query",
    "title": "Report Query SQL",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id}/query -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "query",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/default_reports/{id}/run",
    "title": "Report Run",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id}/run -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "run",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "put",
    "url": "/api/analytics/default_reports/{id}",
    "title": "Update an existing Analytic Default Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Default_Reports",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/extracted_reports",
    "title": "Creates a new Analytic Extracted Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Extacted_Reports",
    "group": "Analytic_Extracted_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "basename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"csv\"",
              "\"pdf\"",
              "\"xlsx\""
            ],
            "optional": false,
            "field": "output",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "savename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "startDate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "endDate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "status",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"manual\"",
              "\"scheduled\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "reportId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reportType",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/extracted_reports/{id}",
    "title": "Deletes a Analytic Extracted Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Extacted_Reports",
    "group": "Analytic_Extracted_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/extracted_reports",
    "title": "Gets a list of Analytic Extacted Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Extacted_Reports",
    "group": "Analytic_Extracted_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/extracted_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/extracted_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/extracted_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/extracted_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/extracted_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/extracted_reports/{id}",
    "title": "Gets a single Analytic Extracted Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Extacted_Reports",
    "group": "Analytic_Extracted_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/extracted_reports/{id}/download",
    "title": "Download Extracted Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Analytic_Extracted_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "put",
    "url": "/api/analytics/extracted_reports/{id}",
    "title": "Update an existing Analytic Extracted Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Extacted_Reports",
    "group": "Analytic_Extracted_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/field_reports/create_many",
    "title": "Creates many Analytic Field Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "BulkCreateAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "field",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "alias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "function",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "format",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "groupBy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "orderBy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "custom",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/field_reports/destroy_many?ids={ids}",
    "title": "Deletes many Analytic Field Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/destroy_many?ids=1&ids=2&ids=3 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "BulkDeleteAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/field_reports",
    "title": "Creates a new Analytic Field Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "field",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "alias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "function",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "format",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "groupBy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "orderBy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "custom",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/field_reports/{id}",
    "title": "Deletes a Analytic Field Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/field_reports",
    "title": "Gets a list of Analytic Field Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/field_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/field_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/field_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/field_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/field_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/field_reports/{id}",
    "title": "Gets a single Analytic Field Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/field_reports/{id}/create_many",
    "title": "Rewrite fields set",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/{id}/create_many -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addFields",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "put",
    "url": "/api/analytics/field_reports/{id}",
    "title": "Update an existing Analytic Field Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/metrics",
    "title": "Creates a new Analytic Metrics",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/metrics -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Metric",
    "group": "Analytic_Metrics",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "table",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "metric",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticMetric/index.js",
    "groupTitle": "Analytic_Metrics"
  },
  {
    "type": "delete",
    "url": "/api/analytics/metrics/{id}",
    "title": "Deletes a Analytic Metrics",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/metrics/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Metric",
    "group": "Analytic_Metrics",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticMetric/index.js",
    "groupTitle": "Analytic_Metrics"
  },
  {
    "type": "get",
    "url": "/api/analytics/metrics",
    "title": "Gets a list of Analytic Metric",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/metrics -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Metric",
    "group": "Analytic_Metrics",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/metrics?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/metrics?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/metrics?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/metrics?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/metrics?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticMetric/index.js",
    "groupTitle": "Analytic_Metrics"
  },
  {
    "type": "get",
    "url": "/api/analytics/metrics/{id}",
    "title": "Gets a single Analytic Metrics",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/metrics/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Metric",
    "group": "Analytic_Metrics",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticMetric/index.js",
    "groupTitle": "Analytic_Metrics"
  },
  {
    "type": "put",
    "url": "/api/analytics/metrics/{id}",
    "title": "Update an existing Analytic Metrics",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/metrics/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Metric",
    "group": "Analytic_Metrics",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticMetric/index.js",
    "groupTitle": "Analytic_Metrics"
  },
  {
    "type": "post",
    "url": "/api/analytics/tree_reports",
    "title": "Creates a new Analytic Tree Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/tree_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Tree_Reports",
    "group": "Analytic_Tree_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "tree",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticTreeReport/index.js",
    "groupTitle": "Analytic_Tree_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/tree_reports/{id}",
    "title": "Deletes a Analytic Tree Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Tree_Reports",
    "group": "Analytic_Tree_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticTreeReport/index.js",
    "groupTitle": "Analytic_Tree_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/tree_reports",
    "title": "Gets a list of Analytic Tree Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/tree_reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Tree_Reports",
    "group": "Analytic_Tree_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/tree_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/tree_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/tree_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/tree_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/tree_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticTreeReport/index.js",
    "groupTitle": "Analytic_Tree_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/tree_reports/{id}",
    "title": "Gets a single Analytic Tree Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Tree_Reports",
    "group": "Analytic_Tree_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticTreeReport/index.js",
    "groupTitle": "Analytic_Tree_Reports"
  },
  {
    "type": "put",
    "url": "/api/analytics/tree_reports/{id}",
    "title": "Update an existing Analytic Tree Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Tree_Reports",
    "group": "Analytic_Tree_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticTreeReport/index.js",
    "groupTitle": "Analytic_Tree_Reports"
  },
  {
    "type": "post",
    "url": "/api/attachments/clone",
    "title": "Clone an existing Attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneAttachments",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "delete",
    "url": "/api/attachments/{id}",
    "title": "Deletes a Attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAttachments",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "get",
    "url": "/api/attachments",
    "title": "Gets a list of Attachments",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAttachments",
    "group": "Attachments",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/attachments?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/attachments?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/attachments?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/attachments?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/attachments?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "get",
    "url": "/api/attachments/{id}",
    "title": "Gets a single Attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAttachments",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "post",
    "url": "/api/attachments",
    "title": "Add attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "create",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "get",
    "url": "/api/attachments/:id/download",
    "title": "Download attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments/:id/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/{id}/attachment_download",
    "title": "Download attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/attachment_download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "show",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "put",
    "url": "/api/attachments/{id}",
    "title": "Update an existing Attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAttachments",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "post",
    "url": "/api/auth/local/forgot",
    "title": "Creates a new password reset token",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/auth/local/forgot -d '{\"email\": \"[email-masked]\"}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Local_Forgot_Password",
    "group": "Authentication",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "email",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/authLocal/index.js",
    "groupTitle": "Authentication"
  },
  {
    "type": "post",
    "url": "/api/auth/local/reset/:token",
    "title": "Reset user password",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/auth/local/reset/94b422c1fkdjhg766a198da6997yu6gcc963641d -d '{\"password\": \"My_newP@ssw0rd\"}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Local_Reset_Password",
    "group": "Authentication",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "password",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/authLocal/index.js",
    "groupTitle": "Authentication"
  },
  {
    "type": "post",
    "url": "/api/auth/local",
    "title": "Creates a new User token",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Local_login",
    "group": "Authentication",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "password",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/authLocal/index.js",
    "groupTitle": "Authentication"
  },
  {
    "type": "post",
    "url": "/api/auth/google",
    "title": "Creates a new User token",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Local_login",
    "group": "Authentication",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "password",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/authGoogle/index.js",
    "groupTitle": "Authentication"
  },
  {
    "type": "post",
    "url": "/api/automations",
    "title": "Creates a new Automation",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAutomations",
    "group": "Automations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "status",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "delete",
    "url": "/api/automations/{id}",
    "title": "Deletes a Automation",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAutomations",
    "group": "Automations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "get",
    "url": "/api/automations",
    "title": "Gets a list of Automations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAutomations",
    "group": "Automations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/automations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/automations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/automations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/automations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/automations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "get",
    "url": "/api/automations/{id}",
    "title": "Gets a single Automation",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAutomations",
    "group": "Automations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "post",
    "url": "/api/automations/{id}/actions",
    "title": "Creates new actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id}/actions -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addActions",
    "group": "Automations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "action",
            "description": "<p>Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser, bot, script</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data1",
            "description": "<p>contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data2",
            "description": "<p>integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data3",
            "description": "<p>motionbar[NULL,NULL,WinAppArguments]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data4",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data5",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data6",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "data7",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "post",
    "url": "/api/automations/{id}/conditions",
    "title": "Creates new conditions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id}/conditions -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConditions",
    "group": "Automations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "field",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "operator",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "value",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "get",
    "url": "/api/automations/{id}/actions",
    "title": "Gets Automation Actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id}/actions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getActions",
    "group": "Automations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "get",
    "url": "/api/automations/{id}/conditions",
    "title": "Gets Automation Conditions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id}/conditions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConditions",
    "group": "Automations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "put",
    "url": "/api/automations/{id}",
    "title": "Update an existing Automation",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAutomations",
    "group": "Automations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "post",
    "url": "/api/canned_answers",
    "title": "Create a new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/canned_answers -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Canned_Answers",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cannedAnswer/index.js",
    "groupTitle": "Canned_Answers"
  },
  {
    "type": "delete",
    "url": "/api/canned_answers/{id}",
    "title": "Deletes a Canned Answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/canned_answers/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteCanned_Answers",
    "group": "Canned_Answers",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cannedAnswer/index.js",
    "groupTitle": "Canned_Answers"
  },
  {
    "type": "get",
    "url": "/api/canned_answers",
    "title": "Gets a list of Canned Answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/canned_answers -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCanned_Answers",
    "group": "Canned_Answers",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/canned_answers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/canned_answers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/canned_answers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/canned_answers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/canned_answers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cannedAnswer/index.js",
    "groupTitle": "Canned_Answers"
  },
  {
    "type": "get",
    "url": "/api/canned_answers/{id}",
    "title": "Gets a single Canned Answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/canned_answers/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCanned_Answers",
    "group": "Canned_Answers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cannedAnswer/index.js",
    "groupTitle": "Canned_Answers"
  },
  {
    "type": "put",
    "url": "/api/canned_answers/{id}",
    "title": "Update an existing Canned Answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/canned_answers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateCanned_Answers",
    "group": "Canned_Answers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cannedAnswer/index.js",
    "groupTitle": "Canned_Answers"
  },
  {
    "type": "get",
    "url": "/chat/internal/users",
    "title": "Gets Users Last Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/chat/internal/users -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getLastUsersMessages",
    "group": "ChatInternalMessage",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "ChatInternalMessage"
  },
  {
    "type": "delete",
    "url": "/api/chat/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Chat_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatApplication/index.js",
    "groupTitle": "Chat_Applications"
  },
  {
    "type": "get",
    "url": "/api/chat/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Chat_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatApplication/index.js",
    "groupTitle": "Chat_Applications"
  },
  {
    "type": "put",
    "url": "/api/chat/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Chat_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatApplication/index.js",
    "groupTitle": "Chat_Applications"
  },
  {
    "type": "post",
    "url": "/api/chat/groups",
    "title": "Creates a new Group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateGroups",
    "group": "Chat_Groups",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "write",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "delete",
    "url": "/api/chat/groups/{id}",
    "title": "Deletes a Group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteGroups",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups/describe",
    "title": "Gets table info about Groups",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeGroups",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups",
    "title": "Gets a list of Groups",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetGroups",
    "group": "Chat_Groups",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/groups?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/groups?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/groups?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/groups?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/groups?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "delete",
    "url": "/api/chat/groups/{id}/members",
    "title": "Removes members from a group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/members?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveMembers",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups/{id}",
    "title": "Gets a single Group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowGroups",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "post",
    "url": "/api/chat/groups/{id}/members",
    "title": "Add members to chat group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/members -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMembers",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "post",
    "url": "/api/chat/groups/{id}/messages",
    "title": "Creates a new group message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/messages -d '{\"body\": \"Hi operator!\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups/{id}/members",
    "title": "Gets Members",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/members -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMembers",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups/{id}/messages",
    "title": "Gets Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups/{id}/unread",
    "title": "Get unread chat group messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/unread -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getUread",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "put",
    "url": "/api/chat/groups/{id}",
    "title": "Update an existing Group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateGroups",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "post",
    "url": "/api/chat/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "post",
    "url": "/api/chat/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Chat_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ratingValue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"star\"",
              "\"thumb\""
            ],
            "optional": true,
            "field": "ratingType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "ratingMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "pathTranscript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailTranscript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "browserName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "browserVersion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "osName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "osVersion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceModel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceVendor",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "referer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customerIp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "formData",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closeReason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customerPort",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/chat/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Chat_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/chat/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "put",
    "url": "/api/chat/interactions/{id}/abandon",
    "title": "Abandon interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/abandon -d '{\"channel\": \"chat\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "abandon",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to set as abandon an interaction and stop the routing.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "post",
    "url": "/api/chat/interactions/{id}/messages",
    "title": "Creates new messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Chat_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "put",
    "url": "/api/chat/interactions/{id}/close",
    "title": "Close Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "post",
    "url": "/api/chat/interactions/{id}/attachment_upload",
    "title": "Add attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/attachment_upload -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "attachmentUpload",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "put",
    "url": "/api/chat/interactions/{id}/custom_update",
    "title": "Update interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/custom_update -d '{\"channel\": \"chat\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "customUpdate",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to update an interaction.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/{id}/download",
    "title": "Gets interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/{id}/my_messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/my_messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMyMessages",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "put",
    "url": "/api/chat/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "post",
    "url": "/api/chat/internal/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Chat_Internal_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ChatInternalMessageId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "delete",
    "url": "/api/chat/internal/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Chat_Internal_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/internal/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Chat_Internal_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/internal/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Chat_Internal_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/internal/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/internal/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/internal/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/internal/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/internal/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/internal/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Chat_Internal_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "put",
    "url": "/api/chat/internal/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Chat_Internal_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "post",
    "url": "/api/chat/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Chat_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "delete",
    "url": "/api/chat/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Chat_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Chat_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Chat_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Chat_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "put",
    "url": "/api/chat/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Chat_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "post",
    "url": "/api/chat/offline_messages",
    "title": "Creates a new OfflineMessage",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateOfflineMessages",
    "group": "Chat_Offline_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "delete",
    "url": "/api/chat/offline_messages/{id}",
    "title": "Deletes a OfflineMessage",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteOfflineMessages",
    "group": "Chat_Offline_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/offline_messages/describe",
    "title": "Gets table info about OfflineMessages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeOfflineMessages",
    "group": "Chat_Offline_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/offline_messages",
    "title": "Gets a list of OfflineMessages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetOfflineMessages",
    "group": "Chat_Offline_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/offline_messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/offline_messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/offline_messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/offline_messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/offline_messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/offline_messages/{id}",
    "title": "Gets a single OfflineMessage",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowOfflineMessages",
    "group": "Chat_Offline_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "put",
    "url": "/api/chat/offline_messages/{id}",
    "title": "Update an existing OfflineMessage",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateOfflineMessages",
    "group": "Chat_Offline_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "post",
    "url": "/api/chat/proactive_actions",
    "title": "Creates a new Proactive Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/proactive_actions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateProactive_Actions",
    "group": "Chat_Proactive_Actions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"mouseOver\"",
              "\"timeout\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "selector",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatProactiveAction/index.js",
    "groupTitle": "Chat_Proactive_Actions"
  },
  {
    "type": "delete",
    "url": "/api/chat/proactive_actions/{id}",
    "title": "Deletes a Proactive Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteProactive_Actions",
    "group": "Chat_Proactive_Actions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatProactiveAction/index.js",
    "groupTitle": "Chat_Proactive_Actions"
  },
  {
    "type": "get",
    "url": "/api/chat/proactive_actions/{id}",
    "title": "Gets a single Proactive Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowProactive_Actions",
    "group": "Chat_Proactive_Actions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatProactiveAction/index.js",
    "groupTitle": "Chat_Proactive_Actions"
  },
  {
    "type": "put",
    "url": "/api/chat/proactive_actions/{id}",
    "title": "Update an existing Proactive Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateProactive_Actions",
    "group": "Chat_Proactive_Actions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatProactiveAction/index.js",
    "groupTitle": "Chat_Proactive_Actions"
  },
  {
    "type": "post",
    "url": "/api/chat/reports/queue",
    "title": "Creates a new Chat Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/chat/reports/queue/{id}",
    "title": "Deletes a Chat Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/queue/describe",
    "title": "Gets table info about Chat Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/queue",
    "title": "Gets a list of Chat Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/queue/{id}",
    "title": "Gets a single Chat Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/chat/reports/queue/{id}",
    "title": "Update an existing Chat Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/chat/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "post",
    "url": "/api/chat/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "post",
    "url": "/api/chat/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Chat_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": true,
            "field": "strategy",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "delete",
    "url": "/api/chat/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Chat_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "delete",
    "url": "/api/chat/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "put",
    "url": "/api/chat/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "post",
    "url": "/api/chat/reports/transfer",
    "title": "Creates a new Chat Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/chat/reports/transfer/{id}",
    "title": "Deletes a Chat Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/transfer/describe",
    "title": "Gets table info about Chat Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/transfer",
    "title": "Gets a list of Chat Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/transfer/{id}",
    "title": "Gets a single Chat Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/chat/reports/transfer/{id}",
    "title": "Update an existing Chat Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/users",
    "title": "Add agents to a website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites",
    "title": "Creates a new Website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateWebsites",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "address",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mapKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mapKeyOffline",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentAlias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customerAlias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "color",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "color_button",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "textColor",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "fontSize",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remote",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "animation",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rounded\"",
              "\"squared\""
            ],
            "optional": true,
            "field": "header_shape",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "header_online",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "start_chat_button",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "offline_chat_button",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "header_offline",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "download_transcript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "whiteLabel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "defaultWhiteLabel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "sitepic",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closingQuestion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "formSubmitSuccessMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "formSubmitFailureMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "noteTitle",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "placeholderMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closingMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closingMessageButton",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "skipMessageButton",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "conditionAgreement",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableRating",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableFeedback",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableSendButton",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "feedbackTitle",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"star\"",
              "\"thumb\""
            ],
            "optional": true,
            "field": "ratingType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ratingStarsNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "onlineForm",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "offlineForm",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "autoclose",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableCustomerWriting",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "forwardTranscript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "forwardTranscriptMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "forwardOffline",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "forwardOfflineAddress",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "waitingTitle",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "waitingMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "offlineMessageSubject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "offlineMessageBody",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableUnmanagedNote",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "unmanagedMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "skipUnmanaged",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sendUnmanaged",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableCustomerAttachment",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableCustomerCheckmarks",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "agentAvatar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "showAgentAvatar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "timezone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notificationTemplate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationSound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationShake",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "hideWhenOffline",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentIdentifier",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "waitForTheAssignedAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "alignment",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "verticalAlignment",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messagesAlignment",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultTitle",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "customerAvatar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "showCustomerAvatar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "messageFontSize",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "backgroundColor",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "queueTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "queueTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "agentTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "systemAlias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "systemAvatar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "delete",
    "url": "/api/chat/websites/{id}",
    "title": "Deletes a Website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteWebsites",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/describe",
    "title": "Gets table info about Websites",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeWebsites",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/users",
    "title": "Gets agents from website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites",
    "title": "Gets a list of Websites",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetWebsites",
    "group": "Chat_Websites",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/websites?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/websites?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/websites?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/websites?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/websites?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "delete",
    "url": "/api/chat/websites/{id}/users",
    "title": "Removes agents from a website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "delete",
    "url": "/api/chat/websites/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "delete",
    "url": "/api/chat/websites/{id}/dispositions",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}",
    "title": "Gets a single Website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowWebsites",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "put",
    "url": "/api/chat/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/avatar",
    "title": "Add avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/customer_avatar",
    "title": "Add customer avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/customer_avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addCustomerAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/accounts/{id}/interactions",
    "title": "Creates new interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/interactions -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addInteraction",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ratingValue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"star\"",
              "\"thumb\""
            ],
            "optional": true,
            "field": "ratingType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "ratingMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "pathTranscript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailTranscript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "browserName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "browserVersion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "osName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "osVersion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceModel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceVendor",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "referer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customerIp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "formData",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closeReason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customerPort",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/logo",
    "title": "Add logo",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/logo -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addLogo",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/proactive_actions",
    "title": "Creates new Proactive Actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/proactive_actions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addProactiveActions",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"mouseOver\"",
              "\"timeout\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "selector",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/system_avatar",
    "title": "Add system avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/system_avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addSystemAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/applications",
    "title": "Gets Website Applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/avatar",
    "title": "Get avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/avatar -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/customer_avatar",
    "title": "Get Customer Avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/customer_avatar -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getCustomerAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/fields",
    "title": "Gets Website Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/interactions",
    "title": "Gets Website Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getInteraction",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/logo",
    "title": "Get logo",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/logo -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getLogo",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/offline_messages",
    "title": "Gets Website Offline Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/offline_messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getOfflineMessages",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/proactive_actions",
    "title": "Gets Website Proactive Actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/proactive_actions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getProactiveActions",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/snippet",
    "title": "Gets Website Snippet",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/snippet -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSnippet",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/system_avatar",
    "title": "Get System Avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/system_avatar -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSystemAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/notify",
    "title": "Notify new message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "notify",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new chat message to be sent to the system.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/offline",
    "title": "Offline message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/offline -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "offline",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "put",
    "url": "/api/chat/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "put",
    "url": "/api/chat/websites/{id}",
    "title": "Update an existing Website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateWebsites",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/cloudProviders",
    "title": "Creates a new CloudProvider",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cloudProviders -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateCloudProviders",
    "group": "CloudProviders",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"AmazonAWS\"",
              "\"Google\""
            ],
            "optional": false,
            "field": "service",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data1",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data2",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cloudProvider/index.js",
    "groupTitle": "CloudProviders"
  },
  {
    "type": "delete",
    "url": "/api/cloudProviders/{id}",
    "title": "Deletes a CloudProvider",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cloudProviders/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteCloudProviders",
    "group": "CloudProviders",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cloudProvider/index.js",
    "groupTitle": "CloudProviders"
  },
  {
    "type": "get",
    "url": "/api/cloudProviders",
    "title": "Gets a list of CloudProviders",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cloudProviders -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCloudProviders",
    "group": "CloudProviders",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cloudProviders?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cloudProviders?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cloudProviders?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cloudProviders?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cloudProviders?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cloudProvider/index.js",
    "groupTitle": "CloudProviders"
  },
  {
    "type": "get",
    "url": "/api/cloudProviders/{id}",
    "title": "Gets a single CloudProvider",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cloudProviders/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCloudProviders",
    "group": "CloudProviders",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cloudProvider/index.js",
    "groupTitle": "CloudProviders"
  },
  {
    "type": "put",
    "url": "/api/cloudProviders/{id}",
    "title": "Update an existing CloudProvider",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cloudProviders/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateCloudProviders",
    "group": "CloudProviders",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cloudProvider/index.js",
    "groupTitle": "CloudProviders"
  },
  {
    "type": "post",
    "url": "/api/cm/companies",
    "title": "Creates a new Company",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateCompanies",
    "group": "Cm_Companies",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "vat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "companyId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "website",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "street",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "postalCode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "city",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "country",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "emailDomain",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sStreet",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sPostalCode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sCity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sCountry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "delete",
    "url": "/api/cm/companies/{id}",
    "title": "Deletes a Company",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteCompanies",
    "group": "Cm_Companies",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "get",
    "url": "/api/cm/companies/describe",
    "title": "Gets table info about Companies",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeCompanies",
    "group": "Cm_Companies",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "get",
    "url": "/api/cm/companies",
    "title": "Gets a list of Companies",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCompanies",
    "group": "Cm_Companies",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/companies?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/companies?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/companies?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/companies?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/companies?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "get",
    "url": "/api/cm/companies/{id}",
    "title": "Gets a single Company",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCompanies",
    "group": "Cm_Companies",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "post",
    "url": "/api/cm/companies/{id}/contacts",
    "title": "Creates new contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies/{id}/contacts -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addContacts",
    "group": "Cm_Companies",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "firstName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "street",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "postalCode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "city",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "country",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dateOfBirth",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mobile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "url",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "facebook",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fb_data",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "twitter",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "skype",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "teams",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "viber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "line",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "wechat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "telegram",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "UserId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "scheduledat",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "get",
    "url": "/api/cm/companies/{id}/contacts",
    "title": "Gets List Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/companies/{id}/contacts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getContacts",
    "group": "Cm_Companies",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "put",
    "url": "/api/cm/companies/{id}",
    "title": "Update an existing Company",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateCompanies",
    "group": "Cm_Companies",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "delete",
    "url": "/api/cm/contacts/{id}",
    "title": "Deletes a Contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteContacts",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/describe",
    "title": "Gets table info about Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeContacts",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts",
    "title": "Gets a list of Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetContacts",
    "group": "Cm_Contacts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/contacts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/contacts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/contacts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/contacts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/contacts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}/finals",
    "title": "Gets contact hopper finals",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_finals -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperFinals",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}/hopper_histories",
    "title": "Gets contact hopper histories",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_histories -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperHistories",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}/hoppers",
    "title": "Gets contact hoppers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/hoppers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHoppers",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/create_many",
    "title": "Create Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/create_many -d '[{\"firstName\": \"John\", \"lastName\": \"doe\", \"...\": \"...\"}]' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "bulkCreate",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts",
    "title": "Create Contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts -d '{\"firstName\": \"John\", \"lastName\": \"doe\", \"...\": \"...\"}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "create",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}/jscripty_sessions",
    "title": "Gets contact hopper blacks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_black -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getJscriptySessions",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}/tags",
    "title": "Gets configurations tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/tags -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getTags",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/merge",
    "title": "Merge Contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/merge -d '{\"from\": 1, \"to\": 2}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "merge",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/{id}/tags",
    "title": "Sets new tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/tags -d '{\"ids\": [1,12]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "setTags",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}",
    "title": "Gets a single Contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id} -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "show",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "put",
    "url": "/api/cm/contacts/{id}",
    "title": "Update a single Contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id} -d '{\"firstName\": \"John\", \"lastName\": \"Doe\"}' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "delete",
    "url": "/api/cm/custom_fields/{id}",
    "title": "Deletes a Custom Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/custom_fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteCustom_Fields",
    "group": "Cm_Custom_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCustomField/index.js",
    "groupTitle": "Cm_Custom_Fields"
  },
  {
    "type": "get",
    "url": "/api/cm/custom_fields",
    "title": "Gets a list of Custom Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/custom_fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCustom_Fields",
    "group": "Cm_Custom_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/custom_fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/custom_fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/custom_fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/custom_fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/custom_fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmCustomField/index.js",
    "groupTitle": "Cm_Custom_Fields"
  },
  {
    "type": "get",
    "url": "/api/cm/custom_fields/{id}",
    "title": "Gets a single Custom Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/custom_fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCustom_Fields",
    "group": "Cm_Custom_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCustomField/index.js",
    "groupTitle": "Cm_Custom_Fields"
  },
  {
    "type": "put",
    "url": "/api/cm/custom_fields/{id}",
    "title": "Update an existing Custom Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/custom_fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateCustom_Fields",
    "group": "Cm_Custom_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCustomField/index.js",
    "groupTitle": "Cm_Custom_Fields"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper",
    "title": "Creates a new Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateHopper",
    "group": "Cm_Hopper",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "active",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "scheduledat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countbusyretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countcongestionretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countnoanswerretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "callback",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackuniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "recallme",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ContactId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ListId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "UserId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "VoiceQueueId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "CampaignId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countnosuchnumberretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countdropretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countabandonedretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countmachineretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countagentrejectretry",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper/describe",
    "title": "Gets table info about Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeHopper",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper",
    "title": "Gets a list of Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetHopper",
    "group": "Cm_Hopper",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper/{id}",
    "title": "Gets a single Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowHopper",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "delete",
    "url": "/api/cm/hopper_black/{id}",
    "title": "Deletes a Hopper Black",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_black/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteHopper_Black",
    "group": "Cm_Hopper_Black",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperBlack/index.js",
    "groupTitle": "Cm_Hopper_Black"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_black/describe",
    "title": "Gets table info about Hopper Black",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_black/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeHopper_Black",
    "group": "Cm_Hopper_Black",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperBlack/index.js",
    "groupTitle": "Cm_Hopper_Black"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_black",
    "title": "Gets a list of Hopper Black",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_black -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetHopper_Black",
    "group": "Cm_Hopper_Black",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_black?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_black?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_black?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_black?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_black?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperBlack/index.js",
    "groupTitle": "Cm_Hopper_Black"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_black/{id}",
    "title": "Gets a single Hopper Black",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_black/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowHopper_Black",
    "group": "Cm_Hopper_Black",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperBlack/index.js",
    "groupTitle": "Cm_Hopper_Black"
  },
  {
    "type": "put",
    "url": "/api/cm/hopper_black/{id}",
    "title": "Update an existing Hopper Black",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_black/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateHopper_Black",
    "group": "Cm_Hopper_Black",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperBlack/index.js",
    "groupTitle": "Cm_Hopper_Black"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_final/describe",
    "title": "Gets table info about HopperFinal",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_final/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_final",
    "title": "Gets a list of HopperFinal",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_final -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_final?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_final?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_final?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_final?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_final?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_final/{id}",
    "title": "Gets a single HopperFinal",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_final/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper_final/checkContactHopper",
    "title": "Check if contact is in hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/checkContactHopper -d '{\"VoiceQueueId\": \"VoiceQueueId\", \"CampaignId\": \"CampaignId\", \"ContactId\": \"ContactId\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "_checkContactHopper",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_final/campaign/countAttributes/{id}",
    "title": "Return number contacts for attributes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/campaign/countAttributes/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "countContactsIvrCampaignHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_final/voice/queue/countAttributes/{id}",
    "title": "Return number contacts for attributes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/voice/queue/countAttributes/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "countContactsQueueCampaignHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper_final/campaign/{id}",
    "title": "Move contacts in hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/campaign/moveContacts/{id} -d '{\"state\": \"state\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "moveContactsIvrCampaignHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper_final/voice/queue/{id}",
    "title": "Move contacts in hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/voice/queue/moveContacts/{id} -d '{\"state\": \"state\"}' -H 'Content-Type: application/json' -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "moveContactsQueueCampaignHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "put",
    "url": "/api/cm/hopper_final/{id}",
    "title": "Update a single hopper final",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper_history",
    "title": "Creates a new HopperHistory",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_history -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateHopperHistory",
    "group": "Cm_Hopper_History",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "state",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "statedesc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "scheduledat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countbusyretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countcongestionretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countnoanswerretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countglobal",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "originatecalleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "originatecalleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "starttime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "responsetime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "answertime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "droptime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "endtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ringtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "holdtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "talktime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "followuptime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dropreason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "campaign",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "campaigntype",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "amd",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "callback",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackuniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "recallme",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "editedat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "edited",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countnosuchnumberretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countdropretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countabandonedretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countmachineretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countagentrejectretry",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperHistory/index.js",
    "groupTitle": "Cm_Hopper_History"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_history/describe",
    "title": "Gets table info about HopperHistory",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_history/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeHopperHistory",
    "group": "Cm_Hopper_History",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperHistory/index.js",
    "groupTitle": "Cm_Hopper_History"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_history",
    "title": "Gets a list of HopperHistory",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_history -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetHopperHistory",
    "group": "Cm_Hopper_History",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_history?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_history?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_history?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_history?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_history?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperHistory/index.js",
    "groupTitle": "Cm_Hopper_History"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_history/{id}",
    "title": "Gets a single HopperHistory",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_history/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowHopperHistory",
    "group": "Cm_Hopper_History",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperHistory/index.js",
    "groupTitle": "Cm_Hopper_History"
  },
  {
    "type": "put",
    "url": "/api/cm/hopper_history/{id}",
    "title": "Update a single hopper history",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_history/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "Cm_Hopper_History",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperHistory/index.js",
    "groupTitle": "Cm_Hopper_History"
  },
  {
    "type": "delete",
    "url": "/api/cm/hopper/{id}",
    "title": "Delete Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroy",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper/opencontacts",
    "title": "Gets Open Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/opencontacts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getOpenContacts",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper/preview",
    "title": "Gets Preview Dialer Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/preview -d '{\"hopperIds\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getPreview",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "put",
    "url": "/api/cm/hopper/{id}",
    "title": "Update an existing Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateHopper",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "post",
    "url": "/api/cm/lists",
    "title": "Creates a new List",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateLists",
    "group": "Cm_Lists",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialPrefix",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "delete",
    "url": "/api/cm/lists/{id}",
    "title": "Deletes a List",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteLists",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/describe",
    "title": "Gets table info about Lists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeLists",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}/users",
    "title": "Gets agents from list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists",
    "title": "Gets a list of Lists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetLists",
    "group": "Cm_Lists",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/lists?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/lists?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/lists?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/lists?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/lists?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "delete",
    "url": "/api/cm/lists/{id}/users",
    "title": "Removes agents from a list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "delete",
    "url": "/api/cm/lists/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}",
    "title": "Gets a single List",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowLists",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "post",
    "url": "/api/cm/lists/{id}/users",
    "title": "Adds agents to a list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAgents",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "post",
    "url": "/api/cm/lists/{id}/contacts",
    "title": "Creates new contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/contacts -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addContacts",
    "group": "Cm_Lists",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "firstName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "street",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "postalCode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "city",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "country",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dateOfBirth",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mobile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "url",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "facebook",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fb_data",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "twitter",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "skype",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "teams",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "viber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "line",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "wechat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "telegram",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "UserId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "scheduledat",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "post",
    "url": "/api/cm/lists/{id}/fields",
    "title": "Creates a new custom field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/fields -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addCustomField",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "post",
    "url": "/api/cm/lists/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Cm_Lists",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}/contacts",
    "title": "Gets List Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/contacts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getContacts",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}/fields",
    "title": "Gets Custom Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getCustomFields",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}/dispositions",
    "title": "Gets list dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}/contacts/csv",
    "title": "Gets CSV List Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/contacts/csv -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "grunt",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "put",
    "url": "/api/cm/lists/{id}",
    "title": "Update an existing List",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateLists",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/upload/:id",
    "title": "Import new contacts by csv",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/upload/:id -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "import",
    "group": "Cm_contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/upload",
    "title": "Upload csv",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/upload -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "upload",
    "group": "Cm_contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/csv",
    "title": "Create new contacts by csv",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/csv -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "uploadCsv",
    "group": "Cm_contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_contacts"
  },
  {
    "type": "delete",
    "url": "/api/conditions/{id}",
    "title": "Deletes a Condition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/conditions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteConditions",
    "group": "Conditions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/condition/index.js",
    "groupTitle": "Conditions"
  },
  {
    "type": "put",
    "url": "/api/conditions/{id}",
    "title": "Update an existing Condition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/conditions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateConditions",
    "group": "Conditions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/condition/index.js",
    "groupTitle": "Conditions"
  },
  {
    "type": "post",
    "url": "/api/cm/custom_field",
    "title": "Create a new custom field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/custom_field  -d '{\"name\": \"mycf\", \"type\": \"text\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateCustomField",
    "group": "Custom_Fields",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCustomField/index.js",
    "groupTitle": "Custom_Fields"
  },
  {
    "type": "post",
    "url": "/api/dashboards/items",
    "title": "Create dasboard item",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/items \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Dashboard_Items",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboardItem/index.js",
    "groupTitle": "Dashboard_Items"
  },
  {
    "type": "delete",
    "url": "/api/dashboards/items/{id}",
    "title": "Deletes a Dashboard Item",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDashboard_Items",
    "group": "Dashboard_Items",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboardItem/index.js",
    "groupTitle": "Dashboard_Items"
  },
  {
    "type": "get",
    "url": "/api/dashboards/items/{id}",
    "title": "Gets a single Dashboard Item",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDashboard_Items",
    "group": "Dashboard_Items",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboardItem/index.js",
    "groupTitle": "Dashboard_Items"
  },
  {
    "type": "put",
    "url": "/api/dashboards/items/{id}",
    "title": "Update an existing item",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Update",
    "group": "Dashboard_Items",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboardItem/index.js",
    "groupTitle": "Dashboard_Items"
  },
  {
    "type": "post",
    "url": "/api/dashboards/clone",
    "title": "Clone an existing Dashboard",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneDashboards",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "post",
    "url": "/api/dashboards",
    "title": "Creates a new Dashboard",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDashboards",
    "group": "Dashboards",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "delete",
    "url": "/api/dashboards/{id}",
    "title": "Deletes a Dashboard",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDashboards",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "get",
    "url": "/api/dashboards",
    "title": "Gets a list of Dashboards",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDashboards",
    "group": "Dashboards",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/dashboards?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/dashboards?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/dashboards?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/dashboards?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/dashboards?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "get",
    "url": "/api/dashboards/{id}",
    "title": "Gets a single Dashboard",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDashboards",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "post",
    "url": "/api/dashboards/{id}/items",
    "title": "Creates new item",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/{id}/items -d '{\"type\": \"counter\", \"...\": \"...\"}]' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addItem",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "get",
    "url": "/api/dashboards/{id}/items",
    "title": "Gets items",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/{id}/items -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getItems",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "put",
    "url": "/api/dashboards/{id}",
    "title": "Update an existing Dashboard",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDashboards",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "post",
    "url": "/api/integrations/desk/accounts",
    "title": "Creates a new Desk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDesk_Accounts",
    "group": "Desk_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"basic\""
            ],
            "optional": true,
            "field": "authType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "consumerKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "consumerSecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tokenSecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"integrationTab\"",
              "\"newTab\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/desk/accounts/{id}",
    "title": "Deletes a Desk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDesk_Accounts",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/accounts",
    "title": "Gets a list of Desk Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDesk_Accounts",
    "group": "Desk_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/accounts/{id}",
    "title": "Gets a single Desk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDesk_Accounts",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/desk/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/desk/accounts/{id}",
    "title": "Update an existing Desk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDesk_Accounts",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/desk/configurations",
    "title": "Creates a new Desk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDesk_Configurations",
    "group": "Desk_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/desk/configurations/{id}",
    "title": "Deletes a Desk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDesk_Configurations",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations",
    "title": "Gets a list of Desk Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDesk_Configurations",
    "group": "Desk_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations/{id}",
    "title": "Gets a single Desk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDesk_Configurations",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations/{id}/tags",
    "title": "Gets configurations tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/tags -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getTags",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/desk/configurations/{id}/tags",
    "title": "Sets new tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "setTags",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/desk/configurations/{id}",
    "title": "Update an existing Desk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDesk_Configurations",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/desk/fields",
    "title": "Creates a new Desk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDesk_Fields",
    "group": "Desk_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskField/index.js",
    "groupTitle": "Desk_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/desk/fields/{id}",
    "title": "Deletes a Desk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDesk_Fields",
    "group": "Desk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskField/index.js",
    "groupTitle": "Desk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/fields",
    "title": "Gets a list of Desk Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDesk_Fields",
    "group": "Desk_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskField/index.js",
    "groupTitle": "Desk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/fields/{id}",
    "title": "Gets a single Desk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDesk_Fields",
    "group": "Desk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskField/index.js",
    "groupTitle": "Desk_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/desk/fields/{id}",
    "title": "Update an existing Desk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDesk_Fields",
    "group": "Desk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskField/index.js",
    "groupTitle": "Desk_Fields"
  },
  {
    "type": "post",
    "url": "/api/dispositions",
    "title": "Creates a new Disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDispositions",
    "group": "Dispositions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/disposition/index.js",
    "groupTitle": "Dispositions"
  },
  {
    "type": "delete",
    "url": "/api/dispositions/{id}",
    "title": "Deletes a Disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dispositions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDispositions",
    "group": "Dispositions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/disposition/index.js",
    "groupTitle": "Dispositions"
  },
  {
    "type": "get",
    "url": "/api/dispositions",
    "title": "Gets a list of Dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dispositions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDispositions",
    "group": "Dispositions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/dispositions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/dispositions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/dispositions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/dispositions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/dispositions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/disposition/index.js",
    "groupTitle": "Dispositions"
  },
  {
    "type": "get",
    "url": "/api/dispositions/{id}",
    "title": "Gets a single Disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dispositions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDispositions",
    "group": "Dispositions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/disposition/index.js",
    "groupTitle": "Dispositions"
  },
  {
    "type": "put",
    "url": "/api/dispositions/{id}",
    "title": "Update an existing Disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDispositions",
    "group": "Dispositions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/disposition/index.js",
    "groupTitle": "Dispositions"
  },
  {
    "type": "post",
    "url": "/api/integrations/dynamics365/accounts",
    "title": "Creates a new Dynamics365 Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDynamics365_Accounts",
    "group": "Dynamics365_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tenantId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientSecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/dynamics365/accounts/{id}",
    "title": "Deletes a Dynamics365 Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDynamics365_Accounts",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/accounts",
    "title": "Gets a list of Dynamics365 Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDynamics365_Accounts",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/accounts/{id}",
    "title": "Gets a single Dynamics365 Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDynamics365_Accounts",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/dynamics365/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/dynamics365/accounts/{id}",
    "title": "Update an existing Dynamics365 Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDynamics365_Accounts",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/dynamics365/configurations",
    "title": "Creates a new Dynamics365 Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDynamics365_Configurations",
    "group": "Dynamics365_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"incident\"",
              "\"phonecall\""
            ],
            "optional": true,
            "field": "ticketType",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/dynamics365/configurations/{id}",
    "title": "Deletes a Dynamics365 Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDynamics365_Configurations",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/configurations",
    "title": "Gets a list of Dynamics365 Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDynamics365_Configurations",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/configurations/{id}",
    "title": "Gets a single Dynamics365 Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDynamics365_Configurations",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/dynamics365/configurations/{id}",
    "title": "Update an existing Dynamics365 Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDynamics365_Configurations",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/dynamics365/fields",
    "title": "Creates a new Dynamics365 Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDynamics365_Fields",
    "group": "Dynamics365_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Field/index.js",
    "groupTitle": "Dynamics365_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/dynamics365/fields/{id}",
    "title": "Deletes a Dynamics365 Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDynamics365_Fields",
    "group": "Dynamics365_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Field/index.js",
    "groupTitle": "Dynamics365_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/fields",
    "title": "Gets a list of Dynamics365 Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDynamics365_Fields",
    "group": "Dynamics365_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Field/index.js",
    "groupTitle": "Dynamics365_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/fields/{id}",
    "title": "Gets a single Dynamics365 Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDynamics365_Fields",
    "group": "Dynamics365_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Field/index.js",
    "groupTitle": "Dynamics365_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/dynamics365/fields/{id}",
    "title": "Update an existing Dynamics365 Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDynamics365_Fields",
    "group": "Dynamics365_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Field/index.js",
    "groupTitle": "Dynamics365_Fields"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/users",
    "title": "Add agents to a fax account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts",
    "title": "Creates a new Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAccounts",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "ecm",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "headerinfo",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "localstationid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"2400\"",
              "\"4800\"",
              "\"7200\"",
              "\"9600\"",
              "\"12000\"",
              "\"14400\""
            ],
            "optional": true,
            "field": "minrate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"2400\"",
              "\"4800\"",
              "\"7200\"",
              "\"9600\"",
              "\"12000\"",
              "\"14400\""
            ],
            "optional": true,
            "field": "maxrate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "modem",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "gateway",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "faxdetect",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "t38timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"SIP\"",
              "\"IAX\"",
              "\"DADHI\"",
              "\"KHOMP\""
            ],
            "optional": true,
            "field": "tech",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notificationTemplate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationSound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationShake",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "waitForTheAssignedAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "queueTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "queueTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "agentTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/fax/accounts/{id}",
    "title": "Deletes a Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAccounts",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/describe",
    "title": "Gets table info about Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAccounts",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts",
    "title": "Gets a list of Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAccounts",
    "group": "Fax_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/users",
    "title": "Gets agents from fax account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/fax/accounts/{id}/users",
    "title": "Removes agents from a fax account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/fax/accounts/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/fax/accounts/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}",
    "title": "Gets a single Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAccounts",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/addaccountapplications",
    "title": "Creates new account and applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/interactions",
    "title": "Creates new interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/interactions -d '[{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addInteraction",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/applications",
    "title": "Gets account pplications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/interactions",
    "title": "Gets account interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getInteraction",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/messages",
    "title": "Gets account messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/send",
    "title": "Send new fax",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/send -d '{from: '\"John Doe\" <123456>'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "sendFax",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "put",
    "url": "/api/fax/accounts/{id}",
    "title": "Update an existing Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAccounts",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/updateaccountapplications",
    "title": "Update account and applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/updateaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/applications",
    "title": "Creates a new Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateApplications",
    "group": "Fax_Applications",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxApplication/index.js",
    "groupTitle": "Fax_Applications"
  },
  {
    "type": "delete",
    "url": "/api/fax/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Fax_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxApplication/index.js",
    "groupTitle": "Fax_Applications"
  },
  {
    "type": "get",
    "url": "/api/fax/applications",
    "title": "Gets a list of Applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/applications -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetApplications",
    "group": "Fax_Applications",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxApplication/index.js",
    "groupTitle": "Fax_Applications"
  },
  {
    "type": "get",
    "url": "/api/fax/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Fax_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxApplication/index.js",
    "groupTitle": "Fax_Applications"
  },
  {
    "type": "put",
    "url": "/api/fax/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Fax_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxApplication/index.js",
    "groupTitle": "Fax_Applications"
  },
  {
    "type": "post",
    "url": "/api/fax/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "post",
    "url": "/api/fax/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Fax_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/fax/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Fax_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/fax/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "post",
    "url": "/api/fax/interactions/{id}/messages",
    "title": "Creates new messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Fax_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "failMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/interactions/{id}/download",
    "title": "Get interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "put",
    "url": "/api/fax/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/messages/{id}/download",
    "title": "Get message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Fax_Message",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Message"
  },
  {
    "type": "delete",
    "url": "/api/fax/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "get",
    "url": "/api/fax/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "get",
    "url": "/api/fax/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Fax_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "get",
    "url": "/api/fax/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "put",
    "url": "/api/fax/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "put",
    "url": "/api/fax/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "post",
    "url": "/api/fax/messages",
    "title": "Create message and send Fax",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "put",
    "url": "/api/fax/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "post",
    "url": "/api/fax/reports/queue",
    "title": "Creates a new Fax Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/fax/reports/queue/{id}",
    "title": "Deletes a Fax Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/queue/describe",
    "title": "Gets table info about Fax Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/queue",
    "title": "Gets a list of Fax Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/queue/{id}",
    "title": "Gets a single Fax Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/fax/reports/queue/{id}",
    "title": "Update an existing Fax Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/fax/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "post",
    "url": "/api/fax/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "post",
    "url": "/api/fax/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Fax_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": false,
            "field": "strategy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "lastAgent",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "delete",
    "url": "/api/fax/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Fax_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "delete",
    "url": "/api/fax/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "put",
    "url": "/api/fax/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "post",
    "url": "/api/fax/reports/transfer",
    "title": "Creates a new Fax Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/fax/reports/transfer/{id}",
    "title": "Deletes a Fax Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/transfer/describe",
    "title": "Gets table info about Fax Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/transfer",
    "title": "Gets a list of Fax Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/transfer/{id}",
    "title": "Gets a single Fax Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/fax/reports/transfer/{id}",
    "title": "Update an existing Fax Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshdesk/accounts",
    "title": "Creates a new Freshdesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshdesk_Accounts",
    "group": "Freshdesk_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "apiKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshdesk/accounts/{id}",
    "title": "Deletes a Freshdesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshdesk_Accounts",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/accounts",
    "title": "Gets a list of Freshdesk Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshdesk_Accounts",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/accounts/{id}",
    "title": "Gets a single Freshdesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshdesk_Accounts",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshdesk/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshdesk/accounts/{id}",
    "title": "Update an existing Freshdesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshdesk_Accounts",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshdesk/configurations",
    "title": "Creates a new Freshdesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshdesk_Configurations",
    "group": "Freshdesk_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshdesk/configurations/{id}",
    "title": "Deletes a Freshdesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshdesk_Configurations",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations",
    "title": "Gets a list of Freshdesk Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshdesk_Configurations",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations/{id}",
    "title": "Gets a single Freshdesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshdesk_Configurations",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations/{id}/tags",
    "title": "Gets configurations tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/tags -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getTags",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshdesk/configurations/{id}/tags",
    "title": "Sets new tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "setTags",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshdesk/configurations/{id}",
    "title": "Update an existing Freshdesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshdesk_Configurations",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshdesk/fields",
    "title": "Creates a new Freshdesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshdesk_Fields",
    "group": "Freshdesk_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskField/index.js",
    "groupTitle": "Freshdesk_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshdesk/fields/{id}",
    "title": "Deletes a Freshdesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshdesk_Fields",
    "group": "Freshdesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskField/index.js",
    "groupTitle": "Freshdesk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/fields",
    "title": "Gets a list of Freshdesk Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshdesk_Fields",
    "group": "Freshdesk_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskField/index.js",
    "groupTitle": "Freshdesk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/fields/{id}",
    "title": "Gets a single Freshdesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshdesk_Fields",
    "group": "Freshdesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskField/index.js",
    "groupTitle": "Freshdesk_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshdesk/fields/{id}",
    "title": "Update an existing Freshdesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshdesk_Fields",
    "group": "Freshdesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskField/index.js",
    "groupTitle": "Freshdesk_Fields"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshsales/accounts",
    "title": "Creates a new Freshsales Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshsales_Accounts",
    "group": "Freshsales_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "apiKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshsales/accounts/{id}",
    "title": "Deletes a Freshsales Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshsales_Accounts",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/accounts",
    "title": "Gets a list of Freshsales Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshsales_Accounts",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/accounts/{id}",
    "title": "Gets a single Freshsales Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshsales_Accounts",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshsales/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshsales/accounts/{id}",
    "title": "Update an existing Freshsales Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshsales_Accounts",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshsales/configurations",
    "title": "Creates a new Freshsales Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshsales_Configurations",
    "group": "Freshsales_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshsales/configurations/{id}",
    "title": "Deletes a Freshsales Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshsales_Configurations",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/configurations",
    "title": "Gets a list of Freshsales Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshsales_Configurations",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/configurations/{id}",
    "title": "Gets a single Freshsales Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshsales_Configurations",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshsales/configurations/{id}",
    "title": "Update an existing Freshsales Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshsales_Configurations",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshsales/fields",
    "title": "Creates a new Freshsales Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshsales_Fields",
    "group": "Freshsales_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesField/index.js",
    "groupTitle": "Freshsales_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshsales/fields/{id}",
    "title": "Deletes a Freshsales Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshsales_Fields",
    "group": "Freshsales_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesField/index.js",
    "groupTitle": "Freshsales_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/fields",
    "title": "Gets a list of Freshsales Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshsales_Fields",
    "group": "Freshsales_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesField/index.js",
    "groupTitle": "Freshsales_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/fields/{id}",
    "title": "Gets a single Freshsales Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshsales_Fields",
    "group": "Freshsales_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesField/index.js",
    "groupTitle": "Freshsales_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshsales/fields/{id}",
    "title": "Update an existing Freshsales Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshsales_Fields",
    "group": "Freshsales_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesField/index.js",
    "groupTitle": "Freshsales_Fields"
  },
  {
    "type": "post",
    "url": "/api/campaigns/{id}/blacklists",
    "title": "Add blacklists to an IVR campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/blacklists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddBlackLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "post",
    "url": "/api/campaigns/{id}/lists",
    "title": "Add lists to an IVR campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/lists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "post",
    "url": "/api/campaigns/clone",
    "title": "Clone an existing IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneIVR_Campaigns",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "post",
    "url": "/api/campaigns",
    "title": "Creates a new IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateIVR_Campaigns",
    "group": "IVR_Campaigns",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"ivr\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "active",
            "description": "<p>Active/Disactive Campaign</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "limitCalls",
            "description": "<p>Max 200 calls.</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialOriginateCallerIdName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialOriginateCallerIdNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialOriginateTimeout",
            "description": "<p>Originate Timeout Seconds (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCongestionMaxRetry",
            "description": "<p>#Congestion Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCongestionRetryFrequency",
            "description": "<p>Congestion Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialBusyMaxRetry",
            "description": "<p>#Busy Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialBusyRetryFrequency",
            "description": "<p>Busy Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoAnswerMaxRetry",
            "description": "<p>#NoAnswer Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoAnswerRetryFrequency",
            "description": "<p>NoAnswer Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialGlobalMaxRetry",
            "description": "<p>#Global Max Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialTimezone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialGlobalInterval",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"always\"",
              "\"never\"",
              "\"onlyIfOpen\""
            ],
            "optional": true,
            "field": "dialCheckDuplicateType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialAMDActive",
            "description": "<p>Active/Disactive AMD</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDInitialSilence",
            "description": "<p>#AMD Initial Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDGreeting",
            "description": "<p>#AMD Greeting</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDAfterGreetingSilence",
            "description": "<p>#AMD After Greeting Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDTotalAnalysisTime",
            "description": "<p>#AMD Total Analysis Time</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMinWordLength",
            "description": "<p>#AMD Min Word Length</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDBetweenWordsSilence",
            "description": "<p>#AMD Between Words Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMaximumNumberOfWords",
            "description": "<p>#AMD Maximum Number Of Words</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDSilenceThreshold",
            "description": "<p>#AMD Silence Threshold (min:0, max:32767)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMaximumWordLength",
            "description": "<p>#AMD Maximum Word Length</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"DESC\"",
              "\"ASC\""
            ],
            "optional": true,
            "field": "dialOrderByScheduledAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialPrefix",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialRandomLastDigitCallerIdNumber",
            "description": "<p>Random Last Digit (min:1, max:15)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCutDigit",
            "description": "<p>Cut Digit (min:1, max:15)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoSuchNumberMaxRetry",
            "description": "<p>#NoSuchNumber Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoSuchNumberRetryFrequency",
            "description": "<p>NoSuchNumber Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialDropMaxRetry",
            "description": "<p>#Drop Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialDropRetryFrequency",
            "description": "<p>Drop Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAbandonedMaxRetry",
            "description": "<p>#Abandoned Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAbandonedRetryFrequency",
            "description": "<p>Abandoned Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialMachineMaxRetry",
            "description": "<p>#Machine Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialMachineRetryFrequency",
            "description": "<p>Machine Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAgentRejectMaxRetry",
            "description": "<p>#AgentReject Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAgentRejectRetryFrequency",
            "description": "<p>AgentReject Retry Frequency Minutes (min:1, max:99999)</p>"
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "delete",
    "url": "/api/campaigns/{id}",
    "title": "Deletes a IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteIVR_Campaigns",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/blacklists",
    "title": "Get IVR campaign blacklists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/blacklists -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetBlackLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/finals",
    "title": "Gets IVR campaign hopper finals",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/hopper_finals -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperFinals",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/hopper_histories",
    "title": "Gets IVR campaign hopper histories",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/hopper_histories -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperHistories",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/hoppers",
    "title": "Gets IVR campaign hoppers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/hoppers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHoppers",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns",
    "title": "Gets a list of IVR Campaigns",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetIVR_Campaigns",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/campaigns?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/campaigns?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/campaigns?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/campaigns?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/campaigns?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/lists",
    "title": "Get IVR campaign lists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/lists -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "delete",
    "url": "/api/campaigns/{id}/blacklists",
    "title": "Remove blacklists from an IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/blacklists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveBlackLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "delete",
    "url": "/api/campaigns/{id}/lists",
    "title": "Remove lists from an IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/lists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}",
    "title": "Gets a single IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowIVR_Campaigns",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/blacks",
    "title": "Gets IVR campaign hopper blacks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/hopper_black -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getHopperBlacks",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "put",
    "url": "/api/campaigns/{id}",
    "title": "Update an existing IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateIVR_Campaigns",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "post",
    "url": "/api/integrations/reports",
    "title": "Creates a new Integration Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateIntegration_Reports",
    "group": "Integration_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "integration",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "eventChannel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitStatus",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "ticketId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "integrationId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contacts",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interface",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentcalledAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentconnectAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "holdtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentcomplete",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentcompleteAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "talktime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentacw",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "acwtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentringnoanswer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentringnoanswerAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentdump",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentdumpAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastevent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "channelstate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channelstatedesc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "connectedlinenum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "connectedlinename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "language",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destchannel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "destchannelstate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destchannelstatedesc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destcalleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destcalleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destconnectedlinenum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destconnectedlinename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destlanguage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destaccountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destcontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destpriority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destuniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "inReplyTo",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "subject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "to",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "cc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "attachment",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "html",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "text",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"SENT\"",
              "\"SENDING\"",
              "\"RECEIVED\"",
              "\"FAILED\""
            ],
            "optional": true,
            "field": "status",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "url",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "projectId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "delete",
    "url": "/api/integrations/reports/{id}",
    "title": "Deletes a Integration Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteIntegration_Reports",
    "group": "Integration_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "get",
    "url": "/api/integrations/reports/describe",
    "title": "Gets table info about Integration Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeIntegration_Reports",
    "group": "Integration_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "get",
    "url": "/api/integrations/reports",
    "title": "Gets a list of Integration Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetIntegration_Reports",
    "group": "Integration_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "get",
    "url": "/api/integrations/reports/{id}",
    "title": "Gets a single Integration Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowIntegration_Reports",
    "group": "Integration_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "put",
    "url": "/api/integrations/reports/{id}",
    "title": "Update an existing Integration Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateIntegration_Reports",
    "group": "Integration_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "post",
    "url": "/api/intervals",
    "title": "Creates a new Interval",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateIntervals",
    "group": "Intervals",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "delete",
    "url": "/api/intervals/{id}",
    "title": "Deletes a Interval",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteIntervals",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "get",
    "url": "/api/intervals",
    "title": "Gets a list of Intervals",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetIntervals",
    "group": "Intervals",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/intervals?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/intervals?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/intervals?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/intervals?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/intervals?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "get",
    "url": "/api/intervals/{id}",
    "title": "Gets a single Interval",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowIntervals",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "post",
    "url": "/api/intervals/{id}/sub_intervals",
    "title": "Creates a new sub interval",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -d '{\"interval\": \"00:00-08:30,mon-fri,*,*\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addInterval",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "post",
    "url": "/api/intervals/{id}/sub_intervals/create_many",
    "title": "Create new sub intervals set",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addIntervals",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "get",
    "url": "/api/intervals/{id}/sub_intervals",
    "title": "Get sub intervals set",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getIntervals",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "put",
    "url": "/api/intervals/{id}",
    "title": "Update an existing Interval",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateIntervals",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "post",
    "url": "/api/jira",
    "title": "Creates a new issue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jira -d '{\"key\": \"Bug\", \"description\": \"I can't do it!\"}' \\\n -H \"Content-Type: application/json\" -X POST -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "Creates_Issue",
    "group": "Issue",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"Bug\""
            ],
            "optional": true,
            "field": "issuetype",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "summary",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jira/index.js",
    "groupTitle": "Issue"
  },
  {
    "type": "post",
    "url": "/api/jscripty/answers/reports",
    "title": "Creates a new Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateReports",
    "group": "JscriptyAnswerReport",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "question",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "answer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "projectname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "questionId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "delete",
    "url": "/api/jscripty/answers/reports/{id}",
    "title": "Deletes a Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteReports",
    "group": "JscriptyAnswerReport",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/answers/reports/describe",
    "title": "Gets table info about Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeReports",
    "group": "JscriptyAnswerReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/answers/reports",
    "title": "Gets a list of Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetReports",
    "group": "JscriptyAnswerReport",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/answers/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/answers/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/answers/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/answers/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/answers/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/answers/reports/{id}",
    "title": "Gets a single Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowReports",
    "group": "JscriptyAnswerReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "put",
    "url": "/api/jscripty/answers/reports/{id}",
    "title": "Update an existing Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateReports",
    "group": "JscriptyAnswerReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "post",
    "url": "/api/jscripty/questions/reports",
    "title": "Creates a new Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateReports",
    "group": "JscriptyQuestionReport",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "question",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "answer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "projectname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "questionId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "delete",
    "url": "/api/jscripty/questions/reports/{id}",
    "title": "Deletes a Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteReports",
    "group": "JscriptyQuestionReport",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/questions/reports/describe",
    "title": "Gets table info about Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeReports",
    "group": "JscriptyQuestionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/questions/reports",
    "title": "Gets a list of Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetReports",
    "group": "JscriptyQuestionReport",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/questions/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/questions/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/questions/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/questions/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/questions/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/questions/reports/{id}",
    "title": "Gets a single Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowReports",
    "group": "JscriptyQuestionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "put",
    "url": "/api/jscripty/questions/reports/{id}",
    "title": "Update an existing Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateReports",
    "group": "JscriptyQuestionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "post",
    "url": "/api/jscripty/sessions/reports",
    "title": "Creates a new Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateReports",
    "group": "JscriptySessionReport",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "starttime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "endtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "projectname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "completed",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "delete",
    "url": "/api/jscripty/sessions/reports/{id}",
    "title": "Deletes a Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteReports",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/sessions/reports/describe",
    "title": "Gets table info about Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeReports",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/sessions/reports",
    "title": "Gets a list of Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetReports",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/sessions/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/sessions/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/sessions/reports/{id}",
    "title": "Gets a single Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowReports",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/sessions/reports/{id}/questions",
    "title": "Gets Jscripty Session questions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id}/questions -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getQuestions",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "put",
    "url": "/api/jscripty/sessions/reports/{id}",
    "title": "Update an existing Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateReports",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "post",
    "url": "/api/jscripty/projects/clone",
    "title": "Clone an existing Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneProjects",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "post",
    "url": "/api/jscripty/projects",
    "title": "Creates a new Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateProjects",
    "group": "Jscripty_Projects",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "formData",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableUncompleteSave",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "sendUnpauseOnSubmit",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "delete",
    "url": "/api/jscripty/projects/{id}",
    "title": "Deletes a Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteProjects",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/jscripty/projects",
    "title": "Gets a list of Projects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetProjects",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/projects?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/projects?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/projects?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/projects?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/projects?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/jscripty/projects/{id}",
    "title": "Gets a single Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowProjects",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/jscripty/projects/{id}/answers",
    "title": "Gets jscripty project answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id}/answers -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/jscripty/projects/{id}/sessions",
    "title": "Gets jscripty project sessions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id}/sessions -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getSessions",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/jscripty/projects/{id}/summary",
    "title": "Gets jscripty project summary",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id}/summary -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getSummary",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "put",
    "url": "/api/jscripty/projects/{id}",
    "title": "Update an existing Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateProjects",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/license",
    "title": "Gets License Info",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/license -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "index",
    "group": "License",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/license/index.js",
    "groupTitle": "License"
  },
  {
    "type": "put",
    "url": "/api/license/{id}",
    "title": "Update License Info",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/license/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "License",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/license/index.js",
    "groupTitle": "License"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/users",
    "title": "Add agents to a mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/in_servers",
    "title": "Creates a new IMAP server",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddImap",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "authentication",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "user",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "port",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "tls",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "connTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "authTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "service",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/out_servers",
    "title": "Creates a new SMTP server",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSmtp",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "user",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pass",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "port",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secure",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "service",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "authentication",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}",
    "title": "Deletes a mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMailAccounts",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/describe",
    "title": "Gets table info about Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAccounts",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts",
    "title": "Gets a list of Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAccounts",
    "group": "Mail_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/users",
    "title": "Gets agents from mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/in_servers",
    "title": "Gets account IMAP server",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetImap",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/out_servers",
    "title": "Gets account SMTP server",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetSmtp",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}/users",
    "title": "Removes agents from a mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}/in_servers",
    "title": "Removes IMAP server from an account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveImmap",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}/out_servers",
    "title": "Removes SMTP server from an account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSmtp",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}",
    "title": "Gets a single Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAccounts",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/interactions",
    "title": "Creates new interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/interactions -d '[{\"subject\": \"My printer is on fire!\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addInteraction",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "inReplyTo",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "to",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "cc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "subject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "attach",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "substatus",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "substatusAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "lastMsgBody",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "lastMsgText",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts",
    "title": "Create a mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "create",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/applications",
    "title": "Gets account applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/interactions",
    "title": "Gets account interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getInteraction",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/messages",
    "title": "Gets account messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/send",
    "title": "Send new mail",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/send -d '{from: '\"John Doe\" <[email-masked]>'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "sendMail",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "put",
    "url": "/api/mail/accounts/{id}",
    "title": "Update an existing Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAccounts",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/verify",
    "title": "Verify mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/verify -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "verifySmtp",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Mail_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailApplication/index.js",
    "groupTitle": "Mail_Applications"
  },
  {
    "type": "get",
    "url": "/api/mail/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Mail_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailApplication/index.js",
    "groupTitle": "Mail_Applications"
  },
  {
    "type": "put",
    "url": "/api/mail/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Mail_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailApplication/index.js",
    "groupTitle": "Mail_Applications"
  },
  {
    "type": "post",
    "url": "/api/mail/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "post",
    "url": "/api/mail/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Mail_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "inReplyTo",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "to",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "cc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "subject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "attach",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "substatus",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "substatusAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "lastMsgBody",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "lastMsgText",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/mail/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "get",
    "url": "/api/mail/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "get",
    "url": "/api/mail/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Mail_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/mail/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "get",
    "url": "/api/mail/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "post",
    "url": "/api/mail/interactions/{id}/messages",
    "title": "Creates new message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id}/messages -d '[{\"to\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Mail_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "plainBody",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "to",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "cc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "bcc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "subject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sentAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "attach",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "originTo",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "originCc",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "get",
    "url": "/api/mail/interactions/{id}/download",
    "title": "Gets interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "get",
    "url": "/api/mail/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "put",
    "url": "/api/mail/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/mail/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "get",
    "url": "/api/mail/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "get",
    "url": "/api/mail/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Mail_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "get",
    "url": "/api/mail/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "put",
    "url": "/api/mail/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "post",
    "url": "/api/mail/messages",
    "title": "Create a message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "createMessage",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "get",
    "url": "/api/mail/messages/{id}/download",
    "title": "Gets message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "put",
    "url": "/api/mail/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "put",
    "url": "/api/mail/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "post",
    "url": "/api/mail/reports/queue",
    "title": "Creates a new Mail Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/mail/reports/queue/{id}",
    "title": "Deletes a Mail Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/queue/describe",
    "title": "Gets table info about Mail Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/queue",
    "title": "Gets a list of Mail Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/queue/{id}",
    "title": "Gets a single Mail Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/mail/reports/queue/{id}",
    "title": "Update an existing Mail Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/mail/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "post",
    "url": "/api/mail/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "post",
    "url": "/api/mail/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Mail_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": true,
            "field": "strategy",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "delete",
    "url": "/api/mail/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Mail_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "delete",
    "url": "/api/mail/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "put",
    "url": "/api/mail/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "post",
    "url": "/api/mail/out_servers",
    "title": "Creates a new SMTP",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/out_servers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSMTPs",
    "group": "Mail_SMTP",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "user",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pass",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "port",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secure",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "service",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "authentication",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailServerOut/index.js",
    "groupTitle": "Mail_SMTP"
  },
  {
    "type": "delete",
    "url": "/api/mail/out_servers/{id}",
    "title": "Deletes a SMTP",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/out_servers/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSMTPs",
    "group": "Mail_SMTP",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailServerOut/index.js",
    "groupTitle": "Mail_SMTP"
  },
  {
    "type": "get",
    "url": "/api/mail/out_servers",
    "title": "Gets a list of SMTPs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/out_servers -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSMTPs",
    "group": "Mail_SMTP",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/out_servers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/out_servers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/out_servers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/out_servers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/out_servers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailServerOut/index.js",
    "groupTitle": "Mail_SMTP"
  },
  {
    "type": "get",
    "url": "/api/mail/out_servers/{id}",
    "title": "Gets a single SMTP",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/out_servers/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSMTPs",
    "group": "Mail_SMTP",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailServerOut/index.js",
    "groupTitle": "Mail_SMTP"
  },
  {
    "type": "put",
    "url": "/api/mail/out_servers/{id}",
    "title": "Update an existing SMTP",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/out_servers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSMTPs",
    "group": "Mail_SMTP",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailServerOut/index.js",
    "groupTitle": "Mail_SMTP"
  },
  {
    "type": "post",
    "url": "/api/mail/substatuses",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSubstatuses",
    "group": "Mail_Substatuses",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "delete",
    "url": "/api/mail/substatuses/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSubstatuses",
    "group": "Mail_Substatuses",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "get",
    "url": "/api/mail/substatuses/describe",
    "title": "Gets table info about Substatuses",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeSubstatuses",
    "group": "Mail_Substatuses",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "get",
    "url": "/api/mail/substatuses",
    "title": "Gets a list of Substatuses",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSubstatuses",
    "group": "Mail_Substatuses",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/substatuses?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/substatuses?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/substatuses?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/substatuses?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/substatuses?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "get",
    "url": "/api/mail/substatuses/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSubstatuses",
    "group": "Mail_Substatuses",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "put",
    "url": "/api/mail/substatuses/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSubstatuses",
    "group": "Mail_Substatuses",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "post",
    "url": "/api/mail/reports/transfer",
    "title": "Creates a new Mail Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/mail/reports/transfer/{id}",
    "title": "Deletes a Mail Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/transfer/describe",
    "title": "Gets table info about Mail Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/transfer",
    "title": "Gets a list of Mail Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/transfer/{id}",
    "title": "Gets a single Mail Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/mail/reports/transfer/{id}",
    "title": "Update an existing Mail Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/members/reports/describe",
    "title": "Gets table info about Member Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/members/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMember_Reports",
    "group": "Member_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/memberReport/index.js",
    "groupTitle": "Member_Reports"
  },
  {
    "type": "get",
    "url": "/api/members/reports",
    "title": "Gets a list of Member Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/members/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMember_Reports",
    "group": "Member_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/members/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/members/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/members/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/members/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/members/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/memberReport/index.js",
    "groupTitle": "Member_Reports"
  },
  {
    "type": "get",
    "url": "/api/members/reports/{id}",
    "title": "Gets a single Member Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/members/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMember_Reports",
    "group": "Member_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/memberReport/index.js",
    "groupTitle": "Member_Reports"
  },
  {
    "type": "get",
    "url": "/api/migrations",
    "title": "Gets a list of Migrations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/migrations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMigrations",
    "group": "Migrations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/migrations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/migrations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/migrations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/migrations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/migrations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/migration/index.js",
    "groupTitle": "Migrations"
  },
  {
    "type": "post",
    "url": "/api/voice/networks",
    "title": "Create a new network",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/networks -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Networks",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/network/index.js",
    "groupTitle": "Networks"
  },
  {
    "type": "delete",
    "url": "/api/voice/networks/{id}",
    "title": "Deletes a network",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/networks/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "Delete",
    "group": "Networks",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/network/index.js",
    "groupTitle": "Networks"
  },
  {
    "type": "get",
    "url": "/api/networks",
    "title": "Gets a list of Networks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/networks -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetNetworks",
    "group": "Networks",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/networks?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/networks?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/networks?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/networks?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/networks?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/network/index.js",
    "groupTitle": "Networks"
  },
  {
    "type": "get",
    "url": "/api/networks/{id}",
    "title": "Gets a single Network",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/networks/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowNetworks",
    "group": "Networks",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/network/index.js",
    "groupTitle": "Networks"
  },
  {
    "type": "put",
    "url": "/api/voice/networks/{id}",
    "title": "Update an existing network",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/networks/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Update",
    "group": "Networks",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/network/index.js",
    "groupTitle": "Networks"
  },
  {
    "type": "post",
    "url": "/api/notifications",
    "title": "Send notification to user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/notifications -d '{\"text\": \"Hello!\", \"TemplateId\": 1}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Send",
    "group": "Notifications",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/notification/index.js",
    "groupTitle": "Notifications"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/users",
    "title": "Add agents to a openchannel account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts",
    "title": "Creates a new Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAccounts",
    "group": "Openchannel_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "replyUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notificationTemplate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationSound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationShake",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "waitForTheAssignedAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mapKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "queueTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "queueTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "agentTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/accounts/{id}",
    "title": "Deletes a Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAccounts",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/describe",
    "title": "Gets table info about Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAccounts",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts",
    "title": "Gets a list of Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAccounts",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}/users",
    "title": "Gets agents from openchannel account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/accounts/{id}/users",
    "title": "Removes agents from a openchannel account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/accounts/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/accounts/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}",
    "title": "Gets a single Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAccounts",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Openchannel_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Openchannel_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Openchannel_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}/applications",
    "title": "Gets account applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}/interactions",
    "title": "Gets Openchannel Account Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getInteractions",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/notify",
    "title": "Notify new message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "notify",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre><a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice</a></pre></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/send",
    "title": "Send new openchannel message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/send -d '{from: 'John Doe', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "sendOpenchannel",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "put",
    "url": "/api/openchannel/accounts/{id}",
    "title": "Update an existing Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAccounts",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/applications",
    "title": "Creates a new Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateApplications",
    "group": "Openchannel_Applications",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelApplication/index.js",
    "groupTitle": "Openchannel_Applications"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Openchannel_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelApplication/index.js",
    "groupTitle": "Openchannel_Applications"
  },
  {
    "type": "get",
    "url": "/api/openchannel/applications",
    "title": "Gets a list of Applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/applications -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetApplications",
    "group": "Openchannel_Applications",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelApplication/index.js",
    "groupTitle": "Openchannel_Applications"
  },
  {
    "type": "get",
    "url": "/api/openchannel/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Openchannel_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelApplication/index.js",
    "groupTitle": "Openchannel_Applications"
  },
  {
    "type": "put",
    "url": "/api/openchannel/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Openchannel_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelApplication/index.js",
    "groupTitle": "Openchannel_Applications"
  },
  {
    "type": "post",
    "url": "/api/openchannel/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "post",
    "url": "/api/openchannel/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Openchannel_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "threadId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "externalUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "get",
    "url": "/api/openchannel/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "get",
    "url": "/api/openchannel/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "get",
    "url": "/api/openchannel/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "post",
    "url": "/api/openchannel/interactions/{id}/messages",
    "title": "Creates new messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Openchannel_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "get",
    "url": "/api/openchannel/interactions/{id}/download",
    "title": "Gets interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "get",
    "url": "/api/openchannel/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "put",
    "url": "/api/openchannel/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "post",
    "url": "/api/openchannel/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Openchannel_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "get",
    "url": "/api/openchannel/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "get",
    "url": "/api/openchannel/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "get",
    "url": "/api/openchannel/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "put",
    "url": "/api/openchannel/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "put",
    "url": "/api/openchannel/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "put",
    "url": "/api/openchannel/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "post",
    "url": "/api/openchannel/reports/queue",
    "title": "Creates a new Openchannel Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/reports/queue/{id}",
    "title": "Deletes a Openchannel Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/queue/describe",
    "title": "Gets table info about Openchannel Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/queue",
    "title": "Gets a list of Openchannel Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/queue/{id}",
    "title": "Gets a single Openchannel Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/openchannel/reports/queue/{id}",
    "title": "Update an existing Openchannel Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/openchannel/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "post",
    "url": "/api/openchannel/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "post",
    "url": "/api/openchannel/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Openchannel_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": true,
            "field": "strategy",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "put",
    "url": "/api/openchannel/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "post",
    "url": "/api/openchannel/reports/transfer",
    "title": "Creates a new Openchannel Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/reports/transfer/{id}",
    "title": "Deletes a Openchannel Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/transfer/describe",
    "title": "Gets table info about Openchannel Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/transfer",
    "title": "Gets a list of Openchannel Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/transfer/{id}",
    "title": "Gets a single Openchannel Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/openchannel/reports/transfer/{id}",
    "title": "Update an existing Openchannel Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "post",
    "url": "/api/pauses",
    "title": "Creates a new Pause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pauses -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreatePauses",
    "group": "Pauses",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pause/index.js",
    "groupTitle": "Pauses"
  },
  {
    "type": "delete",
    "url": "/api/pauses/{id}",
    "title": "Deletes a Pause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pauses/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeletePauses",
    "group": "Pauses",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pause/index.js",
    "groupTitle": "Pauses"
  },
  {
    "type": "get",
    "url": "/api/pauses",
    "title": "Gets a list of Pauses",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pauses -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetPauses",
    "group": "Pauses",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/pauses?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/pauses?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/pauses?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/pauses?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/pauses?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/pause/index.js",
    "groupTitle": "Pauses"
  },
  {
    "type": "get",
    "url": "/api/pauses/{id}",
    "title": "Gets a single Pause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pauses/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowPauses",
    "group": "Pauses",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pause/index.js",
    "groupTitle": "Pauses"
  },
  {
    "type": "put",
    "url": "/api/pauses/{id}",
    "title": "Update an existing Pause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pauses/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updatePauses",
    "group": "Pauses",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pause/index.js",
    "groupTitle": "Pauses"
  },
  {
    "type": "get",
    "url": "/api/plugins",
    "title": "Gets a list of Plugins",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetPlugins",
    "group": "Plugins",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/plugins?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/plugins?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/plugins?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/plugins?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/plugins?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "get",
    "url": "/api/plugins/{id}",
    "title": "Gets a single Plugin",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowPlugins",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "delete",
    "url": "/api/plugins/{id}",
    "title": "Delete a plugin",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroyPlugin",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "get",
    "url": "/api/plugins/{id}/download",
    "title": "Download plugin source code",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "put",
    "url": "/api/plugins/{id}",
    "title": "Update an existing plugin",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updatePlugin",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "post",
    "url": "/api/plugins",
    "title": "Upload new plugin",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "uploadPlugin",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "get",
    "url": "/api/plugins/webhook?hostname={host}&port={port}&encoding={encoding}&json={json}&path={path}",
    "title": "Redirect a plugin request to the specified path",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/webhook?port={port}&path={path} -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "webhookPlugin",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "post",
    "url": "/api/plugins/webhook?hostname={host}&port={port}&encoding={encoding}&json={json}&path={path}",
    "title": "Redirect a plugin request to the specified path",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/webhook?port={port}&path={path} -H 'Content-Type: application/json' -X POST",
        "type": "json"
      }
    ],
    "name": "webhookPlugin",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "delete",
    "url": "/api/pm2/{id}",
    "title": "Deletes an existing process",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pm2/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeletePm2Process",
    "group": "Pm2",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pm2/index.js",
    "groupTitle": "Pm2"
  },
  {
    "type": "get",
    "url": "/api/pm2/{id}",
    "title": "Gets a single pm2 process",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pm2/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetPm2Process",
    "group": "Pm2",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pm2/index.js",
    "groupTitle": "Pm2"
  },
  {
    "type": "get",
    "url": "/api/pm2",
    "title": "Gets pm2 processes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pm2 -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetPm2Processes",
    "group": "Pm2",
    "description": "<p>Motion returns the pm2 processes list.</p>",
    "version": "0.0.0",
    "filename": "server/api/pm2/index.js",
    "groupTitle": "Pm2"
  },
  {
    "type": "post",
    "url": "/api/pm2",
    "title": "Start a single pm2 process",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pm2 -d '{\"name\": \"process_name\", \"script\": \"/index.js\"}'\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "StartPm2Process",
    "group": "Pm2",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "script",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pm2/index.js",
    "groupTitle": "Pm2"
  },
  {
    "type": "put",
    "url": "/api/pm2/{id}",
    "title": "Update an existing process",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pm2/{id} -d '{\"status\": \"online\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "UpdatePm2Process",
    "group": "Pm2",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pm2/index.js",
    "groupTitle": "Pm2"
  },
  {
    "type": "get",
    "url": "/api/rpc/campaigns/",
    "title": "Gets a list of campaigns",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/campaigns -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "Campaigns",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime campaigns parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/fax/accounts",
    "title": "Gets a list of FaxAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/fax/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "FaxAccounts",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime fax account parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "put",
    "url": "/api/rpc/agents/:id/capacity",
    "title": "Sets agent capacity",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/agents/:id/capacity -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTAgentCapacity",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return the current agent capacity.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/agents",
    "title": "Gets a list of RTAgents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/agents -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTAgents",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime agents parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/chat/queues",
    "title": "Gets a list of RTChatQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/chat/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTChatQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime chat queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/fax/queues",
    "title": "Gets a list of RTFaxQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/fax/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTFaxQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime fax queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/mail/accounts",
    "title": "Gets a list of RTMailAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/mail/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTMailAccounts",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime mail account parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/mail/queues",
    "title": "Gets a list of RTMailQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/mail/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTMailQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime mail queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/openchannel/queues",
    "title": "Gets a list of RTOpenchannelQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/openchannel/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTOpenchannelQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime openchannel queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/outbound/channels",
    "title": "Gets a list of RTOutboundChannels",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/outbound/channels -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTOutboundChannels",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime outbound channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/sms/queues",
    "title": "Gets a list of RTSmsQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/sms/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTSmsQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime sms queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/telephones",
    "title": "Gets a list of RTTelephones",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/telephones -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTTelephones",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of telephones parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/trunks",
    "title": "Gets a list of RTTrunks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/trunks -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTTrunks",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime trunks parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/channels",
    "title": "Gets a list of RTVoiceChannelMixMonitor",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/channels/{uniqueid}/mixmonitor -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceChannelMixMonitor",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime voice channel mixmonitor.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/channels",
    "title": "Gets a list of RTVoiceChannelStopMixMonitor",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/channels/{uniqueid}/stopmixmonitor -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceChannelStopMixMonitor",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime voice channel stopmixmonitor.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/channels",
    "title": "Gets a list of RTVoiceChannels",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/channels -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceChannels",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime voice channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/channels/{uniqueid}",
    "title": "Gets a single RTVoiceQueueChannel",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueueChannel",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a specific realtime voice queue channel.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/channels/{uniqueid}/hangup",
    "title": "Hangup a single RTVoiceQueueChannel",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid}/hangup -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueueChannelHangup",
    "group": "RPC_Realtime",
    "description": "<p>Motion will hangup a specific realtime voice queue channel.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/channels/{uniqueid}/redirect/{exten}",
    "title": "Hangup a single RTVoiceQueueChannel",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid}/redirect/{exten} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueueChannelRedirect",
    "group": "RPC_Realtime",
    "description": "<p>Motion will redirect a specific realtime voice queue channel to a specific extension.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/preview/{id}",
    "title": "Gets a single preview contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/preview/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueuePreview",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a specific preview contact.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues",
    "title": "Gets a list of RTVoiceQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/outbound",
    "title": "Gets a list of RTOutbound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/channels",
    "title": "Gets a list of RTVoiceQueuesChannels",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/channels -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueuesChannels",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime voice queues channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/chat/queues/{id}",
    "title": "Gets a single RTChatQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/chat/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTChatQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/fax/queues/{id}",
    "title": "Gets a single RTFaxQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/fax/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTFaxQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/mail/queues/{id}",
    "title": "Gets a single RTMailQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/mail/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTMailQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/openchannel/queues/{id}",
    "title": "Gets a single RTOpenchannelQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/openchannel/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTOpenchannelQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/sms/queues/{id}",
    "title": "Gets a single RTSmsQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/sms/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTSmsQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/{id}",
    "title": "Gets a single RTVoiceQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTVoiceQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/agents/:id/notify",
    "title": "Notify message to a specific agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/agents/:id/notify -d '{\"messageId\": \"5080\", \"channel\": \"mail\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "agentNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific agent.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/chat/queues/:id/notify",
    "title": "Notify message to a specific queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/chat/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "chatQueueNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/chat/queues/waitinginteractions",
    "title": "Gets a list of chatQueuesWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/chat/queues/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "chatQueuesWaitingInteractions",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime waiting chat queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/fax/queues/:id/notify",
    "title": "Notify message to a specific queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/fax/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "faxQueueNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/fax/queues/waitinginteractions",
    "title": "Gets a list of faxQueuesWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/fax/queues/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "faxQueuesWaitingInteractions",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime waiting fax queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/mail/queues/:id/notify",
    "title": "Notify message to a specific queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/mail/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "mailQueueNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/mail/queues/waitinginteractions",
    "title": "Gets a list of mailQueuesWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/mail/queues/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "mailQueuesWaitingInteractions",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime waiting mail queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/openchannel/queues/:id/notify",
    "title": "Notify message to a specific queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/openchannel/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "openchannelQueueNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/openchannel/queues/waitinginteractions",
    "title": "Gets a list of openchannelQueuesWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/openchannel/queues/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "openchannelQueuesWaitingInteractions",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime waiting openchannel queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/sms/queues/:id/notify",
    "title": "Notify message to a specific queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/sms/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "smsQueueNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/sms/queues/waitinginteractions",
    "title": "Gets a list of smsQueuesWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/sms/queues/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "smsQueuesWaitingInteractions",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime waiting sms queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/integrations/salesforce/accounts",
    "title": "Creates a new Salesforce Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSalesforce_Accounts",
    "group": "Salesforce_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientSecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "securityToken",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"integrationTab\"",
              "\"newTab\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/salesforce/accounts/{id}",
    "title": "Deletes a Salesforce Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSalesforce_Accounts",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/accounts",
    "title": "Gets a list of Salesforce Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSalesforce_Accounts",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/accounts/{id}",
    "title": "Gets a single Salesforce Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSalesforce_Accounts",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/salesforce/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/salesforce/accounts/{id}",
    "title": "Update an existing Salesforce Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSalesforce_Accounts",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/salesforce/configurations",
    "title": "Creates a new Salesforce Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSalesforce_Configurations",
    "group": "Salesforce_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"Task\"",
              "\"Case\""
            ],
            "optional": true,
            "field": "ticketType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"contact_lead\"",
              "\"contact\"",
              "\"lead\""
            ],
            "optional": true,
            "field": "moduleSearch",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"nothing\"",
              "\"contact\"",
              "\"lead\""
            ],
            "optional": true,
            "field": "moduleCreate",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/salesforce/configurations/{id}",
    "title": "Deletes a Salesforce Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSalesforce_Configurations",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/configurations",
    "title": "Gets a list of Salesforce Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSalesforce_Configurations",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/configurations/{id}",
    "title": "Gets a single Salesforce Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSalesforce_Configurations",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/salesforce/configurations/{id}",
    "title": "Update an existing Salesforce Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSalesforce_Configurations",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/salesforce/fields",
    "title": "Creates a new Salesforce Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSalesforce_Fields",
    "group": "Salesforce_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceField/index.js",
    "groupTitle": "Salesforce_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/salesforce/fields/{id}",
    "title": "Deletes a Salesforce Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSalesforce_Fields",
    "group": "Salesforce_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceField/index.js",
    "groupTitle": "Salesforce_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/fields",
    "title": "Gets a list of Salesforce Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSalesforce_Fields",
    "group": "Salesforce_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceField/index.js",
    "groupTitle": "Salesforce_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/fields/{id}",
    "title": "Gets a single Salesforce Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSalesforce_Fields",
    "group": "Salesforce_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceField/index.js",
    "groupTitle": "Salesforce_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/salesforce/fields/{id}",
    "title": "Update an existing Salesforce Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSalesforce_Fields",
    "group": "Salesforce_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceField/index.js",
    "groupTitle": "Salesforce_Fields"
  },
  {
    "type": "post",
    "url": "/api/schedules",
    "title": "Creates a new Schedule",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSchedules",
    "group": "Schedules",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": false,
            "field": "active",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "cron",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "startAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "endAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "subtractNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"years\"",
              "\"quarters\"",
              "\"months\"",
              "\"weeks\"",
              "\"days\"",
              "\"hours\"",
              "\"minutes\""
            ],
            "optional": false,
            "field": "subtractUnit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"csv\"",
              "\"pdf\"",
              "\"xlsx\""
            ],
            "optional": false,
            "field": "output",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"custom\"",
              "\"default\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "sendMail",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "cc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "bcc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "sendIfEmpty",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "delete",
    "url": "/api/schedules/{id}",
    "title": "Deletes a Schedule",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSchedules",
    "group": "Schedules",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "get",
    "url": "/api/schedules",
    "title": "Gets a list of Schedules",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSchedules",
    "group": "Schedules",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/schedules?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/schedules?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/schedules?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/schedules?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/schedules?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "get",
    "url": "/api/schedules/{id}",
    "title": "Gets a single Schedule",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSchedules",
    "group": "Schedules",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "get",
    "url": "/api/schedules/{id}/run",
    "title": "Run Scheduler",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules/{id}/run -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "run",
    "group": "Schedules",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "put",
    "url": "/api/schedules/{id}",
    "title": "Update an existing Schedule",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSchedules",
    "group": "Schedules",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "post",
    "url": "/api/screen/recordings",
    "title": "Creates a new Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateRecordings",
    "group": "Screen_Recordings",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "format",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interactionid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rating",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "duration",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "startedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "createdAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "updatedAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "get",
    "url": "/api/screen/recordings/describe",
    "title": "Gets table info about Recordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeRecordings",
    "group": "Screen_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "get",
    "url": "/api/screen/recordings",
    "title": "Gets a list of Recordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetRecordings",
    "group": "Screen_Recordings",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/screen/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/screen/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/screen/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/screen/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/screen/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "get",
    "url": "/api/screen/recordings/{id}",
    "title": "Gets a single Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRecordings",
    "group": "Screen_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "delete",
    "url": "/api/screen/recordings/{id}",
    "title": "Delete screen recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroy",
    "group": "Screen_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "get",
    "url": "/api/screen/recordings/{id}/download",
    "title": "Download Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Screen_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "put",
    "url": "/api/screen/recordings/{id}",
    "title": "Update an existing Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateRecordings",
    "group": "Screen_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "post",
    "url": "/api/integrations/servicenow/accounts",
    "title": "Creates a new Servicenow Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateServicenow_Accounts",
    "group": "Servicenow_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/servicenow/accounts/{id}",
    "title": "Deletes a Servicenow Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteServicenow_Accounts",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/accounts",
    "title": "Gets a list of Servicenow Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetServicenow_Accounts",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/accounts/{id}",
    "title": "Gets a single Servicenow Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowServicenow_Accounts",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/servicenow/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/servicenow/accounts/{id}",
    "title": "Update an existing Servicenow Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateServicenow_Accounts",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/servicenow/configurations",
    "title": "Creates a new Servicenow Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateServicenow_Configurations",
    "group": "Servicenow_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/servicenow/configurations/{id}",
    "title": "Deletes a Servicenow Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteServicenow_Configurations",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/configurations",
    "title": "Gets a list of Servicenow Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetServicenow_Configurations",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/configurations/{id}",
    "title": "Gets a single Servicenow Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowServicenow_Configurations",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/servicenow/configurations/{id}",
    "title": "Update an existing Servicenow Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateServicenow_Configurations",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/servicenow/fields",
    "title": "Creates a new Servicenow Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateServicenow_Fields",
    "group": "Servicenow_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowField/index.js",
    "groupTitle": "Servicenow_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/servicenow/fields/{id}",
    "title": "Deletes a Servicenow Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteServicenow_Fields",
    "group": "Servicenow_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowField/index.js",
    "groupTitle": "Servicenow_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/fields",
    "title": "Gets a list of Servicenow Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetServicenow_Fields",
    "group": "Servicenow_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowField/index.js",
    "groupTitle": "Servicenow_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/fields/{id}",
    "title": "Gets a single Servicenow Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowServicenow_Fields",
    "group": "Servicenow_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowField/index.js",
    "groupTitle": "Servicenow_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/servicenow/fields/{id}",
    "title": "Update an existing Servicenow Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateServicenow_Fields",
    "group": "Servicenow_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowField/index.js",
    "groupTitle": "Servicenow_Fields"
  },
  {
    "type": "get",
    "url": "/api/settings",
    "title": "Gets a list of Settings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSettings",
    "group": "Settings",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/settings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/settings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/settings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/settings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/settings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}",
    "title": "Gets a single Setting",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSettings",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "post",
    "url": "/api/settings/{id}/favicon",
    "title": "Add Favicon",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/favicon -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addFavicon",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "post",
    "url": "/api/settings/{id}/logo",
    "title": "Add logo",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/logo -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addLogo",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "post",
    "url": "/api/settings/{id}/logo_login",
    "title": "Add logo login",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/logo_login -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addLogoLogin",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "post",
    "url": "/api/settings/{id}/preferred",
    "title": "Add Preferred",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/preferred -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addPreferred",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}/favicon",
    "title": "Get Favicon",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/favicon -v -X GET",
        "type": "json"
      }
    ],
    "name": "getFavicon",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}/gdpr",
    "title": "Get gdpr settings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/gdpr -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getGdpr",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}/logo",
    "title": "Get logo",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/logo -v -X GET",
        "type": "json"
      }
    ],
    "name": "getLogo",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}/logo_login",
    "title": "Get logo login",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/logo_login -v -X GET",
        "type": "json"
      }
    ],
    "name": "getLogoLogin",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}/preferred",
    "title": "Get Preferred",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/preferred -v -X GET",
        "type": "json"
      }
    ],
    "name": "getPreferred",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "put",
    "url": "/api/settings/{id}",
    "title": "Update an existing Setting",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSettings",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/users",
    "title": "Add agents to a sms account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts",
    "title": "Creates a new Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAccounts",
    "group": "Sms_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "remote",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"twilio\"",
              "\"skebby\"",
              "\"connectel\"",
              "\"clicksend\"",
              "\"plivo\"",
              "\"clickatell\"",
              "\"csc\"",
              "\"infobip\"",
              "\"intelepeer\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountSid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "authId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "authToken",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"SI\"",
              "\"TI\"",
              "\"GP\""
            ],
            "optional": true,
            "field": "smsMethod",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "apiKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "senderString",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "deliveryReport",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notificationTemplate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationSound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationShake",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "waitForTheAssignedAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "queueTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "queueTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "agentTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "baseUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/sms/accounts/{id}",
    "title": "Deletes a Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAccounts",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/describe",
    "title": "Gets table info about Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAccounts",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts",
    "title": "Gets a list of Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAccounts",
    "group": "Sms_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/users",
    "title": "Gets agents from sms account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/sms/accounts/{id}/users",
    "title": "Removes agents from a sms account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/sms/accounts/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/sms/accounts/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}",
    "title": "Gets a single Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAccounts",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "put",
    "url": "/api/sms/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Sms_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Sms_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Sms_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/applications",
    "title": "Gets account applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/interactions",
    "title": "Gets Sms Account interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getInteractions",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/notify",
    "title": "Notify new message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "notify",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new sms message to be sent to the system.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "put",
    "url": "/api/sms/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/send",
    "title": "Send new sms message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/send -d '{from: '+39333123456', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "sendSms",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/messages/{id}/status",
    "title": "Receive message status",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
        "type": "json"
      }
    ],
    "name": "statusMessage",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/status",
    "title": "Receive message status",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
        "type": "json"
      }
    ],
    "name": "statusMessage",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/status",
    "title": "Receive message status as get request",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
        "type": "json"
      }
    ],
    "name": "statusMessage",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "put",
    "url": "/api/sms/accounts/{id}",
    "title": "Update an existing Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAccounts",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/applications",
    "title": "Creates a new Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateApplications",
    "group": "Sms_Applications",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsApplication/index.js",
    "groupTitle": "Sms_Applications"
  },
  {
    "type": "delete",
    "url": "/api/sms/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Sms_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsApplication/index.js",
    "groupTitle": "Sms_Applications"
  },
  {
    "type": "get",
    "url": "/api/sms/applications",
    "title": "Gets a list of Applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/applications -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetApplications",
    "group": "Sms_Applications",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsApplication/index.js",
    "groupTitle": "Sms_Applications"
  },
  {
    "type": "get",
    "url": "/api/sms/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Sms_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsApplication/index.js",
    "groupTitle": "Sms_Applications"
  },
  {
    "type": "put",
    "url": "/api/sms/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Sms_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsApplication/index.js",
    "groupTitle": "Sms_Applications"
  },
  {
    "type": "post",
    "url": "/api/sms/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "post",
    "url": "/api/sms/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Sms_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/sms/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "get",
    "url": "/api/sms/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "get",
    "url": "/api/sms/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Sms_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/sms/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "get",
    "url": "/api/sms/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "post",
    "url": "/api/sms/interactions/{id}/messages",
    "title": "Creates new messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Sms_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "get",
    "url": "/api/sms/interactions/{id}/download",
    "title": "Gets interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "get",
    "url": "/api/sms/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "put",
    "url": "/api/sms/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "post",
    "url": "/api/sms/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Sms_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "delete",
    "url": "/api/sms/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Sms_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "get",
    "url": "/api/sms/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Sms_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "get",
    "url": "/api/sms/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Sms_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "get",
    "url": "/api/sms/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Sms_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "put",
    "url": "/api/sms/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Sms_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "post",
    "url": "/api/sms/reports/queue",
    "title": "Creates a new Sms Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/sms/reports/queue/{id}",
    "title": "Deletes a Sms Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/queue/describe",
    "title": "Gets table info about Sms Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/queue",
    "title": "Gets a list of Sms Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/queue/{id}",
    "title": "Gets a single Sms Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/sms/reports/queue/{id}",
    "title": "Update an existing Sms Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/sms/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "post",
    "url": "/api/sms/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "post",
    "url": "/api/sms/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Sms_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": true,
            "field": "strategy",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "delete",
    "url": "/api/sms/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Sms_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "delete",
    "url": "/api/sms/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "put",
    "url": "/api/sms/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "post",
    "url": "/api/sms/reports/transfer",
    "title": "Creates a new Sms Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/sms/reports/transfer/{id}",
    "title": "Deletes a Sms Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/transfer/describe",
    "title": "Gets table info about Sms Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/transfer",
    "title": "Gets a list of Sms Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/transfer/{id}",
    "title": "Gets a single Sms Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/sms/reports/transfer/{id}",
    "title": "Update an existing Sms Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/sounds",
    "title": "Gets a list of Sounds",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSounds",
    "group": "Sounds",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sounds?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sounds?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sounds?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sounds?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sounds?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "get",
    "url": "/api/sounds/{id}",
    "title": "Gets a single Sound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSounds",
    "group": "Sounds",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "post",
    "url": "/api/sounds",
    "title": "Create a new sound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addSound",
    "group": "Sounds",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "delete",
    "url": "/api/sounds/{id}",
    "title": "Deletes a sound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroySound",
    "group": "Sounds",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "get",
    "url": "/api/sounds/{id}/download",
    "title": "Download Sound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Sounds",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "put",
    "url": "/api/sounds",
    "title": "Update an existing new sound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds -d '[\"name\": \"sound_name\", \"description\": \"sound_desc\"]' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSound",
    "group": "Sounds",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "post",
    "url": "/api/square/details/reports",
    "title": "Creates a new Square Detail Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "node",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "application",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "data",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "project_name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "delete",
    "url": "/api/square/details/reports/{id}",
    "title": "Deletes a Square Detail Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/details/reports/describe",
    "title": "Gets table info about Square Detail Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/details/reports",
    "title": "Gets a list of Square Detail Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/details/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/details/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/details/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/details/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/details/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/details/reports/{id}",
    "title": "Gets a single Square Detail Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "put",
    "url": "/api/square/details/reports/{id}",
    "title": "Update an existing Square Detail Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "post",
    "url": "/api/square/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Square_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareMessage/index.js",
    "groupTitle": "Square_Messages"
  },
  {
    "type": "delete",
    "url": "/api/square/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Square_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareMessage/index.js",
    "groupTitle": "Square_Messages"
  },
  {
    "type": "get",
    "url": "/api/square/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Square_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareMessage/index.js",
    "groupTitle": "Square_Messages"
  },
  {
    "type": "get",
    "url": "/api/square/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Square_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareMessage/index.js",
    "groupTitle": "Square_Messages"
  },
  {
    "type": "put",
    "url": "/api/square/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Square_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareMessage/index.js",
    "groupTitle": "Square_Messages"
  },
  {
    "type": "post",
    "url": "/api/square/odbc",
    "title": "Creates a new ODBC",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateODBCs",
    "group": "Square_ODBC",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dsn",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "delete",
    "url": "/api/square/odbc/{id}",
    "title": "Deletes a ODBC",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteODBCs",
    "group": "Square_ODBC",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "get",
    "url": "/api/square/odbc",
    "title": "Gets a list of ODBCs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetODBCs",
    "group": "Square_ODBC",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/odbc?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/odbc?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/odbc?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/odbc?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/odbc?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "get",
    "url": "/api/square/odbc/{id}",
    "title": "Gets a single ODBC",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowODBCs",
    "group": "Square_ODBC",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "get",
    "url": "/api/square/odbc/{id}/test",
    "title": "Test Odbc",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc/{id}/test -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "test",
    "group": "Square_ODBC",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "put",
    "url": "/api/square/odbc/{id}",
    "title": "Update an existing ODBC",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateODBCs",
    "group": "Square_ODBC",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "post",
    "url": "/api/square/projects",
    "title": "Creates a new Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateProjects",
    "group": "Square_Projects",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notes",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Blob",
            "optional": true,
            "field": "preproduction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Blob",
            "optional": true,
            "field": "production",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "delete",
    "url": "/api/square/projects/{id}",
    "title": "Deletes a Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteProjects",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "get",
    "url": "/api/square/projects",
    "title": "Gets a list of Projects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetProjects",
    "group": "Square_Projects",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/projects?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/projects?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/projects?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/projects?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/projects?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "get",
    "url": "/api/square/projects/{id}",
    "title": "Gets a single Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowProjects",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "post",
    "url": "/api/square/projects/{id}/users",
    "title": "Adds user permissions to a Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addUsers",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "get",
    "url": "/api/square/projects/{id}/users",
    "title": "Gets users permissions from Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getUsers",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "delete",
    "url": "/api/square/projects/{id}/users",
    "title": "Removes user permissions from a Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "removeUsers",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "put",
    "url": "/api/square/projects/{id}",
    "title": "Update an existing Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateProjects",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "post",
    "url": "/api/square/recordings",
    "title": "Creates a new Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateRecordings",
    "group": "Square_Recordings",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "extension",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dnid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "projectName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "saveName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "filename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "savePath",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "format",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "get",
    "url": "/api/square/recordings",
    "title": "Gets a list of Recordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetRecordings",
    "group": "Square_Recordings",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "get",
    "url": "/api/square/recordings/{id}",
    "title": "Gets a single Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRecordings",
    "group": "Square_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "delete",
    "url": "/api/square/recordings/{id}/delete",
    "title": "Delete recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings/{id}/delete -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroy",
    "group": "Square_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "get",
    "url": "/api/square/recordings/{id}/download",
    "title": "Download Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Square_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "put",
    "url": "/api/square/recordings/{id}",
    "title": "Update an existing Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateRecordings",
    "group": "Square_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "post",
    "url": "/api/square/reports",
    "title": "Creates a new Square Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSquare_Reports",
    "group": "Square_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "network",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "network_script",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "request",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "language",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "version",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callingpres",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callingani2",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callington",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callingtns",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dnid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "rdnis",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "extension",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "enhanced",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "threadid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "project_name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "bot",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "delete",
    "url": "/api/square/reports/{id}",
    "title": "Deletes a Square Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSquare_Reports",
    "group": "Square_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/reports/describe",
    "title": "Gets table info about Square Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeSquare_Reports",
    "group": "Square_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/reports",
    "title": "Gets a list of Square Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSquare_Reports",
    "group": "Square_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/reports/{id}",
    "title": "Gets a single Square Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSquare_Reports",
    "group": "Square_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "put",
    "url": "/api/square/reports/{id}",
    "title": "Update an existing Square Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSquare_Reports",
    "group": "Square_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "post",
    "url": "/api/integrations/sugarcrm/configurations",
    "title": "Creates a new SugarCRM Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSugarCRM_Configurations",
    "group": "SugarCRM_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "SugarCRM_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/sugarcrm/configurations/{id}",
    "title": "Deletes a SugarCRM Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSugarCRM_Configurations",
    "group": "SugarCRM_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "SugarCRM_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/configurations",
    "title": "Gets a list of SugarCRM Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSugarCRM_Configurations",
    "group": "SugarCRM_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "SugarCRM_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/configurations/{id}",
    "title": "Gets a single SugarCRM Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSugarCRM_Configurations",
    "group": "SugarCRM_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "SugarCRM_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/sugarcrm/configurations/{id}",
    "title": "Update an existing SugarCRM Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSugarCRM_Configurations",
    "group": "SugarCRM_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "SugarCRM_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/sugarcrm/accounts",
    "title": "Creates a new Sugarcrm Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSugarcrm_Accounts",
    "group": "Sugarcrm_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/sugarcrm/accounts/{id}",
    "title": "Deletes a Sugarcrm Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSugarcrm_Accounts",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/accounts",
    "title": "Gets a list of Sugarcrm Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSugarcrm_Accounts",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/accounts/{id}",
    "title": "Gets a single Sugarcrm Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSugarcrm_Accounts",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/sugarcrm/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/sugarcrm/accounts/{id}",
    "title": "Update an existing Sugarcrm Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSugarcrm_Accounts",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Sugarcrm_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "Sugarcrm_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Sugarcrm_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "Sugarcrm_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Sugarcrm_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "Sugarcrm_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/sugarcrm/fields",
    "title": "Creates a new Sugarcrm Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSugarcrm_Fields",
    "group": "Sugarcrm_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmField/index.js",
    "groupTitle": "Sugarcrm_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/sugarcrm/fields/{id}",
    "title": "Deletes a Sugarcrm Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSugarcrm_Fields",
    "group": "Sugarcrm_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmField/index.js",
    "groupTitle": "Sugarcrm_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/fields",
    "title": "Gets a list of Sugarcrm Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSugarcrm_Fields",
    "group": "Sugarcrm_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmField/index.js",
    "groupTitle": "Sugarcrm_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/fields/{id}",
    "title": "Gets a single Sugarcrm Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSugarcrm_Fields",
    "group": "Sugarcrm_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmField/index.js",
    "groupTitle": "Sugarcrm_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/sugarcrm/fields/{id}",
    "title": "Update an existing Sugarcrm Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSugarcrm_Fields",
    "group": "Sugarcrm_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmField/index.js",
    "groupTitle": "Sugarcrm_Fields"
  },
  {
    "type": "get",
    "url": "/api/system/process",
    "title": "Gets system information",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/system -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSystemInformation",
    "group": "System_Information",
    "description": "<p>Motion returns the system information.</p>",
    "version": "0.0.0",
    "filename": "server/api/system/index.js",
    "groupTitle": "System_Information"
  },
  {
    "type": "get",
    "url": "/api/system",
    "title": "Gets system information",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/system -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSystemInformation",
    "group": "System_Information",
    "description": "<p>Motion returns the system information.</p>",
    "version": "0.0.0",
    "filename": "server/api/system/index.js",
    "groupTitle": "System_Information"
  },
  {
    "type": "post",
    "url": "/api/tags",
    "title": "Creates a new Tag",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/tags -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateTags",
    "group": "Tags",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "color",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/tag/index.js",
    "groupTitle": "Tags"
  },
  {
    "type": "delete",
    "url": "/api/tags/{id}",
    "title": "Deletes a Tag",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/tags/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteTags",
    "group": "Tags",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/tag/index.js",
    "groupTitle": "Tags"
  },
  {
    "type": "get",
    "url": "/api/tags",
    "title": "Gets a list of Tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/tags -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTags",
    "group": "Tags",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/tags?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/tags?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/tags?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/tags?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/tags?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/tag/index.js",
    "groupTitle": "Tags"
  },
  {
    "type": "get",
    "url": "/api/tags/{id}",
    "title": "Gets a single Tag",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/tags/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTags",
    "group": "Tags",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/tag/index.js",
    "groupTitle": "Tags"
  },
  {
    "type": "put",
    "url": "/api/tags/{id}",
    "title": "Update an existing Tag",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/tags/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateTags",
    "group": "Tags",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/tag/index.js",
    "groupTitle": "Tags"
  },
  {
    "type": "post",
    "url": "/api/teams/{id}/queues",
    "title": "Add queues to a team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/queues -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddQueues",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "post",
    "url": "/api/teams",
    "title": "Creates a new Team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateTeams",
    "group": "Teams",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/teams/{id}",
    "title": "Deletes a Team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "get",
    "url": "/api/teams/{id}/users",
    "title": "Gets agents from team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "get",
    "url": "/api/teams/{id}/queues?channel={channel}",
    "title": "Gets Queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/queues?channel={channel} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "get",
    "url": "/api/teams",
    "title": "Gets a list of Teams",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Teams",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/teams?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/teams?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/teams?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/teams?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/teams?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/teams/{id}/users",
    "title": "Removes agents from a team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/teams/{id}/queues",
    "title": "Remove queues to a team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/queues?channel=voice&ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveQueues",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/chat/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/fax/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/sms/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/voice/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/mail/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "get",
    "url": "/api/teams/{id}",
    "title": "Gets a single Team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "post",
    "url": "/api/teams/{id}/users",
    "title": "Adds agents to a team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAgents",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "put",
    "url": "/api/teams/{id}",
    "title": "Update an existing Team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "post",
    "url": "/api/templates",
    "title": "Creates a new Template",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/templates -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateTemplates",
    "group": "Templates",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "html",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/template/index.js",
    "groupTitle": "Templates"
  },
  {
    "type": "delete",
    "url": "/api/templates/{id}",
    "title": "Deletes a Template",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/templates/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteTemplates",
    "group": "Templates",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/template/index.js",
    "groupTitle": "Templates"
  },
  {
    "type": "get",
    "url": "/api/templates",
    "title": "Gets a list of Templates",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/templates -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTemplates",
    "group": "Templates",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/templates?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/templates?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/templates?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/templates?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/templates?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/template/index.js",
    "groupTitle": "Templates"
  },
  {
    "type": "get",
    "url": "/api/templates/{id}",
    "title": "Gets a single Template",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/templates/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTemplates",
    "group": "Templates",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/template/index.js",
    "groupTitle": "Templates"
  },
  {
    "type": "put",
    "url": "/api/templates/{id}",
    "title": "Update an existing Template",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/templates/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateTemplates",
    "group": "Templates",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/template/index.js",
    "groupTitle": "Templates"
  },
  {
    "type": "post",
    "url": "/api/triggers",
    "title": "Creates a new Trigger",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateTriggers",
    "group": "Triggers",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "status",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "delete",
    "url": "/api/triggers/{id}",
    "title": "Deletes a Trigger",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteTriggers",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "get",
    "url": "/api/triggers",
    "title": "Gets a list of Triggers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTriggers",
    "group": "Triggers",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/triggers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/triggers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/triggers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/triggers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/triggers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "get",
    "url": "/api/triggers/{id}",
    "title": "Gets a single Trigger",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTriggers",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "post",
    "url": "/api/triggers/{id}/actions",
    "title": "Creates new actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/actions -d '{\"action\": \"contactManager\",\"data1\": \"1\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAction",
    "group": "Triggers",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "action",
            "description": "<p>Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser, bot, script</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data1",
            "description": "<p>contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data2",
            "description": "<p>integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data3",
            "description": "<p>motionbar[NULL,NULL,WinAppArguments]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data4",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data5",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data6",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "data7",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "post",
    "url": "/api/triggers/{id}/all_conditions",
    "title": "Creates a new \"AND\"condition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/all_conditions -d '{\"field\": \"name\", \"operator\": \"equal\", \"value\": \"John Doe\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAllCondition",
    "group": "Triggers",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "field",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "operator",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "value",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "post",
    "url": "/api/triggers/{id}/any_conditions",
    "title": "Creates a new \"OR\"condition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/any_conditions -d '{\"field\": \"name\", \"operator\": \"equal\", \"value\": \"John Doe\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnyCondition",
    "group": "Triggers",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "field",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "operator",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "value",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "get",
    "url": "/api/triggers/{id}/actions",
    "title": "Gets Trigger Actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/actions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getActions",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "get",
    "url": "/api/triggers/{id}/all_conditions",
    "title": "Gets \"AND\" Trigger Conditions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/all_conditions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAllConditions",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "get",
    "url": "/api/triggers/{id}/any_conditions",
    "title": "Gets \"OR\" Trigger Conditions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/any_conditions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnyConditions",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "put",
    "url": "/api/triggers/{id}",
    "title": "Update an existing Trigger",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateTriggers",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "post",
    "url": "/api/trunks/clone",
    "title": "Clone an existing Trunk",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneTrunks",
    "group": "Trunks",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "post",
    "url": "/api/trunks",
    "title": "Create a new trunk",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Trunks",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"friend\"",
              "\"user\"",
              "\"peer\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"ALLOWED_NOT_SCREENED\"",
              "\"ALLOWED_PASSED_SCREEN\"",
              "\"ALLOWED_FAILED_SCREEN\"",
              "\"ALLOWED\"",
              "\"PROHIB_NOT_SCREENED\"",
              "\"PROHIB_PASSED_SCREEN\"",
              "\"PROHIB_FAILED_SCREEN\"",
              "\"PROHIB\""
            ],
            "optional": true,
            "field": "callingpres",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "permit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "md5secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remotesecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transport",
            "description": "<p>String is deprecated. Please use an Array as [&quot;udp&quot;, &quot;tcp&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rfc2833\"",
              "\"info\"",
              "\"shortinfo\"",
              "\"inband\"",
              "\"auto\""
            ],
            "optional": true,
            "field": "dtmfmode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"nonat\"",
              "\"update\"",
              "\"outgoing\""
            ],
            "optional": true,
            "field": "directmedia",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "directrtpsetup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "directmediapermit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "directmediadeny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nat",
            "description": "<p>String is deprecated. Please use an Array as [&quot;force_rport&quot;, &quot;comedia&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "namedcallgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pickupgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "namedpickupgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "language",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tonezone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disallow",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "allow",
            "description": "<p>String is deprecated. Please use an Array as [&quot;ulaw&quot;, &quot;alaw&quot;, &quot;alaw&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "autoframing",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "insecure",
            "description": "<p>String is deprecated. Please use an Array as [&quot;port&quot;, &quot;invite&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "trustrpid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "trust_id_outbound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"never\""
            ],
            "optional": true,
            "field": "progressinband",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "promiscredir",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "useclientcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "setvar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "amaflags",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "callcounter",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "busylevel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowoverlap",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowsubscribe",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowtransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "ignoresdpversion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "subscribecontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "template",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"always\""
            ],
            "optional": true,
            "field": "videosupport",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "maxcallbitrate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "rfc2833compensate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"accept\"",
              "\"refuse\"",
              "\"originate\""
            ],
            "optional": true,
            "field": "session_timers",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "session_expires",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "session_minse",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"uac\"",
              "\"uas\""
            ],
            "optional": true,
            "field": "session_refresher",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "t38pt_usertpsource",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "regexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fromdomain",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fromuser",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "port",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "qualify",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "keepalive",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultip",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultuser",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtptimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtpholdtimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtpkeepalive",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"pai\""
            ],
            "optional": true,
            "field": "sendrpid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "outboundproxy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackextension",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timert1",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timerb",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "qualifyfreq",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactpermit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactdeny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactacl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "unsolicited_mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "use_q850_reason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "maxforwards",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "encryption",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "avpf",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "force_avp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "icesupport",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "dtlsenable",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"fingerprint\"",
              "\"certificate\""
            ],
            "optional": true,
            "field": "dtlsverify",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dtlsrekey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscertfile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlsprivatekey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscipher",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscafile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscapath",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"active\"",
              "\"passive\"",
              "\"actpass\""
            ],
            "optional": true,
            "field": "dtlssetup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlsfingerprint",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "usereqphone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "recordonfeature",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "recordofffeature",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "call_limit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "registertrying",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "subscribemwi",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "vmexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mohinterpret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mohsuggest",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "parkinglot",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"nonat\"",
              "\"update\"",
              "\"update,nonat\""
            ],
            "optional": true,
            "field": "canreinvite",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "registry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "otherFields",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": false,
            "field": "active",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "t38pt_udptl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "delete",
    "url": "/api/trunks/{id}",
    "title": "Deletes a trunk",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "Delete",
    "group": "Trunks",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "get",
    "url": "/api/trunks",
    "title": "Gets a list of Trunks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTrunks",
    "group": "Trunks",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/trunks?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/trunks?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/trunks?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/trunks?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/trunks?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "get",
    "url": "/api/trunks/{id}",
    "title": "Gets a single Trunk",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTrunks",
    "group": "Trunks",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "put",
    "url": "/api/trunks/{id}",
    "title": "Update an existing trunk",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Update",
    "group": "Trunks",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "post",
    "url": "/api/userProfile/resources",
    "title": "Creates a new User Profile Resource",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "resourceId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "type",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "delete",
    "url": "/api/userProfile/resources/{id}",
    "title": "Deletes a User Profile Resource",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "get",
    "url": "/api/userProfile/resources/describe",
    "title": "Gets table info about User Profile Resources",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "get",
    "url": "/api/userProfile/resources",
    "title": "Gets a list of User Profile Resources",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfile/resources?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfile/resources?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfile/resources?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfile/resources?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfile/resources?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "get",
    "url": "/api/userProfile/resources/{id}",
    "title": "Gets a single User Profile Resource",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "put",
    "url": "/api/userProfile/resources/{id}",
    "title": "Update an existing User Profile Resource",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "post",
    "url": "/api/userProfile/sections",
    "title": "Creates a new User Profile Section",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "category",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "sectionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enabled",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "autoAssociation",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "crudPermissions",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "delete",
    "url": "/api/userProfile/sections/{id}",
    "title": "Deletes a User Profile Section",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "get",
    "url": "/api/userProfile/sections/describe",
    "title": "Gets table info about User Profile Sections",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "get",
    "url": "/api/userProfile/sections",
    "title": "Gets a list of User Profile Sections",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfile/sections?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfile/sections?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfile/sections?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfile/sections?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfile/sections?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "get",
    "url": "/api/userProfile/sections/{id}",
    "title": "Gets a single User Profile Section",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "put",
    "url": "/api/userProfile/sections/{id}",
    "title": "Update an existing User Profile Section",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "post",
    "url": "/api/userProfiles/{id}/resources",
    "title": "Add resources' permissions to User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/resources -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddResources",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "post",
    "url": "/api/userProfiles/{id}/sections",
    "title": "Add sections' permissions to User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/sections -d '[{\"sectionId\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSections",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "post",
    "url": "/api/userProfiles/clone",
    "title": "Clone an existing User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "post",
    "url": "/api/userProfiles",
    "title": "Creates a new User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateUser_Profiles",
    "group": "User_Profiles",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "crudPermissions",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "delete",
    "url": "/api/userProfiles/{id}",
    "title": "Deletes a User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "get",
    "url": "/api/userProfiles/describe",
    "title": "Gets table info about User Profiles",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "get",
    "url": "/api/userProfiles/{id}/resources?section={section}",
    "title": "Get Resources assigned to a Section",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/resources?section={section} -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetResources",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "get",
    "url": "/api/userProfiles/{id}/sections",
    "title": "Get sections associated to a User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/sections -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetSections",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "get",
    "url": "/api/userProfiles",
    "title": "Gets a list of User Profiles",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfiles?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfiles?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfiles?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfiles?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfiles?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "delete",
    "url": "/api/userProfiles/{id}/resources",
    "title": "Removes resources' permissions from User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/resources?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveResources",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "delete",
    "url": "/api/userProfiles/{id}/sections",
    "title": "Removes sections' permissions from User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/sections?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSections",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "get",
    "url": "/api/userProfiles/{id}",
    "title": "Gets a single User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "put",
    "url": "/api/userProfiles/{id}",
    "title": "Update an existing User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/chat_interactions",
    "title": "Add chat interaction tabs to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddChatInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/chat_websites",
    "title": "Add a Chat Website to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat_websites -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddChatWebsites",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/contacts",
    "title": "Add contacts to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/contacts -d '{\"ids\": [1,2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddContacts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/fax_accounts",
    "title": "Add a Fax Account to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddFaxAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/fax_interactions",
    "title": "Add fax interaction tabs to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddFaxInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/mail_accounts",
    "title": "Add a Mail Account to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddMailAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/mail_interactions",
    "title": "Add mail interaction tabs to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddMailInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/openchannel_accounts",
    "title": "Add a Open Channel Account to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddOpenchannelAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/openchannel_interactions",
    "title": "Add openchannel interaction tabs to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddOpenchannelInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/queues",
    "title": "Add queues to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/queues -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddQueues",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/sms_accounts",
    "title": "Add a Sms Account to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSmsAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/sms_interactions",
    "title": "Add sms interaction tabs to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSmsInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/square_projects",
    "title": "Add a Square Project to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/square_projects -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSquareProjects",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/teams",
    "title": "Add teams to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/create_many",
    "title": "Creates many Users",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "BulkCreateUsers",
    "group": "Users",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": "<p>The name of the user</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "fullname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "alias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"admin\"",
              "\"user\"",
              "\"agent\"",
              "\"telephone\""
            ],
            "optional": false,
            "field": "role",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "provider",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "internal",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "salt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mobile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "address",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "zipcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "userpic",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "city",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "country",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "online",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastLoginAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "voicePause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "chatPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mailPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "faxPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "smsPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "openchannelPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pauseType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastPauseAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "chatCapacity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mailCapacity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "faxCapacity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "smsCapacity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "openchannelCapacity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarAutoAnswer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableSettings",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "phoneBarListenPort",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "phoneBarExpires",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarRemoteControl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "phoneBarRemoteControlPort",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableRecording",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarRingInUse",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "chanspy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "ipaddr",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "port",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "regseconds",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fullcontact",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "regserver",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "useragent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "lastms",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"friend\"",
              "\"user\"",
              "\"peer\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"ALLOWED_NOT_SCREENED\"",
              "\"ALLOWED_PASSED_SCREEN\"",
              "\"ALLOWED_FAILED_SCREEN\"",
              "\"ALLOWED\"",
              "\"PROHIB_NOT_SCREENED\"",
              "\"PROHIB_PASSED_SCREEN\"",
              "\"PROHIB_FAILED_SCREEN\"",
              "\"PROHIB\""
            ],
            "optional": true,
            "field": "callingpres",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "permit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "md5secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remotesecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transport",
            "description": "<p>String is deprecated. Please use an Array as [&quot;udp&quot;, &quot;tcp&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rfc2833\"",
              "\"info\"",
              "\"shortinfo\"",
              "\"inband\"",
              "\"auto\""
            ],
            "optional": true,
            "field": "dtmfmode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"nonat\"",
              "\"update\"",
              "\"outgoing\""
            ],
            "optional": true,
            "field": "directmedia",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "directrtpsetup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "directmediapermit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "directmediadeny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nat",
            "description": "<p>String is deprecated. Please use an Array as [&quot;force_rport&quot;, &quot;comedia&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "namedcallgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pickupgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "namedpickupgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "language",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tonezone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "disallow",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "allow",
            "description": "<p>String is deprecated. Please use an Array as [&quot;ulaw&quot;, &quot;alaw&quot;, &quot;gsm&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "autoframing",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "insecure",
            "description": "<p>String is deprecated. Please use an Array as [&quot;port&quot;, &quot;invite&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "trustrpid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "trust_id_outbound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"never\""
            ],
            "optional": true,
            "field": "progressinband",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "promiscredir",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "useclientcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "setvar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "amaflags",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "callcounter",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "busylevel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowoverlap",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowsubscribe",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowtransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "ignoresdpversion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "subscribecontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "template",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"always\""
            ],
            "optional": true,
            "field": "videosupport",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "maxcallbitrate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "rfc2833compensate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"accept\"",
              "\"refuse\"",
              "\"originate\""
            ],
            "optional": true,
            "field": "session_timers",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "session_expires",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "session_minse",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"uac\"",
              "\"uas\""
            ],
            "optional": true,
            "field": "session_refresher",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "t38pt_usertpsource",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "regexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fromdomain",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fromuser",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "qualify",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "keepalive",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultip",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultuser",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtptimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtpholdtimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtpkeepalive",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "sendrpid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "outboundproxy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackextension",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timert1",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timerb",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "qualifyfreq",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactpermit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactdeny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactacl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "unsolicited_mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "use_q850_reason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "maxforwards",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "encryption",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "avpf",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "force_avp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "icesupport",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "dtlsenable",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"fingerprint\"",
              "\"certificate\""
            ],
            "optional": true,
            "field": "dtlsverify",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dtlsrekey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscertfile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlsprivatekey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscipher",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscafile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscapath",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"active\"",
              "\"passive\"",
              "\"actpass\""
            ],
            "optional": true,
            "field": "dtlssetup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlsfingerprint",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "usereqphone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "recordonfeature",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "recordofffeature",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "call_limit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "registertrying",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "subscribemwi",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "vmexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mohinterpret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mohsuggest",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "parkinglot",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"nonat\"",
              "\"update\"",
              "\"update,nonat\""
            ],
            "optional": true,
            "field": "canreinvite",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "loginInPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "resetPasswordToken",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "resetPasswordExpires",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "showWebBar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "permissions",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phoneBarUnconditionalNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phoneBarNoReplyNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phoneBarBusyNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarUnconditional",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarNoReply",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarBusy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarDnd",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarUnansweredCallBadge",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableDtmfTone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "phoneBarAutoAnswerDelay",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "extensionMonitor",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "crudPermissions",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "rtcp_mux",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "allowmessenger",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phoneBarOutboundProxy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "passwordResetAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableJaws",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableScreenRecordingByAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "phoneBarEnableVideoRecording",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableAutomaticScreenRecording",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarPrefixRequired",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "hotdesk",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interface",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "privacyEnabled",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "apiKeyNonce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "apiKeyIat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "screenrecording",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "blocked",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "blockedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "loginAttempts",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "disabled",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "put",
    "url": "/api/users/{id}/password",
    "title": "Change user password",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/password -d '{\"oldPassword\": \"1234\", \"newPassword\": \"5678\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "ChangePwd",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users",
    "title": "Create a new user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/api_key",
    "title": "Create a new API access key for the user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/:id/api_key -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateApiKey",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}",
    "title": "Deletes a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "Delete",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/describe",
    "title": "Gets table info about Users",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeUsers",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/agents",
    "title": "GetAgents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/agents -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/api_key",
    "title": "Get the API access key for the user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/:id/api_key -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetApiKey",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/groups",
    "title": "GetChatGroups",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/groups -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetChatGroups",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/chat/interactions",
    "title": "GetChatInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetChatInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/chat_websites",
    "title": "GetChatWebsites",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat_websites -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetChatWebsites",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/contacts",
    "title": "GetContacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/contacts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetContacts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/fax_accounts",
    "title": "GetFaxAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax_accounts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetFaxAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/fax/interactions",
    "title": "GetFaxInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetFaxInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/lists",
    "title": "GetLists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/lists -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetLists",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/mail_accounts",
    "title": "GetMailAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail_accounts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetMailAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/mail/interactions",
    "title": "GetMailInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetMailInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/openchannel_accounts",
    "title": "GetOpenchannelAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetOpenchannelAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/openchannel/interactions",
    "title": "GetOpenchannelInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetOpenchannelInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/prefixes",
    "title": "GetPrefixes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/prefixes -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetPrefixes",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/queues?channel={channel}",
    "title": "Gets Queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/queues/?channel={channel} -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/recordings",
    "title": "GetRecordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/recordings -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetRecordings",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/scheduled_calls",
    "title": "GetScheduledCalls",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/scheduled_calls -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetScheduledCalls",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/screen_recordings",
    "title": "GetScreenRecordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/screen_recordings -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetScreenRecordings",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/sms_accounts",
    "title": "GetSmsAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms_accounts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetSmsAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/sms/interactions",
    "title": "GetSmsInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetSmsInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/square_projects",
    "title": "GetSquareProjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/square_projects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetSquareProjects",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/teams",
    "title": "GetTeams",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/teams -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users",
    "title": "Gets a list of Users",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetUsers",
    "group": "Users",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/users?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/users?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/users?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/users?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/users?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/queues_rt",
    "title": "GetVoiceQueuesRt",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/queues_rt -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetVoiceQueuesRt",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/login",
    "title": "Login",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/login  -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Login",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/logout",
    "title": "Logout",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/logout -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Logout",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/pause",
    "title": "Pause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/pause -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Pause",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/api_key",
    "title": "Remove API access key for the user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/:id/api_key -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveApiKey",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/chat_interactions",
    "title": "Removes interactions from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveChatInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/chat_websites",
    "title": "Removes a Chat Website from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat_websites?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveChatWebsites",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/fax_accounts",
    "title": "Removes a Fax Account from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveFaxAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/fax_interactions",
    "title": "Removes interactions from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveFaxInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/mail_accounts",
    "title": "Removes a Mail Account from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveMailAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/mail_interactions",
    "title": "Removes interactions from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveMailInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/openchannel_accounts",
    "title": "Removes a Open Channel Account from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveOpenchannelAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/openchannel_interactions",
    "title": "Removes openchannel interactions from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveOpenchannelInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/queues",
    "title": "Remove queues to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/queues?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveQueues",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/sms_accounts",
    "title": "Removes a Sms Account from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSmsAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/sms_interactions",
    "title": "Removes interactions from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSmsInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/square_projects",
    "title": "Removes a Square Project from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/square_projects?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSquareProjects",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/teams",
    "title": "Removes teams from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/teams?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}",
    "title": "Gets a single User",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowUsers",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/unpause",
    "title": "Unpause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/unpause -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Unpause",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/whoami",
    "title": "WhoAmI",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/whoami -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "WhoAmI",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/avatar",
    "title": "Add avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAvatar",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/avatar",
    "title": "Get avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/avatar -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAvatar",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "put",
    "url": "/api/users/{id}",
    "title": "Update an existing User",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateUsers",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/variables",
    "title": "Creates a new Variable",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/variables -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateVariables",
    "group": "Variables",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/variable/index.js",
    "groupTitle": "Variables"
  },
  {
    "type": "delete",
    "url": "/api/variables/{id}",
    "title": "Deletes a Variable",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/variables/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteVariables",
    "group": "Variables",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/variable/index.js",
    "groupTitle": "Variables"
  },
  {
    "type": "get",
    "url": "/api/variables",
    "title": "Gets a list of Variables",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/variables -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVariables",
    "group": "Variables",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/variables?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/variables?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/variables?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/variables?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/variables?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/variable/index.js",
    "groupTitle": "Variables"
  },
  {
    "type": "get",
    "url": "/api/variables/{id}",
    "title": "Gets a single Variable",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/variables/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowVariables",
    "group": "Variables",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/variable/index.js",
    "groupTitle": "Variables"
  },
  {
    "type": "put",
    "url": "/api/variables/{id}",
    "title": "Update an existing Variable",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/variables/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateVariables",
    "group": "Variables",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/variable/index.js",
    "groupTitle": "Variables"
  },
  {
    "type": "get",
    "url": "/api/version/fetch",
    "title": "Fetch git version",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version/fetch -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "FetchVersion",
    "group": "Version",
    "description": "<p>Motion run the following command: git fetch origin master</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/version",
    "title": "Gets version",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVersion",
    "group": "Version",
    "description": "<p>Motion returns the current and latest motion version.</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/version/migrations",
    "title": "Launch database migrations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version/migrations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "MigrateVersion",
    "group": "Version",
    "description": "<p>Motion launch the database migrations, according to the application version</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/version/pull",
    "title": "Pull git version",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version/pull -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "PullVersion",
    "group": "Version",
    "description": "<p>Motion run the following command: git pull</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/version/reset",
    "title": "Reset git version",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version/reset -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ResetVersion",
    "group": "Version",
    "description": "<p>Motion run the following command: git reset --hard FETCH_HEAD</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/version/restart",
    "title": "Restart motion2 after update",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version/restart -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RestartVersion",
    "group": "Version",
    "description": "<p>Motion run the following command: pm2 restart motion</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/voice/agents/reports/describe",
    "title": "Gets table info about Agent Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/agents/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAgent_Reports",
    "group": "Voice_Agent_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceAgentReport/index.js",
    "groupTitle": "Voice_Agent_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/agents/reports",
    "title": "Gets a list of Agent Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/agents/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAgent_Reports",
    "group": "Voice_Agent_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/agents/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/agents/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/agents/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/agents/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/agents/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceAgentReport/index.js",
    "groupTitle": "Voice_Agent_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/agents/reports/{id}",
    "title": "Gets a single Agent Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/agents/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAgent_Reports",
    "group": "Voice_Agent_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceAgentReport/index.js",
    "groupTitle": "Voice_Agent_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/calls/reports/describe",
    "title": "Gets table info about Call Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/calls/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeCall_Reports",
    "group": "Voice_Call_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceCallReport/index.js",
    "groupTitle": "Voice_Call_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/calls/reports",
    "title": "Gets a list of Call Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/calls/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCall_Reports",
    "group": "Voice_Call_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/calls/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/calls/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/calls/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/calls/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/calls/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceCallReport/index.js",
    "groupTitle": "Voice_Call_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/calls/reports/{id}",
    "title": "Gets a single Call Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/calls/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCall_Reports",
    "group": "Voice_Call_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceCallReport/index.js",
    "groupTitle": "Voice_Call_Reports"
  },
  {
    "type": "put",
    "url": "/api/voice/calls/reports/{id}",
    "title": "Update a single cdr",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/calls/reports/{id} -d '{\"userDispositio\": \"OK\"}' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "Voice_Call_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceCallReport/index.js",
    "groupTitle": "Voice_Call_Reports"
  },
  {
    "type": "post",
    "url": "/api/voice/chanspy",
    "title": "Creates a new ChanSpy",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/chanspy -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateChanSpy",
    "group": "Voice_ChanSpy",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "prefix",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "options",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "auth",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "record",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "recordingFormat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceChanSpy/index.js",
    "groupTitle": "Voice_ChanSpy"
  },
  {
    "type": "delete",
    "url": "/api/voice/chanspy/{id}",
    "title": "Deletes a ChanSpy",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/chanspy/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteChanSpy",
    "group": "Voice_ChanSpy",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceChanSpy/index.js",
    "groupTitle": "Voice_ChanSpy"
  },
  {
    "type": "get",
    "url": "/api/voice/chanspy",
    "title": "Gets a list of ChanSpy",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/chanspy -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetChanSpy",
    "group": "Voice_ChanSpy",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/chanspy?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/chanspy?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/chanspy?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/chanspy?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/chanspy?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceChanSpy/index.js",
    "groupTitle": "Voice_ChanSpy"
  },
  {
    "type": "get",
    "url": "/api/voice/chanspy/{id}",
    "title": "Gets a single ChanSpy",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/chanspy/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowChanSpy",
    "group": "Voice_ChanSpy",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceChanSpy/index.js",
    "groupTitle": "Voice_ChanSpy"
  },
  {
    "type": "put",
    "url": "/api/voice/chanspy/{id}",
    "title": "Update an existing ChanSpy",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/chanspy/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateChanSpy",
    "group": "Voice_ChanSpy",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceChanSpy/index.js",
    "groupTitle": "Voice_ChanSpy"
  },
  {
    "type": "post",
    "url": "/api/voice/contexts",
    "title": "Create a new context",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/contexts -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Voice_Contexts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "defaultEntry",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceContext/index.js",
    "groupTitle": "Voice_Contexts"
  },
  {
    "type": "delete",
    "url": "/api/voice/contexts/{id}",
    "title": "Deletes a context",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "Delete",
    "group": "Voice_Contexts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceContext/index.js",
    "groupTitle": "Voice_Contexts"
  },
  {
    "type": "get",
    "url": "/api/voice/contexts",
    "title": "Gets a list of Contexts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/contexts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetContexts",
    "group": "Voice_Contexts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/contexts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/contexts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/contexts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/contexts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/contexts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceContext/index.js",
    "groupTitle": "Voice_Contexts"
  },
  {
    "type": "get",
    "url": "/api/voice/contexts/{id}",
    "title": "Gets a single Context",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowContexts",
    "group": "Voice_Contexts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceContext/index.js",
    "groupTitle": "Voice_Contexts"
  },
  {
    "type": "put",
    "url": "/api/voice/contexts/{id}",
    "title": "Update an existing context",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Update",
    "group": "Voice_Contexts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceContext/index.js",
    "groupTitle": "Voice_Contexts"
  },
  {
    "type": "get",
    "url": "/api/voice/dials/reports/describe",
    "title": "Gets table info about Dial Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/dials/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeDial_Reports",
    "group": "Voice_Dial_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceDialReport/index.js",
    "groupTitle": "Voice_Dial_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/dials/reports",
    "title": "Gets a list of Dial Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/dials/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDial_Reports",
    "group": "Voice_Dial_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/dials/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/dials/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/dials/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/dials/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/dials/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceDialReport/index.js",
    "groupTitle": "Voice_Dial_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/dials/reports/{id}",
    "title": "Gets a single Dial Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/dials/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDial_Reports",
    "group": "Voice_Dial_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceDialReport/index.js",
    "groupTitle": "Voice_Dial_Reports"
  },
  {
    "type": "delete",
    "url": "/api/voice/extensions/{id}",
    "title": "Deletes a Extension",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteExtensions",
    "group": "Voice_Extensions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "get",
    "url": "/api/voice/extensions",
    "title": "Gets a list of Extensions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetExtensions",
    "group": "Voice_Extensions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/extensions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/extensions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/extensions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/extensions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/extensions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "get",
    "url": "/api/voice/extensions/{id}",
    "title": "Gets a single Extension",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowExtensions",
    "group": "Voice_Extensions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "post",
    "url": "/api/voice/extensions",
    "title": "Create new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions/{id}/applications -d '[{\"app\": \"Set\", \"appdata\": \"CALLERDNID=${CALLER(dnid)}\"}]' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Voice_Extensions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "post",
    "url": "/api/voice/extensions",
    "title": "Create an extension",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions -d '{\"exten\": \"12345\", \"context\": \"from-custom\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "create",
    "group": "Voice_Extensions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "put",
    "url": "/api/voice/extensions/{id}",
    "title": "Update an extension",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions/{id} -d '{\"exten\": \"12345\", \"context\": \"from-custom\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "Voice_Extensions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "post",
    "url": "/api/voice/mohs",
    "title": "Create a new a new MOH",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs -d '{\"name\": \"xmas_musics\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddMoh",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "post",
    "url": "/api/voice/mohs/{id}/sounds",
    "title": "Add sound to MOH",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds -d '{\"id\": 1}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSound",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "delete",
    "url": "/api/voice/mohs/{id}",
    "title": "Deletes an MOH",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DestroyMoh",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "get",
    "url": "/api/voice/mohs",
    "title": "Gets a list of Music On Holds",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMusic_On_Holds",
    "group": "Voice_MOHs",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mohs?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mohs?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mohs?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mohs?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mohs?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "get",
    "url": "/api/voice/mohs/{id}/sounds",
    "title": "Gets sounds from MOH",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "GetSounds",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "delete",
    "url": "/api/voice/mohs/{id}/sounds/{id2}",
    "title": "Remove sound from MOH",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds/{id2} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSound",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "get",
    "url": "/api/voice/mohs/{id}",
    "title": "Gets a single Music On Hold",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMusic_On_Holds",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "put",
    "url": "/api/voice/mohs/{id}",
    "title": "Update an existing Music On Hold",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMusic_On_Holds",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "post",
    "url": "/api/voice/mails",
    "title": "Creates a new Mail",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMails",
    "group": "Voice_Mails",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customer_id",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fullname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pager",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tz",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "attach",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "saycid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callback",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "review",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "operator",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "envelope",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "sayduration",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "saydurationm",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "sendvoicemail",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "delete",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "nextaftercmd",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "forcename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "forcegreetings",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "hidefromdir",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "stamp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "emailsubject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "emailbody",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "maxsecs",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "maxmsg",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "delete",
    "url": "/api/voice/mails/{id}",
    "title": "Deletes a Mail",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMails",
    "group": "Voice_Mails",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "get",
    "url": "/api/voice/mails",
    "title": "Gets a list of Mails",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMails",
    "group": "Voice_Mails",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mails?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mails?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mails?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mails?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mails?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "get",
    "url": "/api/voice/mails/{id}",
    "title": "Gets a single Mail",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMails",
    "group": "Voice_Mails",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "get",
    "url": "/api/voice/mails/{id}/messages",
    "title": "Gets voice mail messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Voice_Mails",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "put",
    "url": "/api/voice/mails/{id}",
    "title": "Update an existing Mail",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMails",
    "group": "Voice_Mails",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "post",
    "url": "/api/voice/mails/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Voice_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "msgnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dir",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "macrocontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "origtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "duration",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailboxuser",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailboxcontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Blob",
            "optional": true,
            "field": "recording",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "flag",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "msg_id",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "stamp",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "delete",
    "url": "/api/voice/mails/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Voice_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "get",
    "url": "/api/voice/mails/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Voice_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mails/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mails/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mails/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mails/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mails/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "get",
    "url": "/api/voice/mails/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Voice_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "get",
    "url": "voice/mails/messages/{id}/download",
    "title": "Download Voice Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}voice/mails/messages/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Voice_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "put",
    "url": "/api/voice/mails/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Voice_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "post",
    "url": "/api/voice/prefixes/{id}/users",
    "title": "Add agents to a prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "delete",
    "url": "/api/voice/prefixes/{id}",
    "title": "Deletes a Prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeletePrefixes",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "get",
    "url": "/api/voice/prefixes/describe",
    "title": "Gets table info about Prefixes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribePrefixes",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "get",
    "url": "/api/voice/prefixes/{id}/users",
    "title": "Gets agents from prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "get",
    "url": "/api/voice/prefixes",
    "title": "Gets a list of Prefixes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetPrefixes",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/prefixes?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/prefixes?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/prefixes?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/prefixes?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/prefixes?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "delete",
    "url": "/api/voice/prefixes/{id}/users",
    "title": "Removes agents from a prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "get",
    "url": "/api/voice/prefixes/{id}",
    "title": "Gets a single Prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowPrefixes",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "put",
    "url": "/api/voice/prefixes/{id}",
    "title": "Update an existing prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Update",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "post",
    "url": "/api/voice/prefixes",
    "title": "Create a prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "create",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/reports/describe",
    "title": "Gets table info about Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueue_Reports",
    "group": "Voice_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueueReport/index.js",
    "groupTitle": "Voice_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/reports",
    "title": "Gets a list of Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueue_Reports",
    "group": "Voice_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/queues/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/queues/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/queues/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/queues/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/queues/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueueReport/index.js",
    "groupTitle": "Voice_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/reports/{id}",
    "title": "Gets a single Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueue_Reports",
    "group": "Voice_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueueReport/index.js",
    "groupTitle": "Voice_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/reports/index",
    "title": "Get Voice Queues Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/reports/index -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getVoiceQueuesReport",
    "group": "Voice_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueueReport/index.js",
    "groupTitle": "Voice_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/voice/queues/{id}/users",
    "title": "Add agents to queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/queues/{id}/blacklists",
    "title": "Add blacklists to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddBlackLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/queues/{id}/lists",
    "title": "Add lists to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/lists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/queues/{id}/teams",
    "title": "Add teams to queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/queues/clone",
    "title": "Clone an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneQueues",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Voice_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"inbound\"",
              "\"outbound\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "musiconhold",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "announce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rr\"",
              "\"ringall\"",
              "\"leastrecent\"",
              "\"fewestcalls\"",
              "\"random\"",
              "\"rrmemory\"",
              "\"linear\"",
              "\"wrandom\"",
              "\"rrordered\""
            ],
            "optional": false,
            "field": "strategy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "servicelevel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "penaltymemberslimit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "retry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "timeoutpriority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "weight",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "wrapuptime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "autofill",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"all\""
            ],
            "optional": true,
            "field": "autopause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "autopausedelay",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "autopausebusy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "autopauseunavail",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "maxlen",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "setinterfacevar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "setqueueentryvar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "setqueuevar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "eventmemberstatus",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membermacro",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membergosub",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "announce_frequency",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "min_announce_frequency",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "periodic_announce_frequency",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "random_periodic_announce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "relative_periodic_announce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"once\""
            ],
            "optional": true,
            "field": "announce_holdtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "announce_position",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "announce_to_first_user",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "announce_position_limit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"0\"",
              "\"5\"",
              "\"10\"",
              "\"15\"",
              "\"20\"",
              "\"30\""
            ],
            "optional": true,
            "field": "announce_round_seconds",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "monitor_format",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "monitor_type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_youarenext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_thereare",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_callswaiting",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_holdtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_minute",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_minutes",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_seconds",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_thankyou",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_reporthold",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_quantity1",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_quantity2",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_periodic_announce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_less_than",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "periodic_announce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinempty",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leavewhenempty",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "reportholdtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "ringinuse",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "memberdelay",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "timeoutrestart",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultrule",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "acw",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "acwTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialActive",
            "description": "<p>Active/Disactive Campaign</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"preview\"",
              "\"progressive\"",
              "\"power\"",
              "\"predictive\"",
              "\"booked\""
            ],
            "optional": true,
            "field": "dialMethod",
            "description": "<p>Dial Method.</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialLimitChannel",
            "description": "<p>Max 9999 channels, 0 means unlimited.</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialLimitQueue",
            "description": "<p>Max 9999 member in queue(min:1, max:9999), 0 means unlimited.</p>"
          },
          {
            "group": "Body",
            "type": "Float",
            "optional": true,
            "field": "dialPowerLevel",
            "description": "<p>Power Level: Calls for agents (min:1, max:10).</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"agentBusyFactor\"",
              "\"dropRate\""
            ],
            "optional": true,
            "field": "dialPredictiveOptimization",
            "description": "<p>Only for predictive method.</p>"
          },
          {
            "group": "Body",
            "type": "Float",
            "optional": true,
            "field": "dialPredictiveOptimizationPercentage",
            "description": "<p>Predictive Optimization Percentage (min: 1, max: 95)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialPredictiveInterval",
            "description": "<p>Interval Predictive Minutes (min:5 max:30)</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialOriginateCallerIdName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialOriginateCallerIdNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialOriginateTimeout",
            "description": "<p>Originate Timeout Seconds (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialQueueOptions",
            "description": "<p>https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialQueueTimeout",
            "description": "<p>Queue Timeout Seconds (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialQueueProject",
            "description": "<p>AGI queue option (use: agi://127.0.0.1/square,&lt;project_name&gt;)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCongestionMaxRetry",
            "description": "<p>#Congestion Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCongestionRetryFrequency",
            "description": "<p>Congestion Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialBusyMaxRetry",
            "description": "<p>#Busy Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialBusyRetryFrequency",
            "description": "<p>Busy Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoAnswerMaxRetry",
            "description": "<p>#NoAnswer Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoAnswerRetryFrequency",
            "description": "<p>NoAnswer Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialGlobalMaxRetry",
            "description": "<p>#Global Max Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialTimezone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialGlobalInterval",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialPrefix",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"always\"",
              "\"never\"",
              "\"onlyIfOpen\""
            ],
            "optional": true,
            "field": "dialCheckDuplicateType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialAMDActive",
            "description": "<p>Active/Disactive AMD</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDInitialSilence",
            "description": "<p>#AMD Initial Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDGreeting",
            "description": "<p>#AMD Greeting</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDAfterGreetingSilence",
            "description": "<p>#AMD After Greeting Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDTotalAnalysisTime",
            "description": "<p>#AMD Total Analysis Time</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMinWordLength",
            "description": "<p>#AMD Min Word Length</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDBetweenWordsSilence",
            "description": "<p>#AMD Between Words Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMaximumNumberOfWords",
            "description": "<p>#AMD Maximum Number Of Words</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDSilenceThreshold",
            "description": "<p>#AMD Silence Threshold (min:0, max:32767)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMaximumWordLength",
            "description": "<p>#AMD Maximum Word Length</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialRecallMeTimeout",
            "description": "<p>#RecallMe Timeout (min:1)</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialRecallInQueue",
            "description": "<p>Active/Disactive Recall In Queue</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"DESC\"",
              "\"ASC\""
            ],
            "optional": true,
            "field": "dialOrderByScheduledAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialQueueProject2",
            "description": "<p>AGI queue option (use: agi://127.0.0.1/square,&lt;project_name&gt;)</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialAgiAfterHangupClient",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialAgiAfterHangupAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialRandomLastDigitCallerIdNumber",
            "description": "<p>Random Last Digit (min:1, max:15)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCutDigit",
            "description": "<p>Cut Digit (min:1, max:15)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoSuchNumberMaxRetry",
            "description": "<p>#NoSuchNumber Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoSuchNumberRetryFrequency",
            "description": "<p>NoSuchNumber Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialDropMaxRetry",
            "description": "<p>#Drop Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialDropRetryFrequency",
            "description": "<p>Drop Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAbandonedMaxRetry",
            "description": "<p>#Abandoned Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAbandonedRetryFrequency",
            "description": "<p>Abandoned Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialMachineMaxRetry",
            "description": "<p>#Machine Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialMachineRetryFrequency",
            "description": "<p>Machine Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAgentRejectMaxRetry",
            "description": "<p>#AgentReject Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAgentRejectRetryFrequency",
            "description": "<p>AgentReject Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialPredictiveIntervalMaxThreshold",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialPredictiveIntervalMinThreshold",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "delete",
    "url": "/api/voice/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/blacklists",
    "title": "Get queue blacklists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetBlackLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/finals",
    "title": "Gets queue hopper finals",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_finals -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperFinals",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/hopper_histories",
    "title": "Gets queue hopper histories",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_histories -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperHistories",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/hoppers",
    "title": "Gets queue hoppers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/hoppers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHoppers",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/lists",
    "title": "Get queue lists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/lists -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/members",
    "title": "Gets queue members",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/members -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Voice_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/teams",
    "title": "Gets queue team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "delete",
    "url": "/api/voice/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "delete",
    "url": "/api/voice/queues/{id}/blacklists",
    "title": "Remove blacklists from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveBlackLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "delete",
    "url": "/api/voice/queues/{id}/lists",
    "title": "Remove lists from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/lists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/blacks",
    "title": "Gets queue hopper blacks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_black -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getHopperBlacks",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "put",
    "url": "/api/voice/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/recordings",
    "title": "Creates a new Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateRecordings",
    "group": "Voice_Recordings",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "format",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "connectedlinenum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "connectedlinename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rating",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "userDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "createdAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "updatedAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "get",
    "url": "/api/voice/recordings/describe",
    "title": "Gets table info about Recordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeRecordings",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "get",
    "url": "/api/voice/recordings",
    "title": "Gets a list of Recordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetRecordings",
    "group": "Voice_Recordings",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "get",
    "url": "/api/voice/recordings/{id}",
    "title": "Gets a single Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRecordings",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "delete",
    "url": "/api/voice/recordings/{id}",
    "title": "Delete voice recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroy",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "get",
    "url": "/api/voice/recordings/{id}/download",
    "title": "Download Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "get",
    "url": "/api/voice/recordings/{id}/downloads",
    "title": "Download Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/{id}/downloads -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "downloads",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "put",
    "url": "/api/voice/recordings/{id}",
    "title": "Update an existing Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateRecordings",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "post",
    "url": "/api/voice/transfers/reports",
    "title": "Creates a new Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateTransfer_Reports",
    "group": "Voice_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"blind\"",
              "\"attended\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "result",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfererchannel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transferercalleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transferercalleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfererconnectedlinenum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfererconnectedlinename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereraccountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transferercontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfererexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfererlinkedid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereechannel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereecalleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereecalleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereeconnectedlinenum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereeconnectedlinename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereeaccountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereecontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereeexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereelinkedid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"Yes\"",
              "\"No\""
            ],
            "optional": true,
            "field": "isexternal",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "extension",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceTransferReport/index.js",
    "groupTitle": "Voice_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/voice/transfers/reports/{id}",
    "title": "Deletes a Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteTransfer_Reports",
    "group": "Voice_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceTransferReport/index.js",
    "groupTitle": "Voice_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/transfers/reports",
    "title": "Gets a list of Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTransfer_Reports",
    "group": "Voice_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/transfers/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/transfers/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/transfers/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/transfers/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/transfers/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceTransferReport/index.js",
    "groupTitle": "Voice_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/transfers/reports/{id}",
    "title": "Gets a single Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTransfer_Reports",
    "group": "Voice_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceTransferReport/index.js",
    "groupTitle": "Voice_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/voice/transfers/reports/{id}",
    "title": "Update an existing Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateTransfer_Reports",
    "group": "Voice_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceTransferReport/index.js",
    "groupTitle": "Voice_Transfer_Reports"
  },
  {
    "type": "post",
    "url": "/api/integrations/vtiger/accounts",
    "title": "Creates a new Vtiger Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateVtiger_Accounts",
    "group": "Vtiger_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "moduleName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "accessKey",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/vtiger/accounts/{id}",
    "title": "Deletes a Vtiger Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteVtiger_Accounts",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/accounts",
    "title": "Gets a list of Vtiger Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVtiger_Accounts",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/accounts/{id}",
    "title": "Gets a single Vtiger Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowVtiger_Accounts",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/vtiger/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/vtiger/accounts/{id}",
    "title": "Update an existing Vtiger Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateVtiger_Accounts",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/vtiger/configurations",
    "title": "Creates a new Vtiger Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateVtiger_Configurations",
    "group": "Vtiger_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/vtiger/configurations/{id}",
    "title": "Deletes a Vtiger Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteVtiger_Configurations",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/configurations",
    "title": "Gets a list of Vtiger Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVtiger_Configurations",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/configurations/{id}",
    "title": "Gets a single Vtiger Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowVtiger_Configurations",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/vtiger/configurations/{id}",
    "title": "Update an existing Vtiger Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateVtiger_Configurations",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/vtiger/fields",
    "title": "Creates a new Vtiger Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateVtiger_Fields",
    "group": "Vtiger_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerField/index.js",
    "groupTitle": "Vtiger_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/vtiger/fields/{id}",
    "title": "Deletes a Vtiger Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteVtiger_Fields",
    "group": "Vtiger_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerField/index.js",
    "groupTitle": "Vtiger_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/fields",
    "title": "Gets a list of Vtiger Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVtiger_Fields",
    "group": "Vtiger_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerField/index.js",
    "groupTitle": "Vtiger_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/fields/{id}",
    "title": "Gets a single Vtiger Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowVtiger_Fields",
    "group": "Vtiger_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerField/index.js",
    "groupTitle": "Vtiger_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/vtiger/fields/{id}",
    "title": "Update an existing Vtiger Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateVtiger_Fields",
    "group": "Vtiger_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerField/index.js",
    "groupTitle": "Vtiger_Fields"
  },
  {
    "type": "post",
    "url": "/api/webbar/answer",
    "title": "answer webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/answer -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_answer",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "sessionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/calls",
    "title": "webrtc call list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/calls -d '{\"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_calls",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/hangup",
    "title": "hangup webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/hangup -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_hangup",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "sessionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/unhold",
    "title": "unhold webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/unhold -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_hold",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "sessionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/hold",
    "title": "hold webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/hold -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_hold",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sessionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/originate",
    "title": "Originate new webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/originate -d '{\"callNumber\": \"0119692844\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_originate",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "callNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "callerId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "callbackUrl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/transfer",
    "title": "blind transfer webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/transfer -d '{\"userId\": 54, \"sessionId\":\"<sessionId>\", \"transferNumber\":\"<transferNumber>\"}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_transfer",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "string",
            "optional": false,
            "field": "sessionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "string",
            "optional": false,
            "field": "transferNumber",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/users",
    "title": "Add agents to a whatsapp account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts",
    "title": "Creates a new Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAccounts",
    "group": "Whatsapp_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "remote",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"twilio\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountSid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "authToken",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notificationTemplate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationSound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationShake",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "waitForTheAssignedAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "queueTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "queueTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "agentTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/accounts/{id}",
    "title": "Deletes a Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAccounts",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/describe",
    "title": "Gets table info about Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAccounts",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts",
    "title": "Gets a list of Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAccounts",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/{id}/users",
    "title": "Gets agents from whatsapp account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/accounts/{id}/users",
    "title": "Removes agents from a whatsapp account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/accounts/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/accounts/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/{id}",
    "title": "Gets a single Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAccounts",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Whatsapp_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Whatsapp_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Whatsapp_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/{id}/applications",
    "title": "Gets account applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/notify",
    "title": "Notify new message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "notify",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new whatsapp message to be sent to the system.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/send",
    "title": "Send new whatsapp message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/send -d '{from: '+39333123456', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "sendWhatsapp",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/messages/{id}/status",
    "title": "Receive message status",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
        "type": "json"
      }
    ],
    "name": "statusMessage",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/accounts/{id}",
    "title": "Update an existing Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAccounts",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/applications",
    "title": "Creates a new Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateApplications",
    "group": "Whatsapp_Applications",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappApplication/index.js",
    "groupTitle": "Whatsapp_Applications"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Whatsapp_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappApplication/index.js",
    "groupTitle": "Whatsapp_Applications"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/applications",
    "title": "Gets a list of Applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/applications -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetApplications",
    "group": "Whatsapp_Applications",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappApplication/index.js",
    "groupTitle": "Whatsapp_Applications"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Whatsapp_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappApplication/index.js",
    "groupTitle": "Whatsapp_Applications"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Whatsapp_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappApplication/index.js",
    "groupTitle": "Whatsapp_Applications"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Whatsapp_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/interactions/{id}/messages",
    "title": "Creates new messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Whatsapp_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/interactions/{id}/download",
    "title": "Gets interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Whatsapp_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Whatsapp_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Whatsapp_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Whatsapp_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Whatsapp_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Whatsapp_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/reports/queue",
    "title": "Creates a new Whatsapp Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/reports/queue/{id}",
    "title": "Deletes a Whatsapp Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/queue/describe",
    "title": "Gets table info about Whatsapp Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/queue",
    "title": "Gets a list of Whatsapp Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/queue/{id}",
    "title": "Gets a single Whatsapp Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/reports/queue/{id}",
    "title": "Update an existing Whatsapp Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Whatsapp_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": true,
            "field": "strategy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/reports/transfer",
    "title": "Creates a new Whatsapp Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/reports/transfer/{id}",
    "title": "Deletes a Whatsapp Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/transfer/describe",
    "title": "Gets table info about Whatsapp Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/transfer",
    "title": "Gets a list of Whatsapp Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/transfer/{id}",
    "title": "Gets a single Whatsapp Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/reports/transfer/{id}",
    "title": "Update an existing Whatsapp Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "post",
    "url": "/api/integrations/zendesk/accounts",
    "title": "Creates a new Zendesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZendesk_Accounts",
    "group": "Zendesk_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"password\"",
              "\"token\""
            ],
            "optional": true,
            "field": "authType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"integrationTab\"",
              "\"newTab\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zendesk/accounts/{id}",
    "title": "Deletes a Zendesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZendesk_Accounts",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/accounts",
    "title": "Gets a list of Zendesk Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZendesk_Accounts",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/accounts/{id}",
    "title": "Gets a single Zendesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZendesk_Accounts",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/zendesk/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/zendesk/accounts/{id}",
    "title": "Update an existing Zendesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZendesk_Accounts",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/zendesk/configurations",
    "title": "Creates a new Zendesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZendesk_Configurations",
    "group": "Zendesk_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zendesk/configurations/{id}",
    "title": "Deletes a Zendesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZendesk_Configurations",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations",
    "title": "Gets a list of Zendesk Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZendesk_Configurations",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations/{id}",
    "title": "Gets a single Zendesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZendesk_Configurations",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations/{id}/tags",
    "title": "Gets configurations tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/tags -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getTags",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/zendesk/configurations/{id}/tags",
    "title": "Sets new tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "setTags",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/zendesk/configurations/{id}",
    "title": "Update an existing Zendesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZendesk_Configurations",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/zendesk/fields",
    "title": "Creates a new Zendesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZendesk_Fields",
    "group": "Zendesk_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskField/index.js",
    "groupTitle": "Zendesk_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zendesk/fields/{id}",
    "title": "Deletes a Zendesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZendesk_Fields",
    "group": "Zendesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskField/index.js",
    "groupTitle": "Zendesk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/fields",
    "title": "Gets a list of Zendesk Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZendesk_Fields",
    "group": "Zendesk_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskField/index.js",
    "groupTitle": "Zendesk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/fields/{id}",
    "title": "Gets a single Zendesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZendesk_Fields",
    "group": "Zendesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskField/index.js",
    "groupTitle": "Zendesk_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/zendesk/fields/{id}",
    "title": "Update an existing Zendesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZendesk_Fields",
    "group": "Zendesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskField/index.js",
    "groupTitle": "Zendesk_Fields"
  },
  {
    "type": "post",
    "url": "/api/integrations/zoho/accounts",
    "title": "Creates a new Zoho Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZoho_Accounts",
    "group": "Zoho_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "zone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientSecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "code",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "refreshToken",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zoho/accounts/{id}",
    "title": "Deletes a Zoho Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZoho_Accounts",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/accounts",
    "title": "Gets a list of Zoho Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZoho_Accounts",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/accounts/{id}",
    "title": "Gets a single Zoho Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZoho_Accounts",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/zoho/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/zoho/accounts/{id}",
    "title": "Update an existing Zoho Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZoho_Accounts",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/zoho/configurations",
    "title": "Creates a new Zoho Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZoho_Configurations",
    "group": "Zoho_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"lead\"",
              "\"contact\"",
              "\"nothing\""
            ],
            "optional": true,
            "field": "moduleCreate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"contact_lead\"",
              "\"contact\"",
              "\"lead\""
            ],
            "optional": true,
            "field": "moduleSearch",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zoho/configurations/{id}",
    "title": "Deletes a Zoho Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZoho_Configurations",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations",
    "title": "Gets a list of Zoho Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZoho_Configurations",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations/{id}",
    "title": "Gets a single Zoho Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZoho_Configurations",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/zoho/configurations/{id}",
    "title": "Update an existing Zoho Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZoho_Configurations",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/zoho/fields",
    "title": "Creates a new Zoho Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZoho_Fields",
    "group": "Zoho_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoField/index.js",
    "groupTitle": "Zoho_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zoho/fields/{id}",
    "title": "Deletes a Zoho Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZoho_Fields",
    "group": "Zoho_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoField/index.js",
    "groupTitle": "Zoho_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/fields",
    "title": "Gets a list of Zoho Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZoho_Fields",
    "group": "Zoho_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoField/index.js",
    "groupTitle": "Zoho_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/fields/{id}",
    "title": "Gets a single Zoho Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZoho_Fields",
    "group": "Zoho_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoField/index.js",
    "groupTitle": "Zoho_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/zoho/fields/{id}",
    "title": "Update an existing Zoho Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZoho_Fields",
    "group": "Zoho_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoField/index.js",
    "groupTitle": "Zoho_Fields"
  },
  {
    "type": "post",
    "url": "/api/cdr",
    "title": "Creates a new Cdr",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateCdrs",
    "group": "cdr",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "calldate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "src",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dst",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dcontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dstchannel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastapp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "duration",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "billsec",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "amaflags",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "userfield",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "linkedid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sequence",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "peeraccount",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tag",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "delete",
    "url": "/api/cdr/{id}",
    "title": "Deletes a Cdr",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteCdrs",
    "group": "cdr",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "get",
    "url": "/api/cdr/describe",
    "title": "Gets table info about Cdrs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeCdrs",
    "group": "cdr",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "get",
    "url": "/api/cdr",
    "title": "Gets a list of Cdrs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCdrs",
    "group": "cdr",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cdr?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cdr?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cdr?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cdr?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cdr?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "get",
    "url": "/api/cdr/{id}",
    "title": "Gets a single Cdr",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCdrs",
    "group": "cdr",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "put",
    "url": "/api/cdr/{id}",
    "title": "Update an existing Cdr",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateCdrs",
    "group": "cdr",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "post",
    "url": "/api/voiceQueuesLog",
    "title": "Creates a new VoiceQueuesLog",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voiceQueuesLog -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateVoiceQueuesLogs",
    "group": "voiceQueuesLog",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "time",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "callid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "queuename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "agent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "event",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data1",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data2",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data3",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data4",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data5",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "dtm",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueuesLog/index.js",
    "groupTitle": "voiceQueuesLog"
  },
  {
    "type": "delete",
    "url": "/api/voiceQueuesLog/{id}",
    "title": "Deletes a VoiceQueuesLog",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteVoiceQueuesLogs",
    "group": "voiceQueuesLog",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueuesLog/index.js",
    "groupTitle": "voiceQueuesLog"
  },
  {
    "type": "get",
    "url": "/api/voiceQueuesLog",
    "title": "Gets a list of VoiceQueuesLogs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voiceQueuesLog -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVoiceQueuesLogs",
    "group": "voiceQueuesLog",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voiceQueuesLog?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voiceQueuesLog?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voiceQueuesLog?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voiceQueuesLog?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voiceQueuesLog?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueuesLog/index.js",
    "groupTitle": "voiceQueuesLog"
  },
  {
    "type": "get",
    "url": "/api/voiceQueuesLog/{id}",
    "title": "Gets a single VoiceQueuesLog",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowVoiceQueuesLogs",
    "group": "voiceQueuesLog",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueuesLog/index.js",
    "groupTitle": "voiceQueuesLog"
  },
  {
    "type": "put",
    "url": "/api/voiceQueuesLog/{id}",
    "title": "Update an existing VoiceQueuesLog",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateVoiceQueuesLogs",
    "group": "voiceQueuesLog",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueuesLog/index.js",
    "groupTitle": "voiceQueuesLog"
  }
] });
+define({ "api": [
+  {
+    "type": "delete",
+    "url": "/api/actions/{id}",
+    "title": "Deletes a Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/actions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteActions",
+    "group": "Actions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/action/index.js",
+    "groupTitle": "Actions"
+  },
+  {
+    "type": "put",
+    "url": "/api/actions/{id}",
+    "title": "Update an existing Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/actions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateActions",
+    "group": "Actions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/action/index.js",
+    "groupTitle": "Actions"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/custom_reports",
+    "title": "Creates a new Analytic Custom Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Custom_Reports",
+    "group": "Analytic_Custom_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "parent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "table",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "conditions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "joins",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/custom_reports/{id}",
+    "title": "Deletes a Analytic Custom Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Custom_Reports",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/custom_reports",
+    "title": "Gets a list of Analytic Custom Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Custom_Reports",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/custom_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/custom_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/custom_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/custom_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/custom_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/custom_reports/{id}",
+    "title": "Gets a single Analytic Custom Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Custom_Reports",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/custom_reports/{id}/preview",
+    "title": "Report Preview",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/preview -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "preview",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/custom_reports/{id}/query",
+    "title": "Report Query SQL",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/query -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "query",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/custom_reports/{id}/run",
+    "title": "Report Run",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/run -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "run",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/custom_reports/{id}",
+    "title": "Update an existing Analytic Custom Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Custom_Reports",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/default_reports",
+    "title": "Creates a new Analytic Default Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Default_Reports",
+    "group": "Analytic_Default_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "parent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "table",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "conditions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "joins",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/default_reports/{id}",
+    "title": "Deletes a Analytic Default Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Default_Reports",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/default_reports",
+    "title": "Gets a list of Analytic Default Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Default_Reports",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/default_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/default_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/default_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/default_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/default_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/default_reports/{id}",
+    "title": "Gets a single Analytic Default Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Default_Reports",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/default_reports/{id}/preview",
+    "title": "Report Preview",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id}/preview -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "preview",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/default_reports/{id}/query",
+    "title": "Report Query SQL",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id}/query -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "query",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/default_reports/{id}/run",
+    "title": "Report Run",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id}/run -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "run",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/default_reports/{id}",
+    "title": "Update an existing Analytic Default Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Default_Reports",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/extracted_reports",
+    "title": "Creates a new Analytic Extracted Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Extacted_Reports",
+    "group": "Analytic_Extracted_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "basename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"csv\"",
+              "\"pdf\"",
+              "\"xlsx\""
+            ],
+            "optional": false,
+            "field": "output",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "savename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "startDate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "endDate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "status",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"manual\"",
+              "\"scheduled\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "reportId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reportType",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/extracted_reports/{id}",
+    "title": "Deletes a Analytic Extracted Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Extacted_Reports",
+    "group": "Analytic_Extracted_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/extracted_reports",
+    "title": "Gets a list of Analytic Extacted Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Extacted_Reports",
+    "group": "Analytic_Extracted_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/extracted_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/extracted_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/extracted_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/extracted_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/extracted_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/extracted_reports/{id}",
+    "title": "Gets a single Analytic Extracted Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Extacted_Reports",
+    "group": "Analytic_Extracted_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/extracted_reports/{id}/download",
+    "title": "Download Extracted Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Analytic_Extracted_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/extracted_reports/{id}",
+    "title": "Update an existing Analytic Extracted Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Extacted_Reports",
+    "group": "Analytic_Extracted_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/field_reports/create_many",
+    "title": "Creates many Analytic Field Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "BulkCreateAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "field",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "alias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "function",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "format",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "groupBy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "orderBy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "custom",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/field_reports/destroy_many?ids={ids}",
+    "title": "Deletes many Analytic Field Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/destroy_many?ids=1&ids=2&ids=3 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "BulkDeleteAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/field_reports",
+    "title": "Creates a new Analytic Field Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "field",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "alias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "function",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "format",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "groupBy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "orderBy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "custom",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/field_reports/{id}",
+    "title": "Deletes a Analytic Field Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/field_reports",
+    "title": "Gets a list of Analytic Field Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/field_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/field_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/field_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/field_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/field_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/field_reports/{id}",
+    "title": "Gets a single Analytic Field Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/field_reports/{id}/create_many",
+    "title": "Rewrite fields set",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/{id}/create_many -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addFields",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/field_reports/{id}",
+    "title": "Update an existing Analytic Field Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/metrics",
+    "title": "Creates a new Analytic Metrics",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/metrics -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Metric",
+    "group": "Analytic_Metrics",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "table",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "metric",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticMetric/index.js",
+    "groupTitle": "Analytic_Metrics"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/metrics/{id}",
+    "title": "Deletes a Analytic Metrics",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/metrics/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Metric",
+    "group": "Analytic_Metrics",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticMetric/index.js",
+    "groupTitle": "Analytic_Metrics"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/metrics",
+    "title": "Gets a list of Analytic Metric",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/metrics -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Metric",
+    "group": "Analytic_Metrics",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/metrics?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/metrics?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/metrics?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/metrics?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/metrics?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticMetric/index.js",
+    "groupTitle": "Analytic_Metrics"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/metrics/{id}",
+    "title": "Gets a single Analytic Metrics",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/metrics/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Metric",
+    "group": "Analytic_Metrics",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticMetric/index.js",
+    "groupTitle": "Analytic_Metrics"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/metrics/{id}",
+    "title": "Update an existing Analytic Metrics",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/metrics/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Metric",
+    "group": "Analytic_Metrics",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticMetric/index.js",
+    "groupTitle": "Analytic_Metrics"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/tree_reports",
+    "title": "Creates a new Analytic Tree Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/tree_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Tree_Reports",
+    "group": "Analytic_Tree_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "tree",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticTreeReport/index.js",
+    "groupTitle": "Analytic_Tree_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/tree_reports/{id}",
+    "title": "Deletes a Analytic Tree Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Tree_Reports",
+    "group": "Analytic_Tree_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticTreeReport/index.js",
+    "groupTitle": "Analytic_Tree_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/tree_reports",
+    "title": "Gets a list of Analytic Tree Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/tree_reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Tree_Reports",
+    "group": "Analytic_Tree_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/tree_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/tree_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/tree_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/tree_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/tree_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticTreeReport/index.js",
+    "groupTitle": "Analytic_Tree_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/tree_reports/{id}",
+    "title": "Gets a single Analytic Tree Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Tree_Reports",
+    "group": "Analytic_Tree_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticTreeReport/index.js",
+    "groupTitle": "Analytic_Tree_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/tree_reports/{id}",
+    "title": "Update an existing Analytic Tree Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Tree_Reports",
+    "group": "Analytic_Tree_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticTreeReport/index.js",
+    "groupTitle": "Analytic_Tree_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/attachments/clone",
+    "title": "Clone an existing Attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneAttachments",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "delete",
+    "url": "/api/attachments/{id}",
+    "title": "Deletes a Attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAttachments",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "get",
+    "url": "/api/attachments",
+    "title": "Gets a list of Attachments",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAttachments",
+    "group": "Attachments",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/attachments?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/attachments?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/attachments?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/attachments?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/attachments?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "get",
+    "url": "/api/attachments/{id}",
+    "title": "Gets a single Attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAttachments",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "post",
+    "url": "/api/attachments",
+    "title": "Add attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "create",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "get",
+    "url": "/api/attachments/:id/download",
+    "title": "Download attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments/:id/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/{id}/attachment_download",
+    "title": "Download attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/attachment_download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "show",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "put",
+    "url": "/api/attachments/{id}",
+    "title": "Update an existing Attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAttachments",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "post",
+    "url": "/api/auth/local/forgot",
+    "title": "Creates a new password reset token",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/auth/local/forgot -d '{\"email\": \"[email-masked]\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Local_Forgot_Password",
+    "group": "Authentication",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "email",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/authLocal/index.js",
+    "groupTitle": "Authentication"
+  },
+  {
+    "type": "post",
+    "url": "/api/auth/local/reset/:token",
+    "title": "Reset user password",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/auth/local/reset/94b422c1fkdjhg766a198da6997yu6gcc963641d -d '{\"password\": \"My_newP@ssw0rd\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Local_Reset_Password",
+    "group": "Authentication",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "password",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/authLocal/index.js",
+    "groupTitle": "Authentication"
+  },
+  {
+    "type": "post",
+    "url": "/api/auth/google",
+    "title": "Creates a new User token",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Local_login",
+    "group": "Authentication",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "password",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/authGoogle/index.js",
+    "groupTitle": "Authentication"
+  },
+  {
+    "type": "post",
+    "url": "/api/auth/local",
+    "title": "Creates a new User token",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Local_login",
+    "group": "Authentication",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "password",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/authLocal/index.js",
+    "groupTitle": "Authentication"
+  },
+  {
+    "type": "post",
+    "url": "/api/automations",
+    "title": "Creates a new Automation",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAutomations",
+    "group": "Automations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "status",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/automations/{id}",
+    "title": "Deletes a Automation",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAutomations",
+    "group": "Automations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "get",
+    "url": "/api/automations",
+    "title": "Gets a list of Automations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAutomations",
+    "group": "Automations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/automations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/automations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/automations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/automations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/automations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "get",
+    "url": "/api/automations/{id}",
+    "title": "Gets a single Automation",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAutomations",
+    "group": "Automations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "post",
+    "url": "/api/automations/{id}/actions",
+    "title": "Creates new actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id}/actions -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addActions",
+    "group": "Automations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "action",
+            "description": "<p>Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser, bot, script</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data1",
+            "description": "<p>contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data2",
+            "description": "<p>integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data3",
+            "description": "<p>motionbar[NULL,NULL,WinAppArguments]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data4",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data5",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data6",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "data7",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "post",
+    "url": "/api/automations/{id}/conditions",
+    "title": "Creates new conditions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id}/conditions -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConditions",
+    "group": "Automations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "field",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "operator",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "get",
+    "url": "/api/automations/{id}/actions",
+    "title": "Gets Automation Actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id}/actions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getActions",
+    "group": "Automations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "get",
+    "url": "/api/automations/{id}/conditions",
+    "title": "Gets Automation Conditions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id}/conditions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConditions",
+    "group": "Automations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "put",
+    "url": "/api/automations/{id}",
+    "title": "Update an existing Automation",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAutomations",
+    "group": "Automations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "post",
+    "url": "/api/canned_answers",
+    "title": "Create a new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/canned_answers -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Canned_Answers",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cannedAnswer/index.js",
+    "groupTitle": "Canned_Answers"
+  },
+  {
+    "type": "delete",
+    "url": "/api/canned_answers/{id}",
+    "title": "Deletes a Canned Answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/canned_answers/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCanned_Answers",
+    "group": "Canned_Answers",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cannedAnswer/index.js",
+    "groupTitle": "Canned_Answers"
+  },
+  {
+    "type": "get",
+    "url": "/api/canned_answers",
+    "title": "Gets a list of Canned Answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/canned_answers -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCanned_Answers",
+    "group": "Canned_Answers",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/canned_answers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/canned_answers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/canned_answers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/canned_answers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/canned_answers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cannedAnswer/index.js",
+    "groupTitle": "Canned_Answers"
+  },
+  {
+    "type": "get",
+    "url": "/api/canned_answers/{id}",
+    "title": "Gets a single Canned Answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/canned_answers/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCanned_Answers",
+    "group": "Canned_Answers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cannedAnswer/index.js",
+    "groupTitle": "Canned_Answers"
+  },
+  {
+    "type": "put",
+    "url": "/api/canned_answers/{id}",
+    "title": "Update an existing Canned Answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/canned_answers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCanned_Answers",
+    "group": "Canned_Answers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cannedAnswer/index.js",
+    "groupTitle": "Canned_Answers"
+  },
+  {
+    "type": "get",
+    "url": "/chat/internal/users",
+    "title": "Gets Users Last Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/chat/internal/users -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getLastUsersMessages",
+    "group": "ChatInternalMessage",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "ChatInternalMessage"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Chat_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatApplication/index.js",
+    "groupTitle": "Chat_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Chat_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatApplication/index.js",
+    "groupTitle": "Chat_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Chat_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatApplication/index.js",
+    "groupTitle": "Chat_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/groups",
+    "title": "Creates a new Group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateGroups",
+    "group": "Chat_Groups",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "write",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/groups/{id}",
+    "title": "Deletes a Group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteGroups",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups/describe",
+    "title": "Gets table info about Groups",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeGroups",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups",
+    "title": "Gets a list of Groups",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetGroups",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/groups?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/groups?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/groups?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/groups?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/groups?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/groups/{id}/members",
+    "title": "Removes members from a group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/members?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveMembers",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups/{id}",
+    "title": "Gets a single Group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowGroups",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/groups/{id}/members",
+    "title": "Add members to chat group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/members -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMembers",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/groups/{id}/messages",
+    "title": "Creates a new group message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/messages -d '{\"body\": \"Hi operator!\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups/{id}/members",
+    "title": "Gets Members",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/members -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMembers",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups/{id}/messages",
+    "title": "Gets Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups/{id}/unread",
+    "title": "Get unread chat group messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/unread -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getUread",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/groups/{id}",
+    "title": "Update an existing Group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateGroups",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Chat_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ratingValue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"star\"",
+              "\"thumb\""
+            ],
+            "optional": true,
+            "field": "ratingType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "ratingMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "pathTranscript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailTranscript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "browserName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "browserVersion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "osName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "osVersion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceModel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceVendor",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "referer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customerIp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "formData",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closeReason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customerPort",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "vidaooSessionId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/abandon",
+    "title": "Abandon interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/abandon -d '{\"channel\": \"chat\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "abandon",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to set as abandon an interaction and stop the routing.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/interactions/{id}/messages",
+    "title": "Creates new messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/interactions/{id}/attachment_upload",
+    "title": "Add attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/attachment_upload -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "attachmentUpload",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/interactions/{id}/vidaoo",
+    "title": "Create Vidaoo Session",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/vidaoo  -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "createVidaooSession",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/custom_update",
+    "title": "Update interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/custom_update -d '{\"channel\": \"chat\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "customUpdate",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to update an interaction.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/{id}/download",
+    "title": "Gets interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/{id}/my_messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/my_messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMyMessages",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/internal/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Chat_Internal_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ChatInternalMessageId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/internal/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Chat_Internal_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/internal/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Chat_Internal_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/internal/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Chat_Internal_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/internal/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/internal/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/internal/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/internal/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/internal/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/internal/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Chat_Internal_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/internal/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Chat_Internal_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Chat_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Chat_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Chat_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Chat_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Chat_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Chat_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/offline_messages",
+    "title": "Creates a new OfflineMessage",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/offline_messages/{id}",
+    "title": "Deletes a OfflineMessage",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/offline_messages/describe",
+    "title": "Gets table info about OfflineMessages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/offline_messages",
+    "title": "Gets a list of OfflineMessages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/offline_messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/offline_messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/offline_messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/offline_messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/offline_messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/offline_messages/{id}",
+    "title": "Gets a single OfflineMessage",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/offline_messages/{id}",
+    "title": "Update an existing OfflineMessage",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/proactive_actions",
+    "title": "Creates a new Proactive Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/proactive_actions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateProactive_Actions",
+    "group": "Chat_Proactive_Actions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"mouseOver\"",
+              "\"timeout\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "selector",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatProactiveAction/index.js",
+    "groupTitle": "Chat_Proactive_Actions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/proactive_actions/{id}",
+    "title": "Deletes a Proactive Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteProactive_Actions",
+    "group": "Chat_Proactive_Actions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatProactiveAction/index.js",
+    "groupTitle": "Chat_Proactive_Actions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/proactive_actions/{id}",
+    "title": "Gets a single Proactive Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowProactive_Actions",
+    "group": "Chat_Proactive_Actions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatProactiveAction/index.js",
+    "groupTitle": "Chat_Proactive_Actions"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/proactive_actions/{id}",
+    "title": "Update an existing Proactive Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateProactive_Actions",
+    "group": "Chat_Proactive_Actions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatProactiveAction/index.js",
+    "groupTitle": "Chat_Proactive_Actions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/reports/queue",
+    "title": "Creates a new Chat Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/reports/queue/{id}",
+    "title": "Deletes a Chat Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/queue/describe",
+    "title": "Gets table info about Chat Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/queue",
+    "title": "Gets a list of Chat Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/queue/{id}",
+    "title": "Gets a single Chat Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/reports/queue/{id}",
+    "title": "Update an existing Chat Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Chat_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": true,
+            "field": "strategy",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/reports/transfer",
+    "title": "Creates a new Chat Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/reports/transfer/{id}",
+    "title": "Deletes a Chat Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/transfer/describe",
+    "title": "Gets table info about Chat Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/transfer",
+    "title": "Gets a list of Chat Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/transfer/{id}",
+    "title": "Gets a single Chat Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/reports/transfer/{id}",
+    "title": "Update an existing Chat Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/users",
+    "title": "Add agents to a website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites",
+    "title": "Creates a new Website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateWebsites",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "address",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mapKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mapKeyOffline",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentAlias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customerAlias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "color",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "color_button",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "textColor",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "fontSize",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remote",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "animation",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rounded\"",
+              "\"squared\""
+            ],
+            "optional": true,
+            "field": "header_shape",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "header_online",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "start_chat_button",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "offline_chat_button",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "header_offline",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "download_transcript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "whiteLabel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "defaultWhiteLabel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "sitepic",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closingQuestion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "formSubmitSuccessMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "formSubmitFailureMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "noteTitle",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "placeholderMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closingMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closingMessageButton",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "skipMessageButton",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "conditionAgreement",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableRating",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableFeedback",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableSendButton",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "feedbackTitle",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"star\"",
+              "\"thumb\""
+            ],
+            "optional": true,
+            "field": "ratingType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ratingStarsNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "onlineForm",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "offlineForm",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "autoclose",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableCustomerWriting",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "forwardTranscript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "forwardTranscriptMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "forwardOffline",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "forwardOfflineAddress",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "waitingTitle",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "waitingMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "offlineMessageSubject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "offlineMessageBody",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableUnmanagedNote",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "unmanagedMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "skipUnmanaged",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sendUnmanaged",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableCustomerAttachment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableCustomerCheckmarks",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "agentAvatar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "showAgentAvatar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "timezone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notificationTemplate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationSound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationShake",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "hideWhenOffline",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentIdentifier",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "waitForTheAssignedAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "alignment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "verticalAlignment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messagesAlignment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultTitle",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "customerAvatar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "showCustomerAvatar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "messageFontSize",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "backgroundColor",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "queueTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "queueTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "agentTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "systemAlias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "systemAvatar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "vidaooEscalation",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "vidaooApiKey",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/websites/{id}",
+    "title": "Deletes a Website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteWebsites",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/describe",
+    "title": "Gets table info about Websites",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeWebsites",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/users",
+    "title": "Gets agents from website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites",
+    "title": "Gets a list of Websites",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetWebsites",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/websites?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/websites?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/websites?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/websites?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/websites?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/websites/{id}/users",
+    "title": "Removes agents from a website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/websites/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/websites/{id}/dispositions",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}",
+    "title": "Gets a single Website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowWebsites",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/avatar",
+    "title": "Add avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/customer_avatar",
+    "title": "Add customer avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/customer_avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addCustomerAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/accounts/{id}/interactions",
+    "title": "Creates new interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/interactions -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addInteraction",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ratingValue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"star\"",
+              "\"thumb\""
+            ],
+            "optional": true,
+            "field": "ratingType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "ratingMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "pathTranscript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailTranscript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "browserName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "browserVersion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "osName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "osVersion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceModel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceVendor",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "referer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customerIp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "formData",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closeReason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customerPort",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "vidaooSessionId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/logo",
+    "title": "Add logo",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/logo -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addLogo",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/proactive_actions",
+    "title": "Creates new Proactive Actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/proactive_actions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addProactiveActions",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"mouseOver\"",
+              "\"timeout\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "selector",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/system_avatar",
+    "title": "Add system avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/system_avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addSystemAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/applications",
+    "title": "Gets Website Applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/avatar",
+    "title": "Get avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/avatar -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/customer_avatar",
+    "title": "Get Customer Avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/customer_avatar -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getCustomerAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/fields",
+    "title": "Gets Website Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/interactions",
+    "title": "Gets Website Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getInteraction",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/logo",
+    "title": "Get logo",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/logo -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getLogo",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/offline_messages",
+    "title": "Gets Website Offline Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/offline_messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getOfflineMessages",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/proactive_actions",
+    "title": "Gets Website Proactive Actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/proactive_actions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getProactiveActions",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/snippet",
+    "title": "Gets Website Snippet",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/snippet -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSnippet",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/system_avatar",
+    "title": "Get System Avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/system_avatar -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSystemAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/notify",
+    "title": "Notify new message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "notify",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new chat message to be sent to the system.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/offline",
+    "title": "Offline message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/offline -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "offline",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/websites/{id}",
+    "title": "Update an existing Website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateWebsites",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/cloudProviders",
+    "title": "Creates a new CloudProvider",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cloudProviders -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCloudProviders",
+    "group": "CloudProviders",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"AmazonAWS\"",
+              "\"Google\""
+            ],
+            "optional": false,
+            "field": "service",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data1",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data2",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cloudProvider/index.js",
+    "groupTitle": "CloudProviders"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cloudProviders/{id}",
+    "title": "Deletes a CloudProvider",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cloudProviders/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCloudProviders",
+    "group": "CloudProviders",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cloudProvider/index.js",
+    "groupTitle": "CloudProviders"
+  },
+  {
+    "type": "get",
+    "url": "/api/cloudProviders",
+    "title": "Gets a list of CloudProviders",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cloudProviders -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCloudProviders",
+    "group": "CloudProviders",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cloudProviders?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cloudProviders?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cloudProviders?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cloudProviders?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cloudProviders?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cloudProvider/index.js",
+    "groupTitle": "CloudProviders"
+  },
+  {
+    "type": "get",
+    "url": "/api/cloudProviders/{id}",
+    "title": "Gets a single CloudProvider",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cloudProviders/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCloudProviders",
+    "group": "CloudProviders",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cloudProvider/index.js",
+    "groupTitle": "CloudProviders"
+  },
+  {
+    "type": "put",
+    "url": "/api/cloudProviders/{id}",
+    "title": "Update an existing CloudProvider",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cloudProviders/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCloudProviders",
+    "group": "CloudProviders",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cloudProvider/index.js",
+    "groupTitle": "CloudProviders"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/companies",
+    "title": "Creates a new Company",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCompanies",
+    "group": "Cm_Companies",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "vat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "companyId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "website",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "street",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "postalCode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "city",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "country",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "emailDomain",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sStreet",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sPostalCode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sCity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sCountry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/companies/{id}",
+    "title": "Deletes a Company",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCompanies",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/companies/describe",
+    "title": "Gets table info about Companies",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeCompanies",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/companies",
+    "title": "Gets a list of Companies",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCompanies",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/companies?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/companies?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/companies?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/companies?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/companies?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/companies/{id}",
+    "title": "Gets a single Company",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCompanies",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/companies/{id}/contacts",
+    "title": "Creates new contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies/{id}/contacts -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addContacts",
+    "group": "Cm_Companies",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "firstName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "street",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "postalCode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "city",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "country",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dateOfBirth",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mobile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "url",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "facebook",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fb_data",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "twitter",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "skype",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "teams",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "viber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "line",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "wechat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "telegram",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "UserId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "scheduledat",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/companies/{id}/contacts",
+    "title": "Gets List Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/companies/{id}/contacts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getContacts",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/companies/{id}",
+    "title": "Update an existing Company",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCompanies",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/contacts/{id}",
+    "title": "Deletes a Contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteContacts",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/describe",
+    "title": "Gets table info about Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeContacts",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts",
+    "title": "Gets a list of Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetContacts",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/contacts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/contacts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/contacts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/contacts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/contacts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}/finals",
+    "title": "Gets contact hopper finals",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_finals -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperFinals",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}/hopper_histories",
+    "title": "Gets contact hopper histories",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_histories -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperHistories",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}/hoppers",
+    "title": "Gets contact hoppers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/hoppers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHoppers",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/create_many",
+    "title": "Create Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/create_many -d '[{\"firstName\": \"John\", \"lastName\": \"doe\", \"...\": \"...\"}]' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "bulkCreate",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts",
+    "title": "Create Contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts -d '{\"firstName\": \"John\", \"lastName\": \"doe\", \"...\": \"...\"}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "create",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}/jscripty_sessions",
+    "title": "Gets contact hopper blacks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_black -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getJscriptySessions",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}/tags",
+    "title": "Gets configurations tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/tags -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getTags",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/merge",
+    "title": "Merge Contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/merge -d '{\"from\": 1, \"to\": 2}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "merge",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/{id}/tags",
+    "title": "Sets new tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/tags -d '{\"ids\": [1,12]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "setTags",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}",
+    "title": "Gets a single Contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id} -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "show",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/contacts/{id}",
+    "title": "Update a single Contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id} -d '{\"firstName\": \"John\", \"lastName\": \"Doe\"}' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/custom_fields/{id}",
+    "title": "Deletes a Custom Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/custom_fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCustom_Fields",
+    "group": "Cm_Custom_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCustomField/index.js",
+    "groupTitle": "Cm_Custom_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/custom_fields",
+    "title": "Gets a list of Custom Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/custom_fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCustom_Fields",
+    "group": "Cm_Custom_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/custom_fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/custom_fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/custom_fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/custom_fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/custom_fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCustomField/index.js",
+    "groupTitle": "Cm_Custom_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/custom_fields/{id}",
+    "title": "Gets a single Custom Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/custom_fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCustom_Fields",
+    "group": "Cm_Custom_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCustomField/index.js",
+    "groupTitle": "Cm_Custom_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/custom_fields/{id}",
+    "title": "Update an existing Custom Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/custom_fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCustom_Fields",
+    "group": "Cm_Custom_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCustomField/index.js",
+    "groupTitle": "Cm_Custom_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper",
+    "title": "Creates a new Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateHopper",
+    "group": "Cm_Hopper",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "active",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "scheduledat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countbusyretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countcongestionretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countnoanswerretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "callback",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackuniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "recallme",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ContactId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ListId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "UserId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "VoiceQueueId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "CampaignId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countnosuchnumberretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countdropretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countabandonedretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countmachineretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countagentrejectretry",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper/describe",
+    "title": "Gets table info about Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeHopper",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper",
+    "title": "Gets a list of Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopper",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper/{id}",
+    "title": "Gets a single Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowHopper",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/hopper_black/{id}",
+    "title": "Deletes a Hopper Black",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_black/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteHopper_Black",
+    "group": "Cm_Hopper_Black",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperBlack/index.js",
+    "groupTitle": "Cm_Hopper_Black"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_black/describe",
+    "title": "Gets table info about Hopper Black",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_black/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeHopper_Black",
+    "group": "Cm_Hopper_Black",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperBlack/index.js",
+    "groupTitle": "Cm_Hopper_Black"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_black",
+    "title": "Gets a list of Hopper Black",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_black -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopper_Black",
+    "group": "Cm_Hopper_Black",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_black?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_black?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_black?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_black?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_black?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperBlack/index.js",
+    "groupTitle": "Cm_Hopper_Black"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_black/{id}",
+    "title": "Gets a single Hopper Black",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_black/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowHopper_Black",
+    "group": "Cm_Hopper_Black",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperBlack/index.js",
+    "groupTitle": "Cm_Hopper_Black"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/hopper_black/{id}",
+    "title": "Update an existing Hopper Black",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_black/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateHopper_Black",
+    "group": "Cm_Hopper_Black",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperBlack/index.js",
+    "groupTitle": "Cm_Hopper_Black"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper_final/checkContactHopper",
+    "title": "Check if contact is in hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/checkContactHopper -d '{\"VoiceQueueId\": \"VoiceQueueId\", \"CampaignId\": \"CampaignId\", \"ContactId\": \"ContactId\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "/checkContactHopper",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_final/describe",
+    "title": "Gets table info about HopperFinal",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_final/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_final",
+    "title": "Gets a list of HopperFinal",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_final -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_final?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_final?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_final?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_final?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_final?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_final/{id}",
+    "title": "Gets a single HopperFinal",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_final/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_final/campaign/countAttributes/{id}",
+    "title": "Return number contacts for attributes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/campaign/countAttributes/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "countContactsIvrCampaignHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_final/voice/queue/countAttributes/{id}",
+    "title": "Return number contacts for attributes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/voice/queue/countAttributes/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "countContactsQueueCampaignHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper_final/campaign/{id}",
+    "title": "Move contacts in hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/campaign/moveContacts/{id} -d '{\"state\": \"state\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "moveContactsIvrCampaignHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper_final/voice/queue/{id}",
+    "title": "Move contacts in hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/voice/queue/moveContacts/{id} -d '{\"state\": \"state\"}' -H 'Content-Type: application/json' -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "moveContactsQueueCampaignHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/hopper_final/{id}",
+    "title": "Update a single hopper final",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper_history",
+    "title": "Creates a new HopperHistory",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_history -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateHopperHistory",
+    "group": "Cm_Hopper_History",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "state",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "statedesc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "scheduledat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countbusyretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countcongestionretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countnoanswerretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countglobal",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "originatecalleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "originatecalleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "starttime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "responsetime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "answertime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "droptime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "endtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ringtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "holdtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "talktime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "followuptime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dropreason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "campaign",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "campaigntype",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "amd",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "callback",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackuniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "recallme",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "editedat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "edited",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countnosuchnumberretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countdropretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countabandonedretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countmachineretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countagentrejectretry",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperHistory/index.js",
+    "groupTitle": "Cm_Hopper_History"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_history/describe",
+    "title": "Gets table info about HopperHistory",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_history/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeHopperHistory",
+    "group": "Cm_Hopper_History",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperHistory/index.js",
+    "groupTitle": "Cm_Hopper_History"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_history",
+    "title": "Gets a list of HopperHistory",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_history -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperHistory",
+    "group": "Cm_Hopper_History",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_history?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_history?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_history?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_history?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_history?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperHistory/index.js",
+    "groupTitle": "Cm_Hopper_History"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_history/{id}",
+    "title": "Gets a single HopperHistory",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_history/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowHopperHistory",
+    "group": "Cm_Hopper_History",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperHistory/index.js",
+    "groupTitle": "Cm_Hopper_History"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/hopper_history/{id}",
+    "title": "Update a single hopper history",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_history/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "Cm_Hopper_History",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperHistory/index.js",
+    "groupTitle": "Cm_Hopper_History"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/hopper/{id}",
+    "title": "Delete Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroy",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper/opencontacts",
+    "title": "Gets Open Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/opencontacts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getOpenContacts",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper/preview",
+    "title": "Gets Preview Dialer Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/preview -d '{\"hopperIds\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getPreview",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/hopper/{id}",
+    "title": "Update an existing Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateHopper",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/lists",
+    "title": "Creates a new List",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateLists",
+    "group": "Cm_Lists",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialPrefix",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/lists/{id}",
+    "title": "Deletes a List",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteLists",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/describe",
+    "title": "Gets table info about Lists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeLists",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}/users",
+    "title": "Gets agents from list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists",
+    "title": "Gets a list of Lists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetLists",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/lists?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/lists?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/lists?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/lists?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/lists?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/lists/{id}/users",
+    "title": "Removes agents from a list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/lists/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}",
+    "title": "Gets a single List",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowLists",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/lists/{id}/users",
+    "title": "Adds agents to a list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAgents",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/lists/{id}/contacts",
+    "title": "Creates new contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/contacts -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addContacts",
+    "group": "Cm_Lists",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "firstName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "street",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "postalCode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "city",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "country",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dateOfBirth",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mobile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "url",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "facebook",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fb_data",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "twitter",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "skype",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "teams",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "viber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "line",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "wechat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "telegram",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "UserId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "scheduledat",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/lists/{id}/fields",
+    "title": "Creates a new custom field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/fields -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addCustomField",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/lists/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Cm_Lists",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}/contacts",
+    "title": "Gets List Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/contacts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getContacts",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}/fields",
+    "title": "Gets Custom Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getCustomFields",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}/dispositions",
+    "title": "Gets list dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}/contacts/csv",
+    "title": "Gets CSV List Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/contacts/csv -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "grunt",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/lists/{id}",
+    "title": "Update an existing List",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateLists",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/upload/:id",
+    "title": "Import new contacts by csv",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/upload/:id -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "import",
+    "group": "Cm_contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/upload",
+    "title": "Upload csv",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/upload -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "upload",
+    "group": "Cm_contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/csv",
+    "title": "Create new contacts by csv",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/csv -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "uploadCsv",
+    "group": "Cm_contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_contacts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/conditions/{id}",
+    "title": "Deletes a Condition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/conditions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteConditions",
+    "group": "Conditions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/condition/index.js",
+    "groupTitle": "Conditions"
+  },
+  {
+    "type": "put",
+    "url": "/api/conditions/{id}",
+    "title": "Update an existing Condition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/conditions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateConditions",
+    "group": "Conditions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/condition/index.js",
+    "groupTitle": "Conditions"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/custom_field",
+    "title": "Create a new custom field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/custom_field  -d '{\"name\": \"mycf\", \"type\": \"text\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCustomField",
+    "group": "Custom_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCustomField/index.js",
+    "groupTitle": "Custom_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/dashboards/items",
+    "title": "Create dasboard item",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/items \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Dashboard_Items",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboardItem/index.js",
+    "groupTitle": "Dashboard_Items"
+  },
+  {
+    "type": "delete",
+    "url": "/api/dashboards/items/{id}",
+    "title": "Deletes a Dashboard Item",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDashboard_Items",
+    "group": "Dashboard_Items",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboardItem/index.js",
+    "groupTitle": "Dashboard_Items"
+  },
+  {
+    "type": "get",
+    "url": "/api/dashboards/items/{id}",
+    "title": "Gets a single Dashboard Item",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDashboard_Items",
+    "group": "Dashboard_Items",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboardItem/index.js",
+    "groupTitle": "Dashboard_Items"
+  },
+  {
+    "type": "put",
+    "url": "/api/dashboards/items/{id}",
+    "title": "Update an existing item",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Update",
+    "group": "Dashboard_Items",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboardItem/index.js",
+    "groupTitle": "Dashboard_Items"
+  },
+  {
+    "type": "post",
+    "url": "/api/dashboards/clone",
+    "title": "Clone an existing Dashboard",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneDashboards",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "post",
+    "url": "/api/dashboards",
+    "title": "Creates a new Dashboard",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDashboards",
+    "group": "Dashboards",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "delete",
+    "url": "/api/dashboards/{id}",
+    "title": "Deletes a Dashboard",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDashboards",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "get",
+    "url": "/api/dashboards",
+    "title": "Gets a list of Dashboards",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDashboards",
+    "group": "Dashboards",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/dashboards?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/dashboards?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/dashboards?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/dashboards?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/dashboards?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "get",
+    "url": "/api/dashboards/{id}",
+    "title": "Gets a single Dashboard",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDashboards",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "post",
+    "url": "/api/dashboards/{id}/items",
+    "title": "Creates new item",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/{id}/items -d '{\"type\": \"counter\", \"...\": \"...\"}]' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addItem",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "get",
+    "url": "/api/dashboards/{id}/items",
+    "title": "Gets items",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/{id}/items -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getItems",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "put",
+    "url": "/api/dashboards/{id}",
+    "title": "Update an existing Dashboard",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDashboards",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/desk/accounts",
+    "title": "Creates a new Desk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDesk_Accounts",
+    "group": "Desk_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"basic\""
+            ],
+            "optional": true,
+            "field": "authType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "consumerKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "consumerSecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tokenSecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"integrationTab\"",
+              "\"newTab\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/desk/accounts/{id}",
+    "title": "Deletes a Desk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDesk_Accounts",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/accounts",
+    "title": "Gets a list of Desk Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDesk_Accounts",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/accounts/{id}",
+    "title": "Gets a single Desk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDesk_Accounts",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/desk/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/desk/accounts/{id}",
+    "title": "Update an existing Desk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDesk_Accounts",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/desk/configurations",
+    "title": "Creates a new Desk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDesk_Configurations",
+    "group": "Desk_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/desk/configurations/{id}",
+    "title": "Deletes a Desk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDesk_Configurations",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations",
+    "title": "Gets a list of Desk Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDesk_Configurations",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations/{id}",
+    "title": "Gets a single Desk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDesk_Configurations",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations/{id}/tags",
+    "title": "Gets configurations tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/tags -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getTags",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/desk/configurations/{id}/tags",
+    "title": "Sets new tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "setTags",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/desk/configurations/{id}",
+    "title": "Update an existing Desk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDesk_Configurations",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/desk/fields",
+    "title": "Creates a new Desk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDesk_Fields",
+    "group": "Desk_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskField/index.js",
+    "groupTitle": "Desk_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/desk/fields/{id}",
+    "title": "Deletes a Desk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDesk_Fields",
+    "group": "Desk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskField/index.js",
+    "groupTitle": "Desk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/fields",
+    "title": "Gets a list of Desk Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDesk_Fields",
+    "group": "Desk_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskField/index.js",
+    "groupTitle": "Desk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/fields/{id}",
+    "title": "Gets a single Desk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDesk_Fields",
+    "group": "Desk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskField/index.js",
+    "groupTitle": "Desk_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/desk/fields/{id}",
+    "title": "Update an existing Desk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDesk_Fields",
+    "group": "Desk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskField/index.js",
+    "groupTitle": "Desk_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/dispositions",
+    "title": "Creates a new Disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDispositions",
+    "group": "Dispositions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/disposition/index.js",
+    "groupTitle": "Dispositions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/dispositions/{id}",
+    "title": "Deletes a Disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dispositions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDispositions",
+    "group": "Dispositions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/disposition/index.js",
+    "groupTitle": "Dispositions"
+  },
+  {
+    "type": "get",
+    "url": "/api/dispositions",
+    "title": "Gets a list of Dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dispositions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDispositions",
+    "group": "Dispositions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/dispositions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/dispositions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/dispositions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/dispositions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/dispositions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/disposition/index.js",
+    "groupTitle": "Dispositions"
+  },
+  {
+    "type": "get",
+    "url": "/api/dispositions/{id}",
+    "title": "Gets a single Disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dispositions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDispositions",
+    "group": "Dispositions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/disposition/index.js",
+    "groupTitle": "Dispositions"
+  },
+  {
+    "type": "put",
+    "url": "/api/dispositions/{id}",
+    "title": "Update an existing Disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDispositions",
+    "group": "Dispositions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/disposition/index.js",
+    "groupTitle": "Dispositions"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/dynamics365/accounts",
+    "title": "Creates a new Dynamics365 Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDynamics365_Accounts",
+    "group": "Dynamics365_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tenantId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientSecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/dynamics365/accounts/{id}",
+    "title": "Deletes a Dynamics365 Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDynamics365_Accounts",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/accounts",
+    "title": "Gets a list of Dynamics365 Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDynamics365_Accounts",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/accounts/{id}",
+    "title": "Gets a single Dynamics365 Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDynamics365_Accounts",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/dynamics365/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/dynamics365/accounts/{id}",
+    "title": "Update an existing Dynamics365 Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDynamics365_Accounts",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/dynamics365/configurations",
+    "title": "Creates a new Dynamics365 Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDynamics365_Configurations",
+    "group": "Dynamics365_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"incident\"",
+              "\"phonecall\""
+            ],
+            "optional": true,
+            "field": "ticketType",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/dynamics365/configurations/{id}",
+    "title": "Deletes a Dynamics365 Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDynamics365_Configurations",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/configurations",
+    "title": "Gets a list of Dynamics365 Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDynamics365_Configurations",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/configurations/{id}",
+    "title": "Gets a single Dynamics365 Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDynamics365_Configurations",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/dynamics365/configurations/{id}",
+    "title": "Update an existing Dynamics365 Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDynamics365_Configurations",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/dynamics365/fields",
+    "title": "Creates a new Dynamics365 Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDynamics365_Fields",
+    "group": "Dynamics365_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Field/index.js",
+    "groupTitle": "Dynamics365_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/dynamics365/fields/{id}",
+    "title": "Deletes a Dynamics365 Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDynamics365_Fields",
+    "group": "Dynamics365_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Field/index.js",
+    "groupTitle": "Dynamics365_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/fields",
+    "title": "Gets a list of Dynamics365 Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDynamics365_Fields",
+    "group": "Dynamics365_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Field/index.js",
+    "groupTitle": "Dynamics365_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/fields/{id}",
+    "title": "Gets a single Dynamics365 Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDynamics365_Fields",
+    "group": "Dynamics365_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Field/index.js",
+    "groupTitle": "Dynamics365_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/dynamics365/fields/{id}",
+    "title": "Update an existing Dynamics365 Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDynamics365_Fields",
+    "group": "Dynamics365_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Field/index.js",
+    "groupTitle": "Dynamics365_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/users",
+    "title": "Add agents to a fax account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts",
+    "title": "Creates a new Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAccounts",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "ecm",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "headerinfo",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "localstationid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"2400\"",
+              "\"4800\"",
+              "\"7200\"",
+              "\"9600\"",
+              "\"12000\"",
+              "\"14400\""
+            ],
+            "optional": true,
+            "field": "minrate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"2400\"",
+              "\"4800\"",
+              "\"7200\"",
+              "\"9600\"",
+              "\"12000\"",
+              "\"14400\""
+            ],
+            "optional": true,
+            "field": "maxrate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "modem",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "gateway",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "faxdetect",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "t38timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"SIP\"",
+              "\"IAX\"",
+              "\"DADHI\"",
+              "\"KHOMP\""
+            ],
+            "optional": true,
+            "field": "tech",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notificationTemplate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationSound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationShake",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "waitForTheAssignedAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "queueTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "queueTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "agentTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/accounts/{id}",
+    "title": "Deletes a Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAccounts",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/describe",
+    "title": "Gets table info about Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAccounts",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts",
+    "title": "Gets a list of Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAccounts",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/users",
+    "title": "Gets agents from fax account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/accounts/{id}/users",
+    "title": "Removes agents from a fax account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/accounts/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/accounts/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}",
+    "title": "Gets a single Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAccounts",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/addaccountapplications",
+    "title": "Creates new account and applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/interactions",
+    "title": "Creates new interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/interactions -d '[{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addInteraction",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/applications",
+    "title": "Gets account pplications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/interactions",
+    "title": "Gets account interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getInteraction",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/messages",
+    "title": "Gets account messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/send",
+    "title": "Send new fax",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/send -d '{from: '\"John Doe\" <123456>'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "sendFax",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/accounts/{id}",
+    "title": "Update an existing Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAccounts",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/updateaccountapplications",
+    "title": "Update account and applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/updateaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/applications",
+    "title": "Creates a new Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateApplications",
+    "group": "Fax_Applications",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxApplication/index.js",
+    "groupTitle": "Fax_Applications"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Fax_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxApplication/index.js",
+    "groupTitle": "Fax_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/applications",
+    "title": "Gets a list of Applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/applications -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetApplications",
+    "group": "Fax_Applications",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxApplication/index.js",
+    "groupTitle": "Fax_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Fax_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxApplication/index.js",
+    "groupTitle": "Fax_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Fax_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxApplication/index.js",
+    "groupTitle": "Fax_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Fax_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/interactions/{id}/messages",
+    "title": "Creates new messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Fax_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "failMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/interactions/{id}/download",
+    "title": "Get interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/messages/{id}/download",
+    "title": "Get message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Fax_Message",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Message"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/reports/queue",
+    "title": "Creates a new Fax Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/reports/queue/{id}",
+    "title": "Deletes a Fax Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/queue/describe",
+    "title": "Gets table info about Fax Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/queue",
+    "title": "Gets a list of Fax Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/queue/{id}",
+    "title": "Gets a single Fax Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/reports/queue/{id}",
+    "title": "Update an existing Fax Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Fax_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": false,
+            "field": "strategy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "lastAgent",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/reports/transfer",
+    "title": "Creates a new Fax Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/reports/transfer/{id}",
+    "title": "Deletes a Fax Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/transfer/describe",
+    "title": "Gets table info about Fax Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/transfer",
+    "title": "Gets a list of Fax Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/transfer/{id}",
+    "title": "Gets a single Fax Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/reports/transfer/{id}",
+    "title": "Update an existing Fax Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshdesk/accounts",
+    "title": "Creates a new Freshdesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshdesk_Accounts",
+    "group": "Freshdesk_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "apiKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshdesk/accounts/{id}",
+    "title": "Deletes a Freshdesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshdesk_Accounts",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/accounts",
+    "title": "Gets a list of Freshdesk Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshdesk_Accounts",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/accounts/{id}",
+    "title": "Gets a single Freshdesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshdesk_Accounts",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshdesk/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshdesk/accounts/{id}",
+    "title": "Update an existing Freshdesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshdesk_Accounts",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshdesk/configurations",
+    "title": "Creates a new Freshdesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshdesk_Configurations",
+    "group": "Freshdesk_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshdesk/configurations/{id}",
+    "title": "Deletes a Freshdesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshdesk_Configurations",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations",
+    "title": "Gets a list of Freshdesk Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshdesk_Configurations",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations/{id}",
+    "title": "Gets a single Freshdesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshdesk_Configurations",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations/{id}/tags",
+    "title": "Gets configurations tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/tags -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getTags",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshdesk/configurations/{id}/tags",
+    "title": "Sets new tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "setTags",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshdesk/configurations/{id}",
+    "title": "Update an existing Freshdesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshdesk_Configurations",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshdesk/fields",
+    "title": "Creates a new Freshdesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshdesk_Fields",
+    "group": "Freshdesk_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskField/index.js",
+    "groupTitle": "Freshdesk_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshdesk/fields/{id}",
+    "title": "Deletes a Freshdesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshdesk_Fields",
+    "group": "Freshdesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskField/index.js",
+    "groupTitle": "Freshdesk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/fields",
+    "title": "Gets a list of Freshdesk Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshdesk_Fields",
+    "group": "Freshdesk_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskField/index.js",
+    "groupTitle": "Freshdesk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/fields/{id}",
+    "title": "Gets a single Freshdesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshdesk_Fields",
+    "group": "Freshdesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskField/index.js",
+    "groupTitle": "Freshdesk_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshdesk/fields/{id}",
+    "title": "Update an existing Freshdesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshdesk_Fields",
+    "group": "Freshdesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskField/index.js",
+    "groupTitle": "Freshdesk_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshsales/accounts",
+    "title": "Creates a new Freshsales Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshsales_Accounts",
+    "group": "Freshsales_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "apiKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshsales/accounts/{id}",
+    "title": "Deletes a Freshsales Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshsales_Accounts",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/accounts",
+    "title": "Gets a list of Freshsales Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshsales_Accounts",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/accounts/{id}",
+    "title": "Gets a single Freshsales Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshsales_Accounts",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshsales/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshsales/accounts/{id}",
+    "title": "Update an existing Freshsales Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshsales_Accounts",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshsales/configurations",
+    "title": "Creates a new Freshsales Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshsales_Configurations",
+    "group": "Freshsales_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshsales/configurations/{id}",
+    "title": "Deletes a Freshsales Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshsales_Configurations",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/configurations",
+    "title": "Gets a list of Freshsales Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshsales_Configurations",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/configurations/{id}",
+    "title": "Gets a single Freshsales Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshsales_Configurations",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshsales/configurations/{id}",
+    "title": "Update an existing Freshsales Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshsales_Configurations",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshsales/fields",
+    "title": "Creates a new Freshsales Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshsales_Fields",
+    "group": "Freshsales_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesField/index.js",
+    "groupTitle": "Freshsales_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshsales/fields/{id}",
+    "title": "Deletes a Freshsales Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshsales_Fields",
+    "group": "Freshsales_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesField/index.js",
+    "groupTitle": "Freshsales_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/fields",
+    "title": "Gets a list of Freshsales Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshsales_Fields",
+    "group": "Freshsales_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesField/index.js",
+    "groupTitle": "Freshsales_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/fields/{id}",
+    "title": "Gets a single Freshsales Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshsales_Fields",
+    "group": "Freshsales_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesField/index.js",
+    "groupTitle": "Freshsales_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshsales/fields/{id}",
+    "title": "Update an existing Freshsales Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshsales_Fields",
+    "group": "Freshsales_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesField/index.js",
+    "groupTitle": "Freshsales_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/campaigns/{id}/blacklists",
+    "title": "Add blacklists to an IVR campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/blacklists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddBlackLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "post",
+    "url": "/api/campaigns/{id}/lists",
+    "title": "Add lists to an IVR campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/lists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "post",
+    "url": "/api/campaigns/clone",
+    "title": "Clone an existing IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "post",
+    "url": "/api/campaigns",
+    "title": "Creates a new IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"ivr\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "active",
+            "description": "<p>Active/Disactive Campaign</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "limitCalls",
+            "description": "<p>Max 200 calls.</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialOriginateCallerIdName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialOriginateCallerIdNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialOriginateTimeout",
+            "description": "<p>Originate Timeout Seconds (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCongestionMaxRetry",
+            "description": "<p>#Congestion Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCongestionRetryFrequency",
+            "description": "<p>Congestion Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialBusyMaxRetry",
+            "description": "<p>#Busy Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialBusyRetryFrequency",
+            "description": "<p>Busy Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoAnswerMaxRetry",
+            "description": "<p>#NoAnswer Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoAnswerRetryFrequency",
+            "description": "<p>NoAnswer Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialGlobalMaxRetry",
+            "description": "<p>#Global Max Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialTimezone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialGlobalInterval",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"always\"",
+              "\"never\"",
+              "\"onlyIfOpen\""
+            ],
+            "optional": true,
+            "field": "dialCheckDuplicateType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialAMDActive",
+            "description": "<p>Active/Disactive AMD</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDInitialSilence",
+            "description": "<p>#AMD Initial Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDGreeting",
+            "description": "<p>#AMD Greeting</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDAfterGreetingSilence",
+            "description": "<p>#AMD After Greeting Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDTotalAnalysisTime",
+            "description": "<p>#AMD Total Analysis Time</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMinWordLength",
+            "description": "<p>#AMD Min Word Length</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDBetweenWordsSilence",
+            "description": "<p>#AMD Between Words Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMaximumNumberOfWords",
+            "description": "<p>#AMD Maximum Number Of Words</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDSilenceThreshold",
+            "description": "<p>#AMD Silence Threshold (min:0, max:32767)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMaximumWordLength",
+            "description": "<p>#AMD Maximum Word Length</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"DESC\"",
+              "\"ASC\""
+            ],
+            "optional": true,
+            "field": "dialOrderByScheduledAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialPrefix",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialRandomLastDigitCallerIdNumber",
+            "description": "<p>Random Last Digit (min:1, max:15)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCutDigit",
+            "description": "<p>Cut Digit (min:1, max:15)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoSuchNumberMaxRetry",
+            "description": "<p>#NoSuchNumber Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoSuchNumberRetryFrequency",
+            "description": "<p>NoSuchNumber Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialDropMaxRetry",
+            "description": "<p>#Drop Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialDropRetryFrequency",
+            "description": "<p>Drop Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAbandonedMaxRetry",
+            "description": "<p>#Abandoned Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAbandonedRetryFrequency",
+            "description": "<p>Abandoned Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialMachineMaxRetry",
+            "description": "<p>#Machine Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialMachineRetryFrequency",
+            "description": "<p>Machine Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAgentRejectMaxRetry",
+            "description": "<p>#AgentReject Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAgentRejectRetryFrequency",
+            "description": "<p>AgentReject Retry Frequency Minutes (min:1, max:99999)</p>"
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "delete",
+    "url": "/api/campaigns/{id}",
+    "title": "Deletes a IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/blacklists",
+    "title": "Get IVR campaign blacklists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/blacklists -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetBlackLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/finals",
+    "title": "Gets IVR campaign hopper finals",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/hopper_finals -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperFinals",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/hopper_histories",
+    "title": "Gets IVR campaign hopper histories",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/hopper_histories -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperHistories",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/hoppers",
+    "title": "Gets IVR campaign hoppers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/hoppers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHoppers",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns",
+    "title": "Gets a list of IVR Campaigns",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/campaigns?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/campaigns?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/campaigns?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/campaigns?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/campaigns?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/lists",
+    "title": "Get IVR campaign lists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/lists -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "delete",
+    "url": "/api/campaigns/{id}/blacklists",
+    "title": "Remove blacklists from an IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/blacklists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveBlackLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "delete",
+    "url": "/api/campaigns/{id}/lists",
+    "title": "Remove lists from an IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/lists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}",
+    "title": "Gets a single IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/blacks",
+    "title": "Gets IVR campaign hopper blacks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/hopper_black -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getHopperBlacks",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "put",
+    "url": "/api/campaigns/{id}",
+    "title": "Update an existing IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/reports",
+    "title": "Creates a new Integration Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateIntegration_Reports",
+    "group": "Integration_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "integration",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "eventChannel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitStatus",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "ticketId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "integrationId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contacts",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interface",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentcalledAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentconnectAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "holdtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentcomplete",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentcompleteAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "talktime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentacw",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "acwtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentringnoanswer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentringnoanswerAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentdump",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentdumpAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastevent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "channelstate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channelstatedesc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "connectedlinenum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "connectedlinename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "language",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destchannel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "destchannelstate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destchannelstatedesc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destcalleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destcalleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destconnectedlinenum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destconnectedlinename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destlanguage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destaccountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destcontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destpriority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destuniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "inReplyTo",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "subject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "to",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "cc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "attachment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "html",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "text",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"SENT\"",
+              "\"SENDING\"",
+              "\"RECEIVED\"",
+              "\"FAILED\""
+            ],
+            "optional": true,
+            "field": "status",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "url",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "projectId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/reports/{id}",
+    "title": "Deletes a Integration Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteIntegration_Reports",
+    "group": "Integration_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/reports/describe",
+    "title": "Gets table info about Integration Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeIntegration_Reports",
+    "group": "Integration_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/reports",
+    "title": "Gets a list of Integration Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetIntegration_Reports",
+    "group": "Integration_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/reports/{id}",
+    "title": "Gets a single Integration Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowIntegration_Reports",
+    "group": "Integration_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/reports/{id}",
+    "title": "Update an existing Integration Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateIntegration_Reports",
+    "group": "Integration_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/intervals",
+    "title": "Creates a new Interval",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateIntervals",
+    "group": "Intervals",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "delete",
+    "url": "/api/intervals/{id}",
+    "title": "Deletes a Interval",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "get",
+    "url": "/api/intervals",
+    "title": "Gets a list of Intervals",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/intervals?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/intervals?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/intervals?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/intervals?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/intervals?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "get",
+    "url": "/api/intervals/{id}",
+    "title": "Gets a single Interval",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "post",
+    "url": "/api/intervals/{id}/sub_intervals",
+    "title": "Creates a new sub interval",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -d '{\"interval\": \"00:00-08:30,mon-fri,*,*\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addInterval",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "post",
+    "url": "/api/intervals/{id}/sub_intervals/create_many",
+    "title": "Create new sub intervals set",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "get",
+    "url": "/api/intervals/{id}/sub_intervals",
+    "title": "Get sub intervals set",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "put",
+    "url": "/api/intervals/{id}",
+    "title": "Update an existing Interval",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "post",
+    "url": "/api/jira",
+    "title": "Creates a new issue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jira -d '{\"key\": \"Bug\", \"description\": \"I can't do it!\"}' \\\n -H \"Content-Type: application/json\" -X POST -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "Creates_Issue",
+    "group": "Issue",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"Bug\""
+            ],
+            "optional": true,
+            "field": "issuetype",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "summary",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jira/index.js",
+    "groupTitle": "Issue"
+  },
+  {
+    "type": "post",
+    "url": "/api/jscripty/answers/reports",
+    "title": "Creates a new Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateReports",
+    "group": "JscriptyAnswerReport",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "question",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "answer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "projectname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "questionId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "delete",
+    "url": "/api/jscripty/answers/reports/{id}",
+    "title": "Deletes a Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteReports",
+    "group": "JscriptyAnswerReport",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/answers/reports/describe",
+    "title": "Gets table info about Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeReports",
+    "group": "JscriptyAnswerReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/answers/reports",
+    "title": "Gets a list of Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetReports",
+    "group": "JscriptyAnswerReport",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/answers/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/answers/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/answers/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/answers/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/answers/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/answers/reports/{id}",
+    "title": "Gets a single Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowReports",
+    "group": "JscriptyAnswerReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "put",
+    "url": "/api/jscripty/answers/reports/{id}",
+    "title": "Update an existing Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateReports",
+    "group": "JscriptyAnswerReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "post",
+    "url": "/api/jscripty/questions/reports",
+    "title": "Creates a new Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateReports",
+    "group": "JscriptyQuestionReport",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "question",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "answer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "projectname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "questionId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "delete",
+    "url": "/api/jscripty/questions/reports/{id}",
+    "title": "Deletes a Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteReports",
+    "group": "JscriptyQuestionReport",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/questions/reports/describe",
+    "title": "Gets table info about Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeReports",
+    "group": "JscriptyQuestionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/questions/reports",
+    "title": "Gets a list of Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetReports",
+    "group": "JscriptyQuestionReport",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/questions/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/questions/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/questions/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/questions/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/questions/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/questions/reports/{id}",
+    "title": "Gets a single Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowReports",
+    "group": "JscriptyQuestionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "put",
+    "url": "/api/jscripty/questions/reports/{id}",
+    "title": "Update an existing Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateReports",
+    "group": "JscriptyQuestionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "post",
+    "url": "/api/jscripty/sessions/reports",
+    "title": "Creates a new Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateReports",
+    "group": "JscriptySessionReport",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "starttime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "endtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "projectname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "completed",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "delete",
+    "url": "/api/jscripty/sessions/reports/{id}",
+    "title": "Deletes a Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteReports",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/sessions/reports/describe",
+    "title": "Gets table info about Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeReports",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/sessions/reports",
+    "title": "Gets a list of Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetReports",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/sessions/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/sessions/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/sessions/reports/{id}",
+    "title": "Gets a single Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowReports",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/sessions/reports/{id}/questions",
+    "title": "Gets Jscripty Session questions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id}/questions -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getQuestions",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "put",
+    "url": "/api/jscripty/sessions/reports/{id}",
+    "title": "Update an existing Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateReports",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "post",
+    "url": "/api/jscripty/projects/clone",
+    "title": "Clone an existing Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneProjects",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "post",
+    "url": "/api/jscripty/projects",
+    "title": "Creates a new Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateProjects",
+    "group": "Jscripty_Projects",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "formData",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableUncompleteSave",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "sendUnpauseOnSubmit",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "delete",
+    "url": "/api/jscripty/projects/{id}",
+    "title": "Deletes a Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteProjects",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/projects",
+    "title": "Gets a list of Projects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetProjects",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/projects?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/projects?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/projects?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/projects?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/projects?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/projects/{id}",
+    "title": "Gets a single Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowProjects",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/projects/{id}/answers",
+    "title": "Gets jscripty project answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id}/answers -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/projects/{id}/sessions",
+    "title": "Gets jscripty project sessions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id}/sessions -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSessions",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/projects/{id}/summary",
+    "title": "Gets jscripty project summary",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id}/summary -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSummary",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "put",
+    "url": "/api/jscripty/projects/{id}",
+    "title": "Update an existing Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateProjects",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/license",
+    "title": "Gets License Info",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/license -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "index",
+    "group": "License",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/license/index.js",
+    "groupTitle": "License"
+  },
+  {
+    "type": "put",
+    "url": "/api/license/{id}",
+    "title": "Update License Info",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/license/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "License",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/license/index.js",
+    "groupTitle": "License"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/users",
+    "title": "Add agents to a mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/in_servers",
+    "title": "Creates a new IMAP server",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddImap",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "authentication",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "user",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "port",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "tls",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "connTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "authTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "service",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/out_servers",
+    "title": "Creates a new SMTP server",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSmtp",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "user",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pass",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "port",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secure",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "service",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "authentication",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}",
+    "title": "Deletes a mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMailAccounts",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/describe",
+    "title": "Gets table info about Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAccounts",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts",
+    "title": "Gets a list of Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAccounts",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/users",
+    "title": "Gets agents from mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/in_servers",
+    "title": "Gets account IMAP server",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetImap",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/out_servers",
+    "title": "Gets account SMTP server",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetSmtp",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}/users",
+    "title": "Removes agents from a mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}/in_servers",
+    "title": "Removes IMAP server from an account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveImmap",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}/out_servers",
+    "title": "Removes SMTP server from an account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSmtp",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}",
+    "title": "Gets a single Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAccounts",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/interactions",
+    "title": "Creates new interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/interactions -d '[{\"subject\": \"My printer is on fire!\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addInteraction",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "inReplyTo",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "to",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "cc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "subject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "attach",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "substatus",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "substatusAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "lastMsgBody",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "lastMsgText",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts",
+    "title": "Create a mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "create",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/applications",
+    "title": "Gets account applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/interactions",
+    "title": "Gets account interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getInteraction",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/messages",
+    "title": "Gets account messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/send",
+    "title": "Send new mail",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/send -d '{from: '\"John Doe\" <[email-masked]>'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "sendMail",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/accounts/{id}",
+    "title": "Update an existing Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAccounts",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/verify",
+    "title": "Verify mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/verify -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "verifySmtp",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Mail_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailApplication/index.js",
+    "groupTitle": "Mail_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Mail_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailApplication/index.js",
+    "groupTitle": "Mail_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Mail_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailApplication/index.js",
+    "groupTitle": "Mail_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Mail_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "inReplyTo",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "to",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "cc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "subject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "attach",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "substatus",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "substatusAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "lastMsgBody",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "lastMsgText",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/interactions/{id}/messages",
+    "title": "Creates new message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id}/messages -d '[{\"to\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Mail_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "plainBody",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "to",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "cc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "bcc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "subject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sentAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "attach",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "originTo",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "originCc",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/interactions/{id}/download",
+    "title": "Gets interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/messages",
+    "title": "Create a message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "createMessage",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/messages/{id}/download",
+    "title": "Gets message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/reports/queue",
+    "title": "Creates a new Mail Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/reports/queue/{id}",
+    "title": "Deletes a Mail Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/queue/describe",
+    "title": "Gets table info about Mail Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/queue",
+    "title": "Gets a list of Mail Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/queue/{id}",
+    "title": "Gets a single Mail Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/reports/queue/{id}",
+    "title": "Update an existing Mail Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Mail_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": true,
+            "field": "strategy",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/out_servers",
+    "title": "Creates a new SMTP",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/out_servers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSMTPs",
+    "group": "Mail_SMTP",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "user",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pass",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "port",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secure",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "service",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "authentication",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailServerOut/index.js",
+    "groupTitle": "Mail_SMTP"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/out_servers/{id}",
+    "title": "Deletes a SMTP",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/out_servers/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSMTPs",
+    "group": "Mail_SMTP",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailServerOut/index.js",
+    "groupTitle": "Mail_SMTP"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/out_servers",
+    "title": "Gets a list of SMTPs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/out_servers -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSMTPs",
+    "group": "Mail_SMTP",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/out_servers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/out_servers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/out_servers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/out_servers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/out_servers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailServerOut/index.js",
+    "groupTitle": "Mail_SMTP"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/out_servers/{id}",
+    "title": "Gets a single SMTP",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/out_servers/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSMTPs",
+    "group": "Mail_SMTP",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailServerOut/index.js",
+    "groupTitle": "Mail_SMTP"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/out_servers/{id}",
+    "title": "Update an existing SMTP",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/out_servers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSMTPs",
+    "group": "Mail_SMTP",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailServerOut/index.js",
+    "groupTitle": "Mail_SMTP"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/substatuses",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSubstatuses",
+    "group": "Mail_Substatuses",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/substatuses/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSubstatuses",
+    "group": "Mail_Substatuses",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/substatuses/describe",
+    "title": "Gets table info about Substatuses",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeSubstatuses",
+    "group": "Mail_Substatuses",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/substatuses",
+    "title": "Gets a list of Substatuses",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSubstatuses",
+    "group": "Mail_Substatuses",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/substatuses?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/substatuses?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/substatuses?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/substatuses?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/substatuses?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/substatuses/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSubstatuses",
+    "group": "Mail_Substatuses",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/substatuses/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSubstatuses",
+    "group": "Mail_Substatuses",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/reports/transfer",
+    "title": "Creates a new Mail Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/reports/transfer/{id}",
+    "title": "Deletes a Mail Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/transfer/describe",
+    "title": "Gets table info about Mail Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/transfer",
+    "title": "Gets a list of Mail Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/transfer/{id}",
+    "title": "Gets a single Mail Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/reports/transfer/{id}",
+    "title": "Update an existing Mail Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/members/reports/describe",
+    "title": "Gets table info about Member Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/members/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMember_Reports",
+    "group": "Member_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/memberReport/index.js",
+    "groupTitle": "Member_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/members/reports",
+    "title": "Gets a list of Member Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/members/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMember_Reports",
+    "group": "Member_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/members/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/members/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/members/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/members/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/members/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/memberReport/index.js",
+    "groupTitle": "Member_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/members/reports/{id}",
+    "title": "Gets a single Member Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/members/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMember_Reports",
+    "group": "Member_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/memberReport/index.js",
+    "groupTitle": "Member_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/migrations",
+    "title": "Gets a list of Migrations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/migrations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMigrations",
+    "group": "Migrations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/migrations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/migrations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/migrations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/migrations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/migrations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/migration/index.js",
+    "groupTitle": "Migrations"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/networks",
+    "title": "Create a new network",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/networks -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Networks",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/network/index.js",
+    "groupTitle": "Networks"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/networks/{id}",
+    "title": "Deletes a network",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/networks/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "Delete",
+    "group": "Networks",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/network/index.js",
+    "groupTitle": "Networks"
+  },
+  {
+    "type": "get",
+    "url": "/api/networks",
+    "title": "Gets a list of Networks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/networks -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetNetworks",
+    "group": "Networks",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/networks?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/networks?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/networks?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/networks?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/networks?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/network/index.js",
+    "groupTitle": "Networks"
+  },
+  {
+    "type": "get",
+    "url": "/api/networks/{id}",
+    "title": "Gets a single Network",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/networks/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowNetworks",
+    "group": "Networks",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/network/index.js",
+    "groupTitle": "Networks"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/networks/{id}",
+    "title": "Update an existing network",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/networks/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Update",
+    "group": "Networks",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/network/index.js",
+    "groupTitle": "Networks"
+  },
+  {
+    "type": "post",
+    "url": "/api/notifications",
+    "title": "Send notification to user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/notifications -d '{\"text\": \"Hello!\", \"TemplateId\": 1}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Send",
+    "group": "Notifications",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/notification/index.js",
+    "groupTitle": "Notifications"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/users",
+    "title": "Add agents to a openchannel account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts",
+    "title": "Creates a new Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAccounts",
+    "group": "Openchannel_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "replyUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notificationTemplate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationSound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationShake",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "waitForTheAssignedAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mapKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "queueTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "queueTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "agentTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/accounts/{id}",
+    "title": "Deletes a Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAccounts",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/describe",
+    "title": "Gets table info about Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAccounts",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts",
+    "title": "Gets a list of Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAccounts",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}/users",
+    "title": "Gets agents from openchannel account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/accounts/{id}/users",
+    "title": "Removes agents from a openchannel account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/accounts/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/accounts/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}",
+    "title": "Gets a single Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAccounts",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Openchannel_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Openchannel_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Openchannel_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}/applications",
+    "title": "Gets account applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}/interactions",
+    "title": "Gets Openchannel Account Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getInteractions",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/notify",
+    "title": "Notify new message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "notify",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre><a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice</a></pre></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/send",
+    "title": "Send new openchannel message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/send -d '{from: 'John Doe', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "sendOpenchannel",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/accounts/{id}",
+    "title": "Update an existing Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAccounts",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/applications",
+    "title": "Creates a new Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateApplications",
+    "group": "Openchannel_Applications",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelApplication/index.js",
+    "groupTitle": "Openchannel_Applications"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Openchannel_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelApplication/index.js",
+    "groupTitle": "Openchannel_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/applications",
+    "title": "Gets a list of Applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/applications -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetApplications",
+    "group": "Openchannel_Applications",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelApplication/index.js",
+    "groupTitle": "Openchannel_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Openchannel_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelApplication/index.js",
+    "groupTitle": "Openchannel_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Openchannel_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelApplication/index.js",
+    "groupTitle": "Openchannel_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Openchannel_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "threadId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "externalUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/interactions/{id}/messages",
+    "title": "Creates new messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Openchannel_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/interactions/{id}/download",
+    "title": "Gets interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Openchannel_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/reports/queue",
+    "title": "Creates a new Openchannel Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/reports/queue/{id}",
+    "title": "Deletes a Openchannel Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/queue/describe",
+    "title": "Gets table info about Openchannel Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/queue",
+    "title": "Gets a list of Openchannel Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/queue/{id}",
+    "title": "Gets a single Openchannel Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/reports/queue/{id}",
+    "title": "Update an existing Openchannel Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Openchannel_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": true,
+            "field": "strategy",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/reports/transfer",
+    "title": "Creates a new Openchannel Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/reports/transfer/{id}",
+    "title": "Deletes a Openchannel Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/transfer/describe",
+    "title": "Gets table info about Openchannel Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/transfer",
+    "title": "Gets a list of Openchannel Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/transfer/{id}",
+    "title": "Gets a single Openchannel Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/reports/transfer/{id}",
+    "title": "Update an existing Openchannel Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/pauses",
+    "title": "Creates a new Pause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pauses -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreatePauses",
+    "group": "Pauses",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pause/index.js",
+    "groupTitle": "Pauses"
+  },
+  {
+    "type": "delete",
+    "url": "/api/pauses/{id}",
+    "title": "Deletes a Pause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pauses/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeletePauses",
+    "group": "Pauses",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pause/index.js",
+    "groupTitle": "Pauses"
+  },
+  {
+    "type": "get",
+    "url": "/api/pauses",
+    "title": "Gets a list of Pauses",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pauses -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetPauses",
+    "group": "Pauses",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/pauses?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/pauses?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/pauses?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/pauses?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/pauses?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/pause/index.js",
+    "groupTitle": "Pauses"
+  },
+  {
+    "type": "get",
+    "url": "/api/pauses/{id}",
+    "title": "Gets a single Pause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pauses/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowPauses",
+    "group": "Pauses",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pause/index.js",
+    "groupTitle": "Pauses"
+  },
+  {
+    "type": "put",
+    "url": "/api/pauses/{id}",
+    "title": "Update an existing Pause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pauses/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updatePauses",
+    "group": "Pauses",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pause/index.js",
+    "groupTitle": "Pauses"
+  },
+  {
+    "type": "get",
+    "url": "/api/plugins",
+    "title": "Gets a list of Plugins",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetPlugins",
+    "group": "Plugins",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/plugins?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/plugins?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/plugins?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/plugins?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/plugins?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "get",
+    "url": "/api/plugins/{id}",
+    "title": "Gets a single Plugin",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowPlugins",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "delete",
+    "url": "/api/plugins/{id}",
+    "title": "Delete a plugin",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroyPlugin",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "get",
+    "url": "/api/plugins/{id}/download",
+    "title": "Download plugin source code",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "put",
+    "url": "/api/plugins/{id}",
+    "title": "Update an existing plugin",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updatePlugin",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "post",
+    "url": "/api/plugins",
+    "title": "Upload new plugin",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "uploadPlugin",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "get",
+    "url": "/api/plugins/webhook?hostname={host}&port={port}&encoding={encoding}&json={json}&path={path}",
+    "title": "Redirect a plugin request to the specified path",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/webhook?port={port}&path={path} -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "webhookPlugin",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "post",
+    "url": "/api/plugins/webhook?hostname={host}&port={port}&encoding={encoding}&json={json}&path={path}",
+    "title": "Redirect a plugin request to the specified path",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/webhook?port={port}&path={path} -H 'Content-Type: application/json' -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "webhookPlugin",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "delete",
+    "url": "/api/pm2/{id}",
+    "title": "Deletes an existing process",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pm2/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeletePm2Process",
+    "group": "Pm2",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pm2/index.js",
+    "groupTitle": "Pm2"
+  },
+  {
+    "type": "get",
+    "url": "/api/pm2/{id}",
+    "title": "Gets a single pm2 process",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pm2/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetPm2Process",
+    "group": "Pm2",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pm2/index.js",
+    "groupTitle": "Pm2"
+  },
+  {
+    "type": "get",
+    "url": "/api/pm2",
+    "title": "Gets pm2 processes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pm2 -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetPm2Processes",
+    "group": "Pm2",
+    "description": "<p>Motion returns the pm2 processes list.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pm2/index.js",
+    "groupTitle": "Pm2"
+  },
+  {
+    "type": "post",
+    "url": "/api/pm2",
+    "title": "Start a single pm2 process",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pm2 -d '{\"name\": \"process_name\", \"script\": \"/index.js\"}'\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "StartPm2Process",
+    "group": "Pm2",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "script",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pm2/index.js",
+    "groupTitle": "Pm2"
+  },
+  {
+    "type": "put",
+    "url": "/api/pm2/{id}",
+    "title": "Update an existing process",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pm2/{id} -d '{\"status\": \"online\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "UpdatePm2Process",
+    "group": "Pm2",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pm2/index.js",
+    "groupTitle": "Pm2"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/campaigns/",
+    "title": "Gets a list of campaigns",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/campaigns -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "Campaigns",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime campaigns parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/fax/accounts",
+    "title": "Gets a list of FaxAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/fax/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "FaxAccounts",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime fax account parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "put",
+    "url": "/api/rpc/agents/:id/capacity",
+    "title": "Sets agent capacity",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/agents/:id/capacity -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTAgentCapacity",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return the current agent capacity.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/agents",
+    "title": "Gets a list of RTAgents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/agents -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTAgents",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime agents parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/chat/queues",
+    "title": "Gets a list of RTChatQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/chat/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTChatQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime chat queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/fax/queues",
+    "title": "Gets a list of RTFaxQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/fax/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTFaxQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime fax queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/mail/accounts",
+    "title": "Gets a list of RTMailAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/mail/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTMailAccounts",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime mail account parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/mail/queues",
+    "title": "Gets a list of RTMailQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/mail/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTMailQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime mail queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/openchannel/queues",
+    "title": "Gets a list of RTOpenchannelQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/openchannel/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTOpenchannelQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime openchannel queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/outbound/channels",
+    "title": "Gets a list of RTOutboundChannels",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/outbound/channels -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTOutboundChannels",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime outbound channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/sms/queues",
+    "title": "Gets a list of RTSmsQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/sms/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTSmsQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime sms queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/telephones",
+    "title": "Gets a list of RTTelephones",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/telephones -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTTelephones",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of telephones parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/trunks",
+    "title": "Gets a list of RTTrunks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/trunks -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTTrunks",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime trunks parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/channels",
+    "title": "Gets a list of RTVoiceChannelMixMonitor",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/channels/{uniqueid}/mixmonitor -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceChannelMixMonitor",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime voice channel mixmonitor.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/channels",
+    "title": "Gets a list of RTVoiceChannelStopMixMonitor",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/channels/{uniqueid}/stopmixmonitor -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceChannelStopMixMonitor",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime voice channel stopmixmonitor.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/channels",
+    "title": "Gets a list of RTVoiceChannels",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/channels -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceChannels",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime voice channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/channels/{uniqueid}",
+    "title": "Gets a single RTVoiceQueueChannel",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueueChannel",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a specific realtime voice queue channel.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/channels/{uniqueid}/hangup",
+    "title": "Hangup a single RTVoiceQueueChannel",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid}/hangup -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueueChannelHangup",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will hangup a specific realtime voice queue channel.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/channels/{uniqueid}/redirect/{exten}",
+    "title": "Hangup a single RTVoiceQueueChannel",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid}/redirect/{exten} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueueChannelRedirect",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will redirect a specific realtime voice queue channel to a specific extension.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/preview/{id}",
+    "title": "Gets a single preview contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/preview/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueuePreview",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a specific preview contact.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/channels",
+    "title": "Gets a list of RTVoiceQueuesChannels",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/channels -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueuesChannels",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime voice queues channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/chat/queues/{id}",
+    "title": "Gets a single RTChatQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/chat/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTChatQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/fax/queues/{id}",
+    "title": "Gets a single RTFaxQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/fax/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTFaxQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/mail/queues/{id}",
+    "title": "Gets a single RTMailQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/mail/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTMailQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/openchannel/queues/{id}",
+    "title": "Gets a single RTOpenchannelQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/openchannel/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTOpenchannelQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/sms/queues/{id}",
+    "title": "Gets a single RTSmsQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/sms/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTSmsQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/{id}",
+    "title": "Gets a single RTVoiceQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTVoiceQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/agents/:id/notify",
+    "title": "Notify message to a specific agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/agents/:id/notify -d '{\"messageId\": \"5080\", \"channel\": \"mail\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "agentNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific agent.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/chat/queues/:id/notify",
+    "title": "Notify message to a specific queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/chat/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "chatQueueNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/chat/queues/waitinginteractions",
+    "title": "Gets a list of chatQueuesWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/chat/queues/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "chatQueuesWaitingInteractions",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime waiting chat queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/fax/queues/:id/notify",
+    "title": "Notify message to a specific queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/fax/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "faxQueueNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/fax/queues/waitinginteractions",
+    "title": "Gets a list of faxQueuesWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/fax/queues/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "faxQueuesWaitingInteractions",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime waiting fax queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/mail/queues/:id/notify",
+    "title": "Notify message to a specific queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/mail/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "mailQueueNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/mail/queues/waitinginteractions",
+    "title": "Gets a list of mailQueuesWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/mail/queues/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "mailQueuesWaitingInteractions",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime waiting mail queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/openchannel/queues/:id/notify",
+    "title": "Notify message to a specific queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/openchannel/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "openchannelQueueNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/openchannel/queues/waitinginteractions",
+    "title": "Gets a list of openchannelQueuesWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/openchannel/queues/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "openchannelQueuesWaitingInteractions",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime waiting openchannel queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/sms/queues/:id/notify",
+    "title": "Notify message to a specific queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/sms/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "smsQueueNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/sms/queues/waitinginteractions",
+    "title": "Gets a list of smsQueuesWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/sms/queues/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "smsQueuesWaitingInteractions",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime waiting sms queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/salesforce/accounts",
+    "title": "Creates a new Salesforce Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSalesforce_Accounts",
+    "group": "Salesforce_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientSecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "securityToken",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"integrationTab\"",
+              "\"newTab\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/salesforce/accounts/{id}",
+    "title": "Deletes a Salesforce Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSalesforce_Accounts",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/accounts",
+    "title": "Gets a list of Salesforce Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSalesforce_Accounts",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/accounts/{id}",
+    "title": "Gets a single Salesforce Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSalesforce_Accounts",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/salesforce/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/salesforce/accounts/{id}",
+    "title": "Update an existing Salesforce Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSalesforce_Accounts",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/salesforce/configurations",
+    "title": "Creates a new Salesforce Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSalesforce_Configurations",
+    "group": "Salesforce_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"Task\"",
+              "\"Case\""
+            ],
+            "optional": true,
+            "field": "ticketType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"contact_lead\"",
+              "\"contact\"",
+              "\"lead\""
+            ],
+            "optional": true,
+            "field": "moduleSearch",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"nothing\"",
+              "\"contact\"",
+              "\"lead\""
+            ],
+            "optional": true,
+            "field": "moduleCreate",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/salesforce/configurations/{id}",
+    "title": "Deletes a Salesforce Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSalesforce_Configurations",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/configurations",
+    "title": "Gets a list of Salesforce Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSalesforce_Configurations",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/configurations/{id}",
+    "title": "Gets a single Salesforce Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSalesforce_Configurations",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/salesforce/configurations/{id}",
+    "title": "Update an existing Salesforce Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSalesforce_Configurations",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/salesforce/fields",
+    "title": "Creates a new Salesforce Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSalesforce_Fields",
+    "group": "Salesforce_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceField/index.js",
+    "groupTitle": "Salesforce_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/salesforce/fields/{id}",
+    "title": "Deletes a Salesforce Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSalesforce_Fields",
+    "group": "Salesforce_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceField/index.js",
+    "groupTitle": "Salesforce_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/fields",
+    "title": "Gets a list of Salesforce Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSalesforce_Fields",
+    "group": "Salesforce_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceField/index.js",
+    "groupTitle": "Salesforce_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/fields/{id}",
+    "title": "Gets a single Salesforce Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSalesforce_Fields",
+    "group": "Salesforce_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceField/index.js",
+    "groupTitle": "Salesforce_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/salesforce/fields/{id}",
+    "title": "Update an existing Salesforce Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSalesforce_Fields",
+    "group": "Salesforce_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceField/index.js",
+    "groupTitle": "Salesforce_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/schedules",
+    "title": "Creates a new Schedule",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSchedules",
+    "group": "Schedules",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": false,
+            "field": "active",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "cron",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "startAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "endAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "subtractNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"years\"",
+              "\"quarters\"",
+              "\"months\"",
+              "\"weeks\"",
+              "\"days\"",
+              "\"hours\"",
+              "\"minutes\""
+            ],
+            "optional": false,
+            "field": "subtractUnit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"csv\"",
+              "\"pdf\"",
+              "\"xlsx\""
+            ],
+            "optional": false,
+            "field": "output",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"custom\"",
+              "\"default\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "sendMail",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "cc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "bcc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "sendIfEmpty",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "delete",
+    "url": "/api/schedules/{id}",
+    "title": "Deletes a Schedule",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSchedules",
+    "group": "Schedules",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "get",
+    "url": "/api/schedules",
+    "title": "Gets a list of Schedules",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSchedules",
+    "group": "Schedules",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/schedules?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/schedules?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/schedules?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/schedules?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/schedules?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "get",
+    "url": "/api/schedules/{id}",
+    "title": "Gets a single Schedule",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSchedules",
+    "group": "Schedules",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "get",
+    "url": "/api/schedules/{id}/run",
+    "title": "Run Scheduler",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules/{id}/run -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "run",
+    "group": "Schedules",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "put",
+    "url": "/api/schedules/{id}",
+    "title": "Update an existing Schedule",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSchedules",
+    "group": "Schedules",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "post",
+    "url": "/api/screen/recordings",
+    "title": "Creates a new Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateRecordings",
+    "group": "Screen_Recordings",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "format",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interactionid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rating",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "duration",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "startedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "createdAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "updatedAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/screen/recordings/describe",
+    "title": "Gets table info about Recordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeRecordings",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/screen/recordings",
+    "title": "Gets a list of Recordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetRecordings",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/screen/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/screen/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/screen/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/screen/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/screen/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/screen/recordings/{id}",
+    "title": "Gets a single Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRecordings",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "delete",
+    "url": "/api/screen/recordings/{id}",
+    "title": "Delete screen recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroy",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/screen/recordings/{id}/download",
+    "title": "Download Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "put",
+    "url": "/api/screen/recordings/{id}",
+    "title": "Update an existing Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateRecordings",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/servicenow/accounts",
+    "title": "Creates a new Servicenow Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateServicenow_Accounts",
+    "group": "Servicenow_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/servicenow/accounts/{id}",
+    "title": "Deletes a Servicenow Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteServicenow_Accounts",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/accounts",
+    "title": "Gets a list of Servicenow Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetServicenow_Accounts",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/accounts/{id}",
+    "title": "Gets a single Servicenow Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowServicenow_Accounts",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/servicenow/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/servicenow/accounts/{id}",
+    "title": "Update an existing Servicenow Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateServicenow_Accounts",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/servicenow/configurations",
+    "title": "Creates a new Servicenow Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateServicenow_Configurations",
+    "group": "Servicenow_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/servicenow/configurations/{id}",
+    "title": "Deletes a Servicenow Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteServicenow_Configurations",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/configurations",
+    "title": "Gets a list of Servicenow Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetServicenow_Configurations",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/configurations/{id}",
+    "title": "Gets a single Servicenow Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowServicenow_Configurations",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/servicenow/configurations/{id}",
+    "title": "Update an existing Servicenow Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateServicenow_Configurations",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/servicenow/fields",
+    "title": "Creates a new Servicenow Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateServicenow_Fields",
+    "group": "Servicenow_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowField/index.js",
+    "groupTitle": "Servicenow_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/servicenow/fields/{id}",
+    "title": "Deletes a Servicenow Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteServicenow_Fields",
+    "group": "Servicenow_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowField/index.js",
+    "groupTitle": "Servicenow_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/fields",
+    "title": "Gets a list of Servicenow Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetServicenow_Fields",
+    "group": "Servicenow_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowField/index.js",
+    "groupTitle": "Servicenow_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/fields/{id}",
+    "title": "Gets a single Servicenow Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowServicenow_Fields",
+    "group": "Servicenow_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowField/index.js",
+    "groupTitle": "Servicenow_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/servicenow/fields/{id}",
+    "title": "Update an existing Servicenow Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateServicenow_Fields",
+    "group": "Servicenow_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowField/index.js",
+    "groupTitle": "Servicenow_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings",
+    "title": "Gets a list of Settings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSettings",
+    "group": "Settings",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/settings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/settings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/settings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/settings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/settings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}",
+    "title": "Gets a single Setting",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSettings",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "post",
+    "url": "/api/settings/{id}/favicon",
+    "title": "Add Favicon",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/favicon -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addFavicon",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "post",
+    "url": "/api/settings/{id}/logo",
+    "title": "Add logo",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/logo -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addLogo",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "post",
+    "url": "/api/settings/{id}/logo_login",
+    "title": "Add logo login",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/logo_login -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addLogoLogin",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "post",
+    "url": "/api/settings/{id}/preferred",
+    "title": "Add Preferred",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/preferred -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addPreferred",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}/favicon",
+    "title": "Get Favicon",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/favicon -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFavicon",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}/gdpr",
+    "title": "Get gdpr settings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/gdpr -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getGdpr",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}/logo",
+    "title": "Get logo",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/logo -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getLogo",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}/logo_login",
+    "title": "Get logo login",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/logo_login -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getLogoLogin",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}/preferred",
+    "title": "Get Preferred",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/preferred -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getPreferred",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "put",
+    "url": "/api/settings/{id}",
+    "title": "Update an existing Setting",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSettings",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/users",
+    "title": "Add agents to a sms account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts",
+    "title": "Creates a new Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAccounts",
+    "group": "Sms_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "remote",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"twilio\"",
+              "\"skebby\"",
+              "\"connectel\"",
+              "\"clicksend\"",
+              "\"plivo\"",
+              "\"clickatell\"",
+              "\"csc\"",
+              "\"infobip\"",
+              "\"intelepeer\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountSid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "authId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "authToken",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"SI\"",
+              "\"TI\"",
+              "\"GP\""
+            ],
+            "optional": true,
+            "field": "smsMethod",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "apiKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "senderString",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "deliveryReport",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notificationTemplate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationSound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationShake",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "waitForTheAssignedAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "queueTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "queueTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "agentTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "baseUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/accounts/{id}",
+    "title": "Deletes a Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAccounts",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/describe",
+    "title": "Gets table info about Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAccounts",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts",
+    "title": "Gets a list of Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAccounts",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/users",
+    "title": "Gets agents from sms account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/accounts/{id}/users",
+    "title": "Removes agents from a sms account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/accounts/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/accounts/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}",
+    "title": "Gets a single Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAccounts",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Sms_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Sms_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Sms_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/applications",
+    "title": "Gets account applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/interactions",
+    "title": "Gets Sms Account interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getInteractions",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/notify",
+    "title": "Notify new message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "notify",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new sms message to be sent to the system.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/send",
+    "title": "Send new sms message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/send -d '{from: '+39333123456', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "sendSms",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/messages/{id}/status",
+    "title": "Receive message status",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "statusMessage",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "statusMessage",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "statusMessage",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/accounts/{id}",
+    "title": "Update an existing Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAccounts",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/applications",
+    "title": "Creates a new Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateApplications",
+    "group": "Sms_Applications",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsApplication/index.js",
+    "groupTitle": "Sms_Applications"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Sms_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsApplication/index.js",
+    "groupTitle": "Sms_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/applications",
+    "title": "Gets a list of Applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/applications -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetApplications",
+    "group": "Sms_Applications",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsApplication/index.js",
+    "groupTitle": "Sms_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Sms_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsApplication/index.js",
+    "groupTitle": "Sms_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Sms_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsApplication/index.js",
+    "groupTitle": "Sms_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Sms_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/interactions/{id}/messages",
+    "title": "Creates new messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Sms_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/interactions/{id}/download",
+    "title": "Gets interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Sms_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Sms_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Sms_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Sms_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Sms_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Sms_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/reports/queue",
+    "title": "Creates a new Sms Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/reports/queue/{id}",
+    "title": "Deletes a Sms Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/queue/describe",
+    "title": "Gets table info about Sms Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/queue",
+    "title": "Gets a list of Sms Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/queue/{id}",
+    "title": "Gets a single Sms Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/reports/queue/{id}",
+    "title": "Update an existing Sms Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Sms_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": true,
+            "field": "strategy",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/reports/transfer",
+    "title": "Creates a new Sms Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/reports/transfer/{id}",
+    "title": "Deletes a Sms Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/transfer/describe",
+    "title": "Gets table info about Sms Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/transfer",
+    "title": "Gets a list of Sms Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/transfer/{id}",
+    "title": "Gets a single Sms Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/reports/transfer/{id}",
+    "title": "Update an existing Sms Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sounds",
+    "title": "Gets a list of Sounds",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSounds",
+    "group": "Sounds",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sounds?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sounds?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sounds?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sounds?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sounds?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "get",
+    "url": "/api/sounds/{id}",
+    "title": "Gets a single Sound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSounds",
+    "group": "Sounds",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "post",
+    "url": "/api/sounds",
+    "title": "Create a new sound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addSound",
+    "group": "Sounds",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sounds/{id}",
+    "title": "Deletes a sound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroySound",
+    "group": "Sounds",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "get",
+    "url": "/api/sounds/{id}/download",
+    "title": "Download Sound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Sounds",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "put",
+    "url": "/api/sounds",
+    "title": "Update an existing new sound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds -d '[\"name\": \"sound_name\", \"description\": \"sound_desc\"]' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSound",
+    "group": "Sounds",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/details/reports",
+    "title": "Creates a new Square Detail Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "node",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "application",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "data",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "project_name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/details/reports/{id}",
+    "title": "Deletes a Square Detail Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/details/reports/describe",
+    "title": "Gets table info about Square Detail Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/details/reports",
+    "title": "Gets a list of Square Detail Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/details/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/details/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/details/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/details/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/details/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/details/reports/{id}",
+    "title": "Gets a single Square Detail Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/details/reports/{id}",
+    "title": "Update an existing Square Detail Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Square_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareMessage/index.js",
+    "groupTitle": "Square_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Square_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareMessage/index.js",
+    "groupTitle": "Square_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Square_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareMessage/index.js",
+    "groupTitle": "Square_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Square_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareMessage/index.js",
+    "groupTitle": "Square_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Square_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareMessage/index.js",
+    "groupTitle": "Square_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/odbc",
+    "title": "Creates a new ODBC",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateODBCs",
+    "group": "Square_ODBC",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dsn",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/odbc/{id}",
+    "title": "Deletes a ODBC",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteODBCs",
+    "group": "Square_ODBC",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/odbc",
+    "title": "Gets a list of ODBCs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetODBCs",
+    "group": "Square_ODBC",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/odbc?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/odbc?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/odbc?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/odbc?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/odbc?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/odbc/{id}",
+    "title": "Gets a single ODBC",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowODBCs",
+    "group": "Square_ODBC",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/odbc/{id}/test",
+    "title": "Test Odbc",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc/{id}/test -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "test",
+    "group": "Square_ODBC",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/odbc/{id}",
+    "title": "Update an existing ODBC",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateODBCs",
+    "group": "Square_ODBC",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/projects",
+    "title": "Creates a new Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateProjects",
+    "group": "Square_Projects",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notes",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Blob",
+            "optional": true,
+            "field": "preproduction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Blob",
+            "optional": true,
+            "field": "production",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/projects/{id}",
+    "title": "Deletes a Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteProjects",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/projects",
+    "title": "Gets a list of Projects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetProjects",
+    "group": "Square_Projects",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/projects?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/projects?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/projects?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/projects?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/projects?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/projects/{id}",
+    "title": "Gets a single Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowProjects",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/projects/{id}/users",
+    "title": "Adds user permissions to a Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addUsers",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/projects/{id}/users",
+    "title": "Gets users permissions from Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getUsers",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/projects/{id}/users",
+    "title": "Removes user permissions from a Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "removeUsers",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/projects/{id}",
+    "title": "Update an existing Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateProjects",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/recordings",
+    "title": "Creates a new Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateRecordings",
+    "group": "Square_Recordings",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "extension",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dnid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "projectName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "saveName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "filename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "savePath",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "format",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/recordings",
+    "title": "Gets a list of Recordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetRecordings",
+    "group": "Square_Recordings",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/recordings/{id}",
+    "title": "Gets a single Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRecordings",
+    "group": "Square_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/recordings/{id}/delete",
+    "title": "Delete recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings/{id}/delete -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroy",
+    "group": "Square_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/recordings/{id}/download",
+    "title": "Download Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Square_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/recordings/{id}",
+    "title": "Update an existing Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateRecordings",
+    "group": "Square_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/reports",
+    "title": "Creates a new Square Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSquare_Reports",
+    "group": "Square_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "network",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "network_script",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "request",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "language",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "version",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callingpres",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callingani2",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callington",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callingtns",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dnid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "rdnis",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "extension",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "enhanced",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "threadid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "project_name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "bot",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/reports/{id}",
+    "title": "Deletes a Square Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSquare_Reports",
+    "group": "Square_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/reports/describe",
+    "title": "Gets table info about Square Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeSquare_Reports",
+    "group": "Square_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/reports",
+    "title": "Gets a list of Square Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSquare_Reports",
+    "group": "Square_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/reports/{id}",
+    "title": "Gets a single Square Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSquare_Reports",
+    "group": "Square_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/reports/{id}",
+    "title": "Update an existing Square Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSquare_Reports",
+    "group": "Square_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/sugarcrm/configurations",
+    "title": "Creates a new SugarCRM Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSugarCRM_Configurations",
+    "group": "SugarCRM_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "SugarCRM_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/sugarcrm/configurations/{id}",
+    "title": "Deletes a SugarCRM Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSugarCRM_Configurations",
+    "group": "SugarCRM_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "SugarCRM_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/configurations",
+    "title": "Gets a list of SugarCRM Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSugarCRM_Configurations",
+    "group": "SugarCRM_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "SugarCRM_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/configurations/{id}",
+    "title": "Gets a single SugarCRM Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSugarCRM_Configurations",
+    "group": "SugarCRM_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "SugarCRM_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/sugarcrm/configurations/{id}",
+    "title": "Update an existing SugarCRM Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSugarCRM_Configurations",
+    "group": "SugarCRM_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "SugarCRM_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/sugarcrm/accounts",
+    "title": "Creates a new Sugarcrm Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSugarcrm_Accounts",
+    "group": "Sugarcrm_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/sugarcrm/accounts/{id}",
+    "title": "Deletes a Sugarcrm Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSugarcrm_Accounts",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/accounts",
+    "title": "Gets a list of Sugarcrm Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSugarcrm_Accounts",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/accounts/{id}",
+    "title": "Gets a single Sugarcrm Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSugarcrm_Accounts",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/sugarcrm/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/sugarcrm/accounts/{id}",
+    "title": "Update an existing Sugarcrm Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSugarcrm_Accounts",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Sugarcrm_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "Sugarcrm_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Sugarcrm_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "Sugarcrm_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Sugarcrm_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "Sugarcrm_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/sugarcrm/fields",
+    "title": "Creates a new Sugarcrm Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSugarcrm_Fields",
+    "group": "Sugarcrm_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmField/index.js",
+    "groupTitle": "Sugarcrm_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/sugarcrm/fields/{id}",
+    "title": "Deletes a Sugarcrm Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSugarcrm_Fields",
+    "group": "Sugarcrm_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmField/index.js",
+    "groupTitle": "Sugarcrm_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/fields",
+    "title": "Gets a list of Sugarcrm Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSugarcrm_Fields",
+    "group": "Sugarcrm_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmField/index.js",
+    "groupTitle": "Sugarcrm_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/fields/{id}",
+    "title": "Gets a single Sugarcrm Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSugarcrm_Fields",
+    "group": "Sugarcrm_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmField/index.js",
+    "groupTitle": "Sugarcrm_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/sugarcrm/fields/{id}",
+    "title": "Update an existing Sugarcrm Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSugarcrm_Fields",
+    "group": "Sugarcrm_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmField/index.js",
+    "groupTitle": "Sugarcrm_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/system",
+    "title": "Gets system information",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/system -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSystemInformation",
+    "group": "System_Information",
+    "description": "<p>Motion returns the system information.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/system/index.js",
+    "groupTitle": "System_Information"
+  },
+  {
+    "type": "get",
+    "url": "/api/system/process",
+    "title": "Gets system information",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/system -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSystemInformation",
+    "group": "System_Information",
+    "description": "<p>Motion returns the system information.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/system/index.js",
+    "groupTitle": "System_Information"
+  },
+  {
+    "type": "post",
+    "url": "/api/tags",
+    "title": "Creates a new Tag",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/tags -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateTags",
+    "group": "Tags",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "color",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/tag/index.js",
+    "groupTitle": "Tags"
+  },
+  {
+    "type": "delete",
+    "url": "/api/tags/{id}",
+    "title": "Deletes a Tag",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/tags/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteTags",
+    "group": "Tags",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/tag/index.js",
+    "groupTitle": "Tags"
+  },
+  {
+    "type": "get",
+    "url": "/api/tags",
+    "title": "Gets a list of Tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/tags -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTags",
+    "group": "Tags",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/tags?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/tags?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/tags?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/tags?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/tags?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/tag/index.js",
+    "groupTitle": "Tags"
+  },
+  {
+    "type": "get",
+    "url": "/api/tags/{id}",
+    "title": "Gets a single Tag",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/tags/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTags",
+    "group": "Tags",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/tag/index.js",
+    "groupTitle": "Tags"
+  },
+  {
+    "type": "put",
+    "url": "/api/tags/{id}",
+    "title": "Update an existing Tag",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/tags/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateTags",
+    "group": "Tags",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/tag/index.js",
+    "groupTitle": "Tags"
+  },
+  {
+    "type": "post",
+    "url": "/api/teams/{id}/queues",
+    "title": "Add queues to a team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/queues -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddQueues",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "post",
+    "url": "/api/teams",
+    "title": "Creates a new Team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateTeams",
+    "group": "Teams",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/teams/{id}",
+    "title": "Deletes a Team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "get",
+    "url": "/api/teams/{id}/users",
+    "title": "Gets agents from team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "get",
+    "url": "/api/teams/{id}/queues?channel={channel}",
+    "title": "Gets Queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/queues?channel={channel} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "get",
+    "url": "/api/teams",
+    "title": "Gets a list of Teams",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Teams",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/teams?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/teams?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/teams?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/teams?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/teams?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/teams/{id}/users",
+    "title": "Removes agents from a team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/teams/{id}/queues",
+    "title": "Remove queues to a team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/queues?channel=voice&ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveQueues",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "get",
+    "url": "/api/teams/{id}",
+    "title": "Gets a single Team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "post",
+    "url": "/api/teams/{id}/users",
+    "title": "Adds agents to a team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAgents",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "put",
+    "url": "/api/teams/{id}",
+    "title": "Update an existing Team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "post",
+    "url": "/api/templates",
+    "title": "Creates a new Template",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/templates -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateTemplates",
+    "group": "Templates",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "html",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/template/index.js",
+    "groupTitle": "Templates"
+  },
+  {
+    "type": "delete",
+    "url": "/api/templates/{id}",
+    "title": "Deletes a Template",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/templates/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteTemplates",
+    "group": "Templates",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/template/index.js",
+    "groupTitle": "Templates"
+  },
+  {
+    "type": "get",
+    "url": "/api/templates",
+    "title": "Gets a list of Templates",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/templates -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTemplates",
+    "group": "Templates",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/templates?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/templates?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/templates?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/templates?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/templates?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/template/index.js",
+    "groupTitle": "Templates"
+  },
+  {
+    "type": "get",
+    "url": "/api/templates/{id}",
+    "title": "Gets a single Template",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/templates/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTemplates",
+    "group": "Templates",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/template/index.js",
+    "groupTitle": "Templates"
+  },
+  {
+    "type": "put",
+    "url": "/api/templates/{id}",
+    "title": "Update an existing Template",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/templates/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateTemplates",
+    "group": "Templates",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/template/index.js",
+    "groupTitle": "Templates"
+  },
+  {
+    "type": "post",
+    "url": "/api/triggers",
+    "title": "Creates a new Trigger",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateTriggers",
+    "group": "Triggers",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "status",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "delete",
+    "url": "/api/triggers/{id}",
+    "title": "Deletes a Trigger",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteTriggers",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "get",
+    "url": "/api/triggers",
+    "title": "Gets a list of Triggers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTriggers",
+    "group": "Triggers",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/triggers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/triggers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/triggers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/triggers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/triggers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "get",
+    "url": "/api/triggers/{id}",
+    "title": "Gets a single Trigger",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTriggers",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "post",
+    "url": "/api/triggers/{id}/actions",
+    "title": "Creates new actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/actions -d '{\"action\": \"contactManager\",\"data1\": \"1\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAction",
+    "group": "Triggers",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "action",
+            "description": "<p>Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser, bot, script</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data1",
+            "description": "<p>contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data2",
+            "description": "<p>integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data3",
+            "description": "<p>motionbar[NULL,NULL,WinAppArguments]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data4",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data5",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data6",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "data7",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "post",
+    "url": "/api/triggers/{id}/all_conditions",
+    "title": "Creates a new \"AND\"condition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/all_conditions -d '{\"field\": \"name\", \"operator\": \"equal\", \"value\": \"John Doe\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAllCondition",
+    "group": "Triggers",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "field",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "operator",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "post",
+    "url": "/api/triggers/{id}/any_conditions",
+    "title": "Creates a new \"OR\"condition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/any_conditions -d '{\"field\": \"name\", \"operator\": \"equal\", \"value\": \"John Doe\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnyCondition",
+    "group": "Triggers",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "field",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "operator",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "get",
+    "url": "/api/triggers/{id}/actions",
+    "title": "Gets Trigger Actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/actions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getActions",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "get",
+    "url": "/api/triggers/{id}/all_conditions",
+    "title": "Gets \"AND\" Trigger Conditions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/all_conditions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAllConditions",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "get",
+    "url": "/api/triggers/{id}/any_conditions",
+    "title": "Gets \"OR\" Trigger Conditions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/any_conditions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnyConditions",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "put",
+    "url": "/api/triggers/{id}",
+    "title": "Update an existing Trigger",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateTriggers",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "post",
+    "url": "/api/trunks/clone",
+    "title": "Clone an existing Trunk",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneTrunks",
+    "group": "Trunks",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "post",
+    "url": "/api/trunks",
+    "title": "Create a new trunk",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Trunks",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"friend\"",
+              "\"user\"",
+              "\"peer\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"ALLOWED_NOT_SCREENED\"",
+              "\"ALLOWED_PASSED_SCREEN\"",
+              "\"ALLOWED_FAILED_SCREEN\"",
+              "\"ALLOWED\"",
+              "\"PROHIB_NOT_SCREENED\"",
+              "\"PROHIB_PASSED_SCREEN\"",
+              "\"PROHIB_FAILED_SCREEN\"",
+              "\"PROHIB\""
+            ],
+            "optional": true,
+            "field": "callingpres",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "permit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "md5secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remotesecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transport",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;udp&quot;, &quot;tcp&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rfc2833\"",
+              "\"info\"",
+              "\"shortinfo\"",
+              "\"inband\"",
+              "\"auto\""
+            ],
+            "optional": true,
+            "field": "dtmfmode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"nonat\"",
+              "\"update\"",
+              "\"outgoing\""
+            ],
+            "optional": true,
+            "field": "directmedia",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "directrtpsetup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "directmediapermit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "directmediadeny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nat",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;force_rport&quot;, &quot;comedia&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "namedcallgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pickupgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "namedpickupgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "language",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tonezone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disallow",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "allow",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;ulaw&quot;, &quot;alaw&quot;, &quot;alaw&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "autoframing",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "insecure",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;port&quot;, &quot;invite&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "trustrpid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "trust_id_outbound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"never\""
+            ],
+            "optional": true,
+            "field": "progressinband",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "promiscredir",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "useclientcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "setvar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "amaflags",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "callcounter",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "busylevel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowoverlap",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowsubscribe",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowtransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "ignoresdpversion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "subscribecontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "template",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"always\""
+            ],
+            "optional": true,
+            "field": "videosupport",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "maxcallbitrate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "rfc2833compensate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"accept\"",
+              "\"refuse\"",
+              "\"originate\""
+            ],
+            "optional": true,
+            "field": "session_timers",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "session_expires",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "session_minse",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"uac\"",
+              "\"uas\""
+            ],
+            "optional": true,
+            "field": "session_refresher",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "t38pt_usertpsource",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "regexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fromdomain",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fromuser",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "port",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "qualify",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "keepalive",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultip",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultuser",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtptimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtpholdtimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtpkeepalive",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"pai\""
+            ],
+            "optional": true,
+            "field": "sendrpid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "outboundproxy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackextension",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timert1",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timerb",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "qualifyfreq",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactpermit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactdeny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactacl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "unsolicited_mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "use_q850_reason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "maxforwards",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "encryption",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "avpf",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "force_avp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "icesupport",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "dtlsenable",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"fingerprint\"",
+              "\"certificate\""
+            ],
+            "optional": true,
+            "field": "dtlsverify",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dtlsrekey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscertfile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlsprivatekey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscipher",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscafile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscapath",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"active\"",
+              "\"passive\"",
+              "\"actpass\""
+            ],
+            "optional": true,
+            "field": "dtlssetup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlsfingerprint",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "usereqphone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "recordonfeature",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "recordofffeature",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "call_limit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "registertrying",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "subscribemwi",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "vmexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mohinterpret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mohsuggest",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "parkinglot",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"nonat\"",
+              "\"update\"",
+              "\"update,nonat\""
+            ],
+            "optional": true,
+            "field": "canreinvite",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "registry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "otherFields",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": false,
+            "field": "active",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "t38pt_udptl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "delete",
+    "url": "/api/trunks/{id}",
+    "title": "Deletes a trunk",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "Delete",
+    "group": "Trunks",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "get",
+    "url": "/api/trunks",
+    "title": "Gets a list of Trunks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTrunks",
+    "group": "Trunks",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/trunks?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/trunks?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/trunks?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/trunks?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/trunks?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "get",
+    "url": "/api/trunks/{id}",
+    "title": "Gets a single Trunk",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTrunks",
+    "group": "Trunks",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "put",
+    "url": "/api/trunks/{id}",
+    "title": "Update an existing trunk",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Update",
+    "group": "Trunks",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfile/resources",
+    "title": "Creates a new User Profile Resource",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "resourceId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "type",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "delete",
+    "url": "/api/userProfile/resources/{id}",
+    "title": "Deletes a User Profile Resource",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/resources/describe",
+    "title": "Gets table info about User Profile Resources",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/resources",
+    "title": "Gets a list of User Profile Resources",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfile/resources?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfile/resources?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfile/resources?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfile/resources?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfile/resources?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/resources/{id}",
+    "title": "Gets a single User Profile Resource",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "put",
+    "url": "/api/userProfile/resources/{id}",
+    "title": "Update an existing User Profile Resource",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfile/sections",
+    "title": "Creates a new User Profile Section",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "category",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "sectionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enabled",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "autoAssociation",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "crudPermissions",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "delete",
+    "url": "/api/userProfile/sections/{id}",
+    "title": "Deletes a User Profile Section",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/sections/describe",
+    "title": "Gets table info about User Profile Sections",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/sections",
+    "title": "Gets a list of User Profile Sections",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfile/sections?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfile/sections?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfile/sections?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfile/sections?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfile/sections?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/sections/{id}",
+    "title": "Gets a single User Profile Section",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "put",
+    "url": "/api/userProfile/sections/{id}",
+    "title": "Update an existing User Profile Section",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfiles/{id}/resources",
+    "title": "Add resources' permissions to User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/resources -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddResources",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfiles/{id}/sections",
+    "title": "Add sections' permissions to User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/sections -d '[{\"sectionId\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSections",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfiles/clone",
+    "title": "Clone an existing User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfiles",
+    "title": "Creates a new User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateUser_Profiles",
+    "group": "User_Profiles",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "crudPermissions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "delete",
+    "url": "/api/userProfiles/{id}",
+    "title": "Deletes a User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfiles/describe",
+    "title": "Gets table info about User Profiles",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfiles/{id}/resources?section={section}",
+    "title": "Get Resources assigned to a Section",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/resources?section={section} -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetResources",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfiles/{id}/sections",
+    "title": "Get sections associated to a User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/sections -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetSections",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfiles",
+    "title": "Gets a list of User Profiles",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfiles?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfiles?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfiles?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfiles?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfiles?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "delete",
+    "url": "/api/userProfiles/{id}/resources",
+    "title": "Removes resources' permissions from User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/resources?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveResources",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "delete",
+    "url": "/api/userProfiles/{id}/sections",
+    "title": "Removes sections' permissions from User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/sections?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSections",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfiles/{id}",
+    "title": "Gets a single User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "put",
+    "url": "/api/userProfiles/{id}",
+    "title": "Update an existing User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/chat_interactions",
+    "title": "Add chat interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddChatInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/chat_websites",
+    "title": "Add a Chat Website to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat_websites -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddChatWebsites",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/contacts",
+    "title": "Add contacts to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/contacts -d '{\"ids\": [1,2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddContacts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/fax_accounts",
+    "title": "Add a Fax Account to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddFaxAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/fax_interactions",
+    "title": "Add fax interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddFaxInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/mail_accounts",
+    "title": "Add a Mail Account to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddMailAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/mail_interactions",
+    "title": "Add mail interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddMailInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/openchannel_accounts",
+    "title": "Add a Open Channel Account to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddOpenchannelAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/openchannel_interactions",
+    "title": "Add openchannel interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddOpenchannelInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/queues",
+    "title": "Add queues to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/queues -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddQueues",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/sms_accounts",
+    "title": "Add a Sms Account to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSmsAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/sms_interactions",
+    "title": "Add sms interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSmsInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/square_projects",
+    "title": "Add a Square Project to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/square_projects -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSquareProjects",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/teams",
+    "title": "Add teams to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/whatsapp_accounts",
+    "title": "Add a Whatsapp Account to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddWhatsappAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/whatsapp_interactions",
+    "title": "Add Whatsapp interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddWhatsappInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/create_many",
+    "title": "Creates many Users",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "BulkCreateUsers",
+    "group": "Users",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": "<p>The name of the user</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "fullname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "alias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"admin\"",
+              "\"user\"",
+              "\"agent\"",
+              "\"telephone\""
+            ],
+            "optional": false,
+            "field": "role",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "provider",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "internal",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "salt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mobile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "address",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "zipcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "userpic",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "city",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "country",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "online",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastLoginAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "voicePause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "chatPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mailPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "faxPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "smsPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "whatsappPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "openchannelPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pauseType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastPauseAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "chatCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mailCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "faxCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "smsCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "whatsappCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "openchannelCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarAutoAnswer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableSettings",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "phoneBarListenPort",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "phoneBarExpires",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarRemoteControl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "phoneBarRemoteControlPort",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableRecording",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarRingInUse",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "chanspy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "ipaddr",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "port",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "regseconds",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fullcontact",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "regserver",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "useragent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "lastms",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"friend\"",
+              "\"user\"",
+              "\"peer\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"ALLOWED_NOT_SCREENED\"",
+              "\"ALLOWED_PASSED_SCREEN\"",
+              "\"ALLOWED_FAILED_SCREEN\"",
+              "\"ALLOWED\"",
+              "\"PROHIB_NOT_SCREENED\"",
+              "\"PROHIB_PASSED_SCREEN\"",
+              "\"PROHIB_FAILED_SCREEN\"",
+              "\"PROHIB\""
+            ],
+            "optional": true,
+            "field": "callingpres",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "permit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "md5secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remotesecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transport",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;udp&quot;, &quot;tcp&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rfc2833\"",
+              "\"info\"",
+              "\"shortinfo\"",
+              "\"inband\"",
+              "\"auto\""
+            ],
+            "optional": true,
+            "field": "dtmfmode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"nonat\"",
+              "\"update\"",
+              "\"outgoing\""
+            ],
+            "optional": true,
+            "field": "directmedia",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "directrtpsetup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "directmediapermit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "directmediadeny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nat",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;force_rport&quot;, &quot;comedia&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "namedcallgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pickupgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "namedpickupgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "language",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tonezone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "disallow",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "allow",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;ulaw&quot;, &quot;alaw&quot;, &quot;gsm&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "autoframing",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "insecure",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;port&quot;, &quot;invite&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "trustrpid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "trust_id_outbound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"never\""
+            ],
+            "optional": true,
+            "field": "progressinband",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "promiscredir",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "useclientcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "setvar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "amaflags",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "callcounter",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "busylevel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowoverlap",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowsubscribe",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowtransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "ignoresdpversion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "subscribecontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "template",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"always\""
+            ],
+            "optional": true,
+            "field": "videosupport",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "maxcallbitrate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "rfc2833compensate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"accept\"",
+              "\"refuse\"",
+              "\"originate\""
+            ],
+            "optional": true,
+            "field": "session_timers",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "session_expires",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "session_minse",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"uac\"",
+              "\"uas\""
+            ],
+            "optional": true,
+            "field": "session_refresher",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "t38pt_usertpsource",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "regexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fromdomain",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fromuser",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "qualify",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "keepalive",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultip",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultuser",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtptimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtpholdtimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtpkeepalive",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "sendrpid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "outboundproxy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackextension",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timert1",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timerb",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "qualifyfreq",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactpermit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactdeny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactacl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "unsolicited_mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "use_q850_reason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "maxforwards",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "encryption",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "avpf",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "force_avp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "icesupport",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "dtlsenable",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"fingerprint\"",
+              "\"certificate\""
+            ],
+            "optional": true,
+            "field": "dtlsverify",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dtlsrekey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscertfile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlsprivatekey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscipher",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscafile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscapath",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"active\"",
+              "\"passive\"",
+              "\"actpass\""
+            ],
+            "optional": true,
+            "field": "dtlssetup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlsfingerprint",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "usereqphone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "recordonfeature",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "recordofffeature",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "call_limit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "registertrying",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "subscribemwi",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "vmexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mohinterpret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mohsuggest",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "parkinglot",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"nonat\"",
+              "\"update\"",
+              "\"update,nonat\""
+            ],
+            "optional": true,
+            "field": "canreinvite",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "loginInPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "resetPasswordToken",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "resetPasswordExpires",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "showWebBar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "permissions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phoneBarUnconditionalNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phoneBarNoReplyNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phoneBarBusyNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarUnconditional",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarNoReply",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarBusy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarDnd",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarUnansweredCallBadge",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableDtmfTone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "phoneBarAutoAnswerDelay",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "extensionMonitor",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "crudPermissions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "rtcp_mux",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "allowmessenger",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phoneBarOutboundProxy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "passwordResetAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableJaws",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableScreenRecordingByAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "phoneBarEnableVideoRecording",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableAutomaticScreenRecording",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarPrefixRequired",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "hotdesk",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interface",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "privacyEnabled",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "apiKeyNonce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "apiKeyIat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "screenrecording",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "blocked",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "blockedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "loginAttempts",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "disabled",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "put",
+    "url": "/api/users/{id}/password",
+    "title": "Change user password",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/password -d '{\"oldPassword\": \"1234\", \"newPassword\": \"5678\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "ChangePwd",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users",
+    "title": "Create a new user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/api_key",
+    "title": "Create a new API access key for the user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/:id/api_key -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateApiKey",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}",
+    "title": "Deletes a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "Delete",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/describe",
+    "title": "Gets table info about Users",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeUsers",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/agents",
+    "title": "GetAgents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/agents -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/api_key",
+    "title": "Get the API access key for the user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/:id/api_key -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetApiKey",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/groups",
+    "title": "GetChatGroups",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/groups -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetChatGroups",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/chat/interactions",
+    "title": "GetChatInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetChatInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/chat_websites",
+    "title": "GetChatWebsites",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat_websites -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetChatWebsites",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/contacts",
+    "title": "GetContacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/contacts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetContacts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/fax_accounts",
+    "title": "GetFaxAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax_accounts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetFaxAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/fax/interactions",
+    "title": "GetFaxInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetFaxInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/lists",
+    "title": "GetLists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/lists -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetLists",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/mail_accounts",
+    "title": "GetMailAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail_accounts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetMailAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/mail/interactions",
+    "title": "GetMailInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetMailInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/openchannel_accounts",
+    "title": "GetOpenchannelAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetOpenchannelAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/openchannel/interactions",
+    "title": "GetOpenchannelInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetOpenchannelInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/prefixes",
+    "title": "GetPrefixes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/prefixes -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetPrefixes",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/queues?channel={channel}",
+    "title": "Gets Queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/queues/?channel={channel} -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/recordings",
+    "title": "GetRecordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/recordings -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetRecordings",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/scheduled_calls",
+    "title": "GetScheduledCalls",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/scheduled_calls -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetScheduledCalls",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/screen_recordings",
+    "title": "GetScreenRecordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/screen_recordings -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetScreenRecordings",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/sms_accounts",
+    "title": "GetSmsAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms_accounts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetSmsAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/sms/interactions",
+    "title": "GetSmsInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetSmsInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/square_projects",
+    "title": "GetSquareProjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/square_projects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetSquareProjects",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/teams",
+    "title": "GetTeams",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/teams -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users",
+    "title": "Gets a list of Users",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetUsers",
+    "group": "Users",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/users?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/users?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/users?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/users?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/users?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/queues_rt",
+    "title": "GetVoiceQueuesRt",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/queues_rt -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetVoiceQueuesRt",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/whatsapp_accounts",
+    "title": "GetWhatsappAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp_accounts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetWhatsappAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/whatsapp/interactions",
+    "title": "GetWhatsappInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetWhatsappInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/login",
+    "title": "Login",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/login  -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Login",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/logout",
+    "title": "Logout",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/logout -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Logout",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/pause",
+    "title": "Pause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/pause -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Pause",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/api_key",
+    "title": "Remove API access key for the user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/:id/api_key -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveApiKey",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/chat_interactions",
+    "title": "Removes interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveChatInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/chat_websites",
+    "title": "Removes a Chat Website from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat_websites?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveChatWebsites",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/fax_accounts",
+    "title": "Removes a Fax Account from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveFaxAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/fax_interactions",
+    "title": "Removes interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveFaxInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/mail_accounts",
+    "title": "Removes a Mail Account from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveMailAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/mail_interactions",
+    "title": "Removes interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveMailInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/openchannel_accounts",
+    "title": "Removes a Open Channel Account from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveOpenchannelAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/openchannel_interactions",
+    "title": "Removes openchannel interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveOpenchannelInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/queues",
+    "title": "Remove queues to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/queues?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveQueues",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/sms_accounts",
+    "title": "Removes a Sms Account from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSmsAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/sms_interactions",
+    "title": "Removes interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSmsInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/square_projects",
+    "title": "Removes a Square Project from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/square_projects?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSquareProjects",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/teams",
+    "title": "Removes teams from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/teams?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/whatsapp_accounts",
+    "title": "Removes a Whatsapp Account from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveWhatsappAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/whatsapp_interactions",
+    "title": "Removes Whatsapp interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveWhatsappInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}",
+    "title": "Gets a single User",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowUsers",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/unpause",
+    "title": "Unpause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/unpause -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Unpause",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/whoami",
+    "title": "WhoAmI",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/whoami -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "WhoAmI",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/avatar",
+    "title": "Add avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAvatar",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/avatar",
+    "title": "Get avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/avatar -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAvatar",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "put",
+    "url": "/api/users/{id}",
+    "title": "Update an existing User",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateUsers",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/variables",
+    "title": "Creates a new Variable",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/variables -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateVariables",
+    "group": "Variables",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/variable/index.js",
+    "groupTitle": "Variables"
+  },
+  {
+    "type": "delete",
+    "url": "/api/variables/{id}",
+    "title": "Deletes a Variable",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/variables/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteVariables",
+    "group": "Variables",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/variable/index.js",
+    "groupTitle": "Variables"
+  },
+  {
+    "type": "get",
+    "url": "/api/variables",
+    "title": "Gets a list of Variables",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/variables -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVariables",
+    "group": "Variables",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/variables?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/variables?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/variables?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/variables?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/variables?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/variable/index.js",
+    "groupTitle": "Variables"
+  },
+  {
+    "type": "get",
+    "url": "/api/variables/{id}",
+    "title": "Gets a single Variable",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/variables/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowVariables",
+    "group": "Variables",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/variable/index.js",
+    "groupTitle": "Variables"
+  },
+  {
+    "type": "put",
+    "url": "/api/variables/{id}",
+    "title": "Update an existing Variable",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/variables/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateVariables",
+    "group": "Variables",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/variable/index.js",
+    "groupTitle": "Variables"
+  },
+  {
+    "type": "get",
+    "url": "/api/version/fetch",
+    "title": "Fetch git version",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version/fetch -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "FetchVersion",
+    "group": "Version",
+    "description": "<p>Motion run the following command: git fetch origin master</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/version",
+    "title": "Gets version",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVersion",
+    "group": "Version",
+    "description": "<p>Motion returns the current and latest motion version.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/version/migrations",
+    "title": "Launch database migrations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version/migrations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "MigrateVersion",
+    "group": "Version",
+    "description": "<p>Motion launch the database migrations, according to the application version</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/version/pull",
+    "title": "Pull git version",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version/pull -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "PullVersion",
+    "group": "Version",
+    "description": "<p>Motion run the following command: git pull</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/version/reset",
+    "title": "Reset git version",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version/reset -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ResetVersion",
+    "group": "Version",
+    "description": "<p>Motion run the following command: git reset --hard FETCH_HEAD</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/version/restart",
+    "title": "Restart motion2 after update",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version/restart -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RestartVersion",
+    "group": "Version",
+    "description": "<p>Motion run the following command: pm2 restart motion</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/agents/reports/describe",
+    "title": "Gets table info about Agent Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/agents/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAgent_Reports",
+    "group": "Voice_Agent_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceAgentReport/index.js",
+    "groupTitle": "Voice_Agent_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/agents/reports",
+    "title": "Gets a list of Agent Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/agents/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgent_Reports",
+    "group": "Voice_Agent_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/agents/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/agents/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/agents/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/agents/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/agents/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceAgentReport/index.js",
+    "groupTitle": "Voice_Agent_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/agents/reports/{id}",
+    "title": "Gets a single Agent Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/agents/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAgent_Reports",
+    "group": "Voice_Agent_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceAgentReport/index.js",
+    "groupTitle": "Voice_Agent_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/calls/reports/describe",
+    "title": "Gets table info about Call Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/calls/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeCall_Reports",
+    "group": "Voice_Call_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceCallReport/index.js",
+    "groupTitle": "Voice_Call_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/calls/reports",
+    "title": "Gets a list of Call Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/calls/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCall_Reports",
+    "group": "Voice_Call_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/calls/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/calls/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/calls/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/calls/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/calls/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceCallReport/index.js",
+    "groupTitle": "Voice_Call_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/calls/reports/{id}",
+    "title": "Gets a single Call Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/calls/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCall_Reports",
+    "group": "Voice_Call_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceCallReport/index.js",
+    "groupTitle": "Voice_Call_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/calls/reports/{id}",
+    "title": "Update a single cdr",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/calls/reports/{id} -d '{\"userDispositio\": \"OK\"}' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "Voice_Call_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceCallReport/index.js",
+    "groupTitle": "Voice_Call_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/chanspy",
+    "title": "Creates a new ChanSpy",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/chanspy -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateChanSpy",
+    "group": "Voice_ChanSpy",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "prefix",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "options",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "auth",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "record",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "recordingFormat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceChanSpy/index.js",
+    "groupTitle": "Voice_ChanSpy"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/chanspy/{id}",
+    "title": "Deletes a ChanSpy",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/chanspy/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteChanSpy",
+    "group": "Voice_ChanSpy",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceChanSpy/index.js",
+    "groupTitle": "Voice_ChanSpy"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/chanspy",
+    "title": "Gets a list of ChanSpy",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/chanspy -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetChanSpy",
+    "group": "Voice_ChanSpy",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/chanspy?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/chanspy?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/chanspy?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/chanspy?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/chanspy?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceChanSpy/index.js",
+    "groupTitle": "Voice_ChanSpy"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/chanspy/{id}",
+    "title": "Gets a single ChanSpy",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/chanspy/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowChanSpy",
+    "group": "Voice_ChanSpy",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceChanSpy/index.js",
+    "groupTitle": "Voice_ChanSpy"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/chanspy/{id}",
+    "title": "Update an existing ChanSpy",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/chanspy/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateChanSpy",
+    "group": "Voice_ChanSpy",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceChanSpy/index.js",
+    "groupTitle": "Voice_ChanSpy"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/contexts",
+    "title": "Create a new context",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/contexts -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Voice_Contexts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "defaultEntry",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceContext/index.js",
+    "groupTitle": "Voice_Contexts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/contexts/{id}",
+    "title": "Deletes a context",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "Delete",
+    "group": "Voice_Contexts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceContext/index.js",
+    "groupTitle": "Voice_Contexts"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/contexts",
+    "title": "Gets a list of Contexts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/contexts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetContexts",
+    "group": "Voice_Contexts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/contexts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/contexts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/contexts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/contexts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/contexts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceContext/index.js",
+    "groupTitle": "Voice_Contexts"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/contexts/{id}",
+    "title": "Gets a single Context",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowContexts",
+    "group": "Voice_Contexts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceContext/index.js",
+    "groupTitle": "Voice_Contexts"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/contexts/{id}",
+    "title": "Update an existing context",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Update",
+    "group": "Voice_Contexts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceContext/index.js",
+    "groupTitle": "Voice_Contexts"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/dials/reports/describe",
+    "title": "Gets table info about Dial Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/dials/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeDial_Reports",
+    "group": "Voice_Dial_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceDialReport/index.js",
+    "groupTitle": "Voice_Dial_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/dials/reports",
+    "title": "Gets a list of Dial Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/dials/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDial_Reports",
+    "group": "Voice_Dial_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/dials/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/dials/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/dials/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/dials/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/dials/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceDialReport/index.js",
+    "groupTitle": "Voice_Dial_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/dials/reports/{id}",
+    "title": "Gets a single Dial Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/dials/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDial_Reports",
+    "group": "Voice_Dial_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceDialReport/index.js",
+    "groupTitle": "Voice_Dial_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/extensions/{id}",
+    "title": "Deletes a Extension",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteExtensions",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/extensions",
+    "title": "Gets a list of Extensions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetExtensions",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/extensions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/extensions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/extensions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/extensions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/extensions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/extensions/{id}",
+    "title": "Gets a single Extension",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowExtensions",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/extensions",
+    "title": "Create new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions/{id}/applications -d '[{\"app\": \"Set\", \"appdata\": \"CALLERDNID=${CALLER(dnid)}\"}]' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/extensions",
+    "title": "Create an extension",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions -d '{\"exten\": \"12345\", \"context\": \"from-custom\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "create",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/extensions/{id}",
+    "title": "Update an extension",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions/{id} -d '{\"exten\": \"12345\", \"context\": \"from-custom\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/mohs",
+    "title": "Create a new a new MOH",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs -d '{\"name\": \"xmas_musics\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddMoh",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/mohs/{id}/sounds",
+    "title": "Add sound to MOH",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds -d '{\"id\": 1}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSound",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/mohs/{id}",
+    "title": "Deletes an MOH",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DestroyMoh",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mohs",
+    "title": "Gets a list of Music On Holds",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMusic_On_Holds",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mohs?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mohs?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mohs?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mohs?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mohs?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mohs/{id}/sounds",
+    "title": "Gets sounds from MOH",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "GetSounds",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/mohs/{id}/sounds/{id2}",
+    "title": "Remove sound from MOH",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds/{id2} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSound",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mohs/{id}",
+    "title": "Gets a single Music On Hold",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMusic_On_Holds",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/mohs/{id}",
+    "title": "Update an existing Music On Hold",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMusic_On_Holds",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/mails",
+    "title": "Creates a new Mail",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMails",
+    "group": "Voice_Mails",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customer_id",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fullname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pager",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tz",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "attach",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "saycid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callback",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "review",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "operator",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "envelope",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "sayduration",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "saydurationm",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "sendvoicemail",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "delete",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "nextaftercmd",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "forcename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "forcegreetings",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "hidefromdir",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "stamp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "emailsubject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "emailbody",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "maxsecs",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "maxmsg",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/mails/{id}",
+    "title": "Deletes a Mail",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMails",
+    "group": "Voice_Mails",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mails",
+    "title": "Gets a list of Mails",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMails",
+    "group": "Voice_Mails",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mails?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mails?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mails?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mails?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mails?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mails/{id}",
+    "title": "Gets a single Mail",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMails",
+    "group": "Voice_Mails",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mails/{id}/messages",
+    "title": "Gets voice mail messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Voice_Mails",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/mails/{id}",
+    "title": "Update an existing Mail",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMails",
+    "group": "Voice_Mails",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/mails/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Voice_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "msgnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dir",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "macrocontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "origtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "duration",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailboxuser",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailboxcontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Blob",
+            "optional": true,
+            "field": "recording",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "flag",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "msg_id",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "stamp",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/mails/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Voice_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mails/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Voice_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mails/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mails/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mails/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mails/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mails/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mails/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Voice_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "get",
+    "url": "voice/mails/messages/{id}/download",
+    "title": "Download Voice Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}voice/mails/messages/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Voice_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/mails/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Voice_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/prefixes/{id}/users",
+    "title": "Add agents to a prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/prefixes/{id}",
+    "title": "Deletes a Prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeletePrefixes",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes/describe",
+    "title": "Gets table info about Prefixes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribePrefixes",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes/{id}/users",
+    "title": "Gets agents from prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes",
+    "title": "Gets a list of Prefixes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetPrefixes",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/prefixes?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/prefixes?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/prefixes?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/prefixes?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/prefixes?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/prefixes/{id}/users",
+    "title": "Removes agents from a prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes/{id}",
+    "title": "Gets a single Prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowPrefixes",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/prefixes/{id}",
+    "title": "Update an existing prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Update",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/prefixes",
+    "title": "Create a prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "create",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/reports/describe",
+    "title": "Gets table info about Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueue_Reports",
+    "group": "Voice_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueueReport/index.js",
+    "groupTitle": "Voice_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/reports",
+    "title": "Gets a list of Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueue_Reports",
+    "group": "Voice_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/queues/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/queues/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/queues/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/queues/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/queues/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueueReport/index.js",
+    "groupTitle": "Voice_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/reports/{id}",
+    "title": "Gets a single Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueue_Reports",
+    "group": "Voice_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueueReport/index.js",
+    "groupTitle": "Voice_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/reports/index",
+    "title": "Get Voice Queues Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/reports/index -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getVoiceQueuesReport",
+    "group": "Voice_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueueReport/index.js",
+    "groupTitle": "Voice_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues/{id}/users",
+    "title": "Add agents to queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues/{id}/blacklists",
+    "title": "Add blacklists to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddBlackLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues/{id}/lists",
+    "title": "Add lists to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/lists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues/{id}/teams",
+    "title": "Add teams to queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues/clone",
+    "title": "Clone an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneQueues",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Voice_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"inbound\"",
+              "\"outbound\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "musiconhold",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "announce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rr\"",
+              "\"ringall\"",
+              "\"leastrecent\"",
+              "\"fewestcalls\"",
+              "\"random\"",
+              "\"rrmemory\"",
+              "\"linear\"",
+              "\"wrandom\"",
+              "\"rrordered\""
+            ],
+            "optional": false,
+            "field": "strategy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "servicelevel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "penaltymemberslimit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "retry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "timeoutpriority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "weight",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "wrapuptime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "autofill",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"all\""
+            ],
+            "optional": true,
+            "field": "autopause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "autopausedelay",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "autopausebusy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "autopauseunavail",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "maxlen",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "setinterfacevar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "setqueueentryvar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "setqueuevar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "eventmemberstatus",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membermacro",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membergosub",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "announce_frequency",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "min_announce_frequency",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "periodic_announce_frequency",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "random_periodic_announce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "relative_periodic_announce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"once\""
+            ],
+            "optional": true,
+            "field": "announce_holdtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "announce_position",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "announce_to_first_user",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "announce_position_limit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"0\"",
+              "\"5\"",
+              "\"10\"",
+              "\"15\"",
+              "\"20\"",
+              "\"30\""
+            ],
+            "optional": true,
+            "field": "announce_round_seconds",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "monitor_format",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "monitor_type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_youarenext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_thereare",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_callswaiting",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_holdtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_minute",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_minutes",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_seconds",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_thankyou",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_reporthold",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_quantity1",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_quantity2",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_periodic_announce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_less_than",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "periodic_announce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinempty",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leavewhenempty",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "reportholdtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "ringinuse",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "memberdelay",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "timeoutrestart",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultrule",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "acw",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "acwTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialActive",
+            "description": "<p>Active/Disactive Campaign</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"preview\"",
+              "\"progressive\"",
+              "\"power\"",
+              "\"predictive\"",
+              "\"booked\""
+            ],
+            "optional": true,
+            "field": "dialMethod",
+            "description": "<p>Dial Method.</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialLimitChannel",
+            "description": "<p>Max 9999 channels, 0 means unlimited.</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialLimitQueue",
+            "description": "<p>Max 9999 member in queue(min:1, max:9999), 0 means unlimited.</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "dialPowerLevel",
+            "description": "<p>Power Level: Calls for agents (min:1, max:10).</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"agentBusyFactor\"",
+              "\"dropRate\""
+            ],
+            "optional": true,
+            "field": "dialPredictiveOptimization",
+            "description": "<p>Only for predictive method.</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "dialPredictiveOptimizationPercentage",
+            "description": "<p>Predictive Optimization Percentage (min: 1, max: 95)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialPredictiveInterval",
+            "description": "<p>Interval Predictive Minutes (min:5 max:30)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialOriginateCallerIdName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialOriginateCallerIdNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialOriginateTimeout",
+            "description": "<p>Originate Timeout Seconds (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialQueueOptions",
+            "description": "<p>https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialQueueTimeout",
+            "description": "<p>Queue Timeout Seconds (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialQueueProject",
+            "description": "<p>AGI queue option (use: agi://127.0.0.1/square,&lt;project_name&gt;)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCongestionMaxRetry",
+            "description": "<p>#Congestion Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCongestionRetryFrequency",
+            "description": "<p>Congestion Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialBusyMaxRetry",
+            "description": "<p>#Busy Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialBusyRetryFrequency",
+            "description": "<p>Busy Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoAnswerMaxRetry",
+            "description": "<p>#NoAnswer Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoAnswerRetryFrequency",
+            "description": "<p>NoAnswer Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialGlobalMaxRetry",
+            "description": "<p>#Global Max Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialTimezone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialGlobalInterval",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialPrefix",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"always\"",
+              "\"never\"",
+              "\"onlyIfOpen\""
+            ],
+            "optional": true,
+            "field": "dialCheckDuplicateType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialAMDActive",
+            "description": "<p>Active/Disactive AMD</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDInitialSilence",
+            "description": "<p>#AMD Initial Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDGreeting",
+            "description": "<p>#AMD Greeting</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDAfterGreetingSilence",
+            "description": "<p>#AMD After Greeting Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDTotalAnalysisTime",
+            "description": "<p>#AMD Total Analysis Time</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMinWordLength",
+            "description": "<p>#AMD Min Word Length</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDBetweenWordsSilence",
+            "description": "<p>#AMD Between Words Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMaximumNumberOfWords",
+            "description": "<p>#AMD Maximum Number Of Words</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDSilenceThreshold",
+            "description": "<p>#AMD Silence Threshold (min:0, max:32767)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMaximumWordLength",
+            "description": "<p>#AMD Maximum Word Length</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialRecallMeTimeout",
+            "description": "<p>#RecallMe Timeout (min:1)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialRecallInQueue",
+            "description": "<p>Active/Disactive Recall In Queue</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"DESC\"",
+              "\"ASC\""
+            ],
+            "optional": true,
+            "field": "dialOrderByScheduledAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialQueueProject2",
+            "description": "<p>AGI queue option (use: agi://127.0.0.1/square,&lt;project_name&gt;)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialAgiAfterHangupClient",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialAgiAfterHangupAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialRandomLastDigitCallerIdNumber",
+            "description": "<p>Random Last Digit (min:1, max:15)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCutDigit",
+            "description": "<p>Cut Digit (min:1, max:15)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoSuchNumberMaxRetry",
+            "description": "<p>#NoSuchNumber Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoSuchNumberRetryFrequency",
+            "description": "<p>NoSuchNumber Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialDropMaxRetry",
+            "description": "<p>#Drop Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialDropRetryFrequency",
+            "description": "<p>Drop Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAbandonedMaxRetry",
+            "description": "<p>#Abandoned Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAbandonedRetryFrequency",
+            "description": "<p>Abandoned Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialMachineMaxRetry",
+            "description": "<p>#Machine Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialMachineRetryFrequency",
+            "description": "<p>Machine Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAgentRejectMaxRetry",
+            "description": "<p>#AgentReject Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAgentRejectRetryFrequency",
+            "description": "<p>AgentReject Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialPredictiveIntervalMaxThreshold",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialPredictiveIntervalMinThreshold",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/blacklists",
+    "title": "Get queue blacklists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetBlackLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/finals",
+    "title": "Gets queue hopper finals",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_finals -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperFinals",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/hopper_histories",
+    "title": "Gets queue hopper histories",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_histories -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperHistories",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/hoppers",
+    "title": "Gets queue hoppers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/hoppers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHoppers",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/lists",
+    "title": "Get queue lists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/lists -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/members",
+    "title": "Gets queue members",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/members -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/teams",
+    "title": "Gets queue team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/queues/{id}/blacklists",
+    "title": "Remove blacklists from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveBlackLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/queues/{id}/lists",
+    "title": "Remove lists from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/lists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/blacks",
+    "title": "Gets queue hopper blacks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_black -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getHopperBlacks",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/recordings",
+    "title": "Creates a new Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateRecordings",
+    "group": "Voice_Recordings",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "format",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "connectedlinenum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "connectedlinename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rating",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "userDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "location",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transcribeName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transcribeStatus",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "fileUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "fileText",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "failureReason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sentiment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "sPositive",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "sNegative",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "sNeutral",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "sMixed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "tempSentiment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "createdAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "updatedAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings/describe",
+    "title": "Gets table info about Recordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeRecordings",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings",
+    "title": "Gets a list of Recordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetRecordings",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings/{id}",
+    "title": "Gets a single Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRecordings",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/recordings/{id}",
+    "title": "Delete voice recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroy",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings/{id}/download",
+    "title": "Download Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings/{id}/downloads",
+    "title": "Download Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/downloads -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "downloads",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings/{id}/transcribe",
+    "title": "Run Transcribe Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "transcribe",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/recordings/{id}/transcribe",
+    "title": "Run Transcribe Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "transcribe",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/recordings/{id}",
+    "title": "Update an existing Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateRecordings",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/transfers/reports",
+    "title": "Creates a new Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateTransfer_Reports",
+    "group": "Voice_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"blind\"",
+              "\"attended\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "result",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfererchannel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transferercalleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transferercalleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfererconnectedlinenum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfererconnectedlinename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereraccountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transferercontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfererexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfererlinkedid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereechannel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereecalleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereecalleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereeconnectedlinenum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereeconnectedlinename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereeaccountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereecontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereeexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereelinkedid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"Yes\"",
+              "\"No\""
+            ],
+            "optional": true,
+            "field": "isexternal",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "extension",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceTransferReport/index.js",
+    "groupTitle": "Voice_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/transfers/reports/{id}",
+    "title": "Deletes a Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteTransfer_Reports",
+    "group": "Voice_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceTransferReport/index.js",
+    "groupTitle": "Voice_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/transfers/reports",
+    "title": "Gets a list of Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTransfer_Reports",
+    "group": "Voice_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/transfers/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/transfers/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/transfers/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/transfers/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/transfers/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceTransferReport/index.js",
+    "groupTitle": "Voice_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/transfers/reports/{id}",
+    "title": "Gets a single Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTransfer_Reports",
+    "group": "Voice_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceTransferReport/index.js",
+    "groupTitle": "Voice_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/transfers/reports/{id}",
+    "title": "Update an existing Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateTransfer_Reports",
+    "group": "Voice_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceTransferReport/index.js",
+    "groupTitle": "Voice_Transfer_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/vtiger/accounts",
+    "title": "Creates a new Vtiger Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateVtiger_Accounts",
+    "group": "Vtiger_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "moduleName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "accessKey",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/vtiger/accounts/{id}",
+    "title": "Deletes a Vtiger Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteVtiger_Accounts",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/accounts",
+    "title": "Gets a list of Vtiger Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVtiger_Accounts",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/accounts/{id}",
+    "title": "Gets a single Vtiger Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowVtiger_Accounts",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/vtiger/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/vtiger/accounts/{id}",
+    "title": "Update an existing Vtiger Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateVtiger_Accounts",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/vtiger/configurations",
+    "title": "Creates a new Vtiger Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateVtiger_Configurations",
+    "group": "Vtiger_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/vtiger/configurations/{id}",
+    "title": "Deletes a Vtiger Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteVtiger_Configurations",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/configurations",
+    "title": "Gets a list of Vtiger Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVtiger_Configurations",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/configurations/{id}",
+    "title": "Gets a single Vtiger Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowVtiger_Configurations",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/vtiger/configurations/{id}",
+    "title": "Update an existing Vtiger Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateVtiger_Configurations",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/vtiger/fields",
+    "title": "Creates a new Vtiger Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateVtiger_Fields",
+    "group": "Vtiger_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerField/index.js",
+    "groupTitle": "Vtiger_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/vtiger/fields/{id}",
+    "title": "Deletes a Vtiger Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteVtiger_Fields",
+    "group": "Vtiger_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerField/index.js",
+    "groupTitle": "Vtiger_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/fields",
+    "title": "Gets a list of Vtiger Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVtiger_Fields",
+    "group": "Vtiger_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerField/index.js",
+    "groupTitle": "Vtiger_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/fields/{id}",
+    "title": "Gets a single Vtiger Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowVtiger_Fields",
+    "group": "Vtiger_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerField/index.js",
+    "groupTitle": "Vtiger_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/vtiger/fields/{id}",
+    "title": "Update an existing Vtiger Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateVtiger_Fields",
+    "group": "Vtiger_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerField/index.js",
+    "groupTitle": "Vtiger_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/answer",
+    "title": "answer webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/answer -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_answer",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "sessionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/calls",
+    "title": "webrtc call list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/calls -d '{\"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_calls",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/hangup",
+    "title": "hangup webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/hangup -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_hangup",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "sessionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/hold",
+    "title": "hold webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/hold -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_hold",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sessionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/unhold",
+    "title": "unhold webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/unhold -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_hold",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "sessionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/originate",
+    "title": "Originate new webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/originate -d '{\"callNumber\": \"0119692844\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_originate",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "callNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "callerId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "callbackUrl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/transfer",
+    "title": "blind transfer webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/transfer -d '{\"userId\": 54, \"sessionId\":\"<sessionId>\", \"transferNumber\":\"<transferNumber>\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_transfer",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "string",
+            "optional": false,
+            "field": "sessionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "string",
+            "optional": false,
+            "field": "transferNumber",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/users",
+    "title": "Add agents to a whatsapp account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts",
+    "title": "Creates a new Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAccounts",
+    "group": "Whatsapp_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "remote",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"twilio\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountSid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "authToken",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notificationTemplate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationSound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationShake",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "waitForTheAssignedAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "queueTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "queueTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "agentTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/accounts/{id}",
+    "title": "Deletes a Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAccounts",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/describe",
+    "title": "Gets table info about Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAccounts",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts",
+    "title": "Gets a list of Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAccounts",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/{id}/users",
+    "title": "Gets agents from whatsapp account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/accounts/{id}/users",
+    "title": "Removes agents from a whatsapp account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/accounts/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/accounts/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/{id}",
+    "title": "Gets a single Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAccounts",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Whatsapp_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Whatsapp_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Whatsapp_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/{id}/applications",
+    "title": "Gets account applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/notify",
+    "title": "Notify new message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "notify",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new whatsapp message to be sent to the system.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/send",
+    "title": "Send new whatsapp message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/send -d '{from: '+39333123456', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "sendWhatsapp",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/messages/{id}/status",
+    "title": "Receive message status",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "statusMessage",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/accounts/{id}",
+    "title": "Update an existing Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAccounts",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/applications",
+    "title": "Creates a new Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateApplications",
+    "group": "Whatsapp_Applications",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappApplication/index.js",
+    "groupTitle": "Whatsapp_Applications"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Whatsapp_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappApplication/index.js",
+    "groupTitle": "Whatsapp_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/applications",
+    "title": "Gets a list of Applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/applications -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetApplications",
+    "group": "Whatsapp_Applications",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappApplication/index.js",
+    "groupTitle": "Whatsapp_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Whatsapp_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappApplication/index.js",
+    "groupTitle": "Whatsapp_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Whatsapp_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappApplication/index.js",
+    "groupTitle": "Whatsapp_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Whatsapp_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/interactions/{id}/messages",
+    "title": "Creates new messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Whatsapp_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/interactions/{id}/download",
+    "title": "Gets interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Whatsapp_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Whatsapp_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Whatsapp_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Whatsapp_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Whatsapp_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Whatsapp_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/reports/queue",
+    "title": "Creates a new Whatsapp Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/reports/queue/{id}",
+    "title": "Deletes a Whatsapp Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/queue/describe",
+    "title": "Gets table info about Whatsapp Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/queue",
+    "title": "Gets a list of Whatsapp Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/queue/{id}",
+    "title": "Gets a single Whatsapp Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/reports/queue/{id}",
+    "title": "Update an existing Whatsapp Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Whatsapp_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": true,
+            "field": "strategy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/reports/transfer",
+    "title": "Creates a new Whatsapp Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/reports/transfer/{id}",
+    "title": "Deletes a Whatsapp Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/transfer/describe",
+    "title": "Gets table info about Whatsapp Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/transfer",
+    "title": "Gets a list of Whatsapp Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/transfer/{id}",
+    "title": "Gets a single Whatsapp Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/reports/transfer/{id}",
+    "title": "Update an existing Whatsapp Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zendesk/accounts",
+    "title": "Creates a new Zendesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZendesk_Accounts",
+    "group": "Zendesk_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"password\"",
+              "\"token\""
+            ],
+            "optional": true,
+            "field": "authType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"integrationTab\"",
+              "\"newTab\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zendesk/accounts/{id}",
+    "title": "Deletes a Zendesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZendesk_Accounts",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/accounts",
+    "title": "Gets a list of Zendesk Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZendesk_Accounts",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/accounts/{id}",
+    "title": "Gets a single Zendesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZendesk_Accounts",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zendesk/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zendesk/accounts/{id}",
+    "title": "Update an existing Zendesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZendesk_Accounts",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zendesk/configurations",
+    "title": "Creates a new Zendesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZendesk_Configurations",
+    "group": "Zendesk_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zendesk/configurations/{id}",
+    "title": "Deletes a Zendesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZendesk_Configurations",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations",
+    "title": "Gets a list of Zendesk Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZendesk_Configurations",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations/{id}",
+    "title": "Gets a single Zendesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZendesk_Configurations",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations/{id}/tags",
+    "title": "Gets configurations tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/tags -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getTags",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zendesk/configurations/{id}/tags",
+    "title": "Sets new tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "setTags",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zendesk/configurations/{id}",
+    "title": "Update an existing Zendesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZendesk_Configurations",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zendesk/fields",
+    "title": "Creates a new Zendesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZendesk_Fields",
+    "group": "Zendesk_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskField/index.js",
+    "groupTitle": "Zendesk_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zendesk/fields/{id}",
+    "title": "Deletes a Zendesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZendesk_Fields",
+    "group": "Zendesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskField/index.js",
+    "groupTitle": "Zendesk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/fields",
+    "title": "Gets a list of Zendesk Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZendesk_Fields",
+    "group": "Zendesk_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskField/index.js",
+    "groupTitle": "Zendesk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/fields/{id}",
+    "title": "Gets a single Zendesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZendesk_Fields",
+    "group": "Zendesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskField/index.js",
+    "groupTitle": "Zendesk_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zendesk/fields/{id}",
+    "title": "Update an existing Zendesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZendesk_Fields",
+    "group": "Zendesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskField/index.js",
+    "groupTitle": "Zendesk_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zoho/accounts",
+    "title": "Creates a new Zoho Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZoho_Accounts",
+    "group": "Zoho_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "zone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientSecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "code",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "refreshToken",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zoho/accounts/{id}",
+    "title": "Deletes a Zoho Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZoho_Accounts",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/accounts",
+    "title": "Gets a list of Zoho Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZoho_Accounts",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/accounts/{id}",
+    "title": "Gets a single Zoho Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZoho_Accounts",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zoho/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zoho/accounts/{id}",
+    "title": "Update an existing Zoho Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZoho_Accounts",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zoho/configurations",
+    "title": "Creates a new Zoho Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZoho_Configurations",
+    "group": "Zoho_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"lead\"",
+              "\"contact\"",
+              "\"nothing\""
+            ],
+            "optional": true,
+            "field": "moduleCreate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"contact_lead\"",
+              "\"contact\"",
+              "\"lead\""
+            ],
+            "optional": true,
+            "field": "moduleSearch",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zoho/configurations/{id}",
+    "title": "Deletes a Zoho Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZoho_Configurations",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations",
+    "title": "Gets a list of Zoho Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZoho_Configurations",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations/{id}",
+    "title": "Gets a single Zoho Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZoho_Configurations",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zoho/configurations/{id}",
+    "title": "Update an existing Zoho Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZoho_Configurations",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zoho/fields",
+    "title": "Creates a new Zoho Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZoho_Fields",
+    "group": "Zoho_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoField/index.js",
+    "groupTitle": "Zoho_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zoho/fields/{id}",
+    "title": "Deletes a Zoho Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZoho_Fields",
+    "group": "Zoho_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoField/index.js",
+    "groupTitle": "Zoho_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/fields",
+    "title": "Gets a list of Zoho Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZoho_Fields",
+    "group": "Zoho_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoField/index.js",
+    "groupTitle": "Zoho_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/fields/{id}",
+    "title": "Gets a single Zoho Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZoho_Fields",
+    "group": "Zoho_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoField/index.js",
+    "groupTitle": "Zoho_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zoho/fields/{id}",
+    "title": "Update an existing Zoho Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZoho_Fields",
+    "group": "Zoho_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoField/index.js",
+    "groupTitle": "Zoho_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/cdr",
+    "title": "Creates a new Cdr",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCdrs",
+    "group": "cdr",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "calldate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "src",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dst",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dcontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dstchannel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastapp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "duration",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "billsec",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "amaflags",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "userfield",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "linkedid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sequence",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "peeraccount",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tag",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cdr/{id}",
+    "title": "Deletes a Cdr",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCdrs",
+    "group": "cdr",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "get",
+    "url": "/api/cdr/describe",
+    "title": "Gets table info about Cdrs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeCdrs",
+    "group": "cdr",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "get",
+    "url": "/api/cdr",
+    "title": "Gets a list of Cdrs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCdrs",
+    "group": "cdr",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cdr?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cdr?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cdr?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cdr?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cdr?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "get",
+    "url": "/api/cdr/{id}",
+    "title": "Gets a single Cdr",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCdrs",
+    "group": "cdr",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "put",
+    "url": "/api/cdr/{id}",
+    "title": "Update an existing Cdr",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCdrs",
+    "group": "cdr",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "post",
+    "url": "/api/voiceQueuesLog",
+    "title": "Creates a new VoiceQueuesLog",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voiceQueuesLog -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateVoiceQueuesLogs",
+    "group": "voiceQueuesLog",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "time",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "callid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "queuename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "agent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "event",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data1",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data2",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data3",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data4",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data5",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "dtm",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueuesLog/index.js",
+    "groupTitle": "voiceQueuesLog"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voiceQueuesLog/{id}",
+    "title": "Deletes a VoiceQueuesLog",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteVoiceQueuesLogs",
+    "group": "voiceQueuesLog",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueuesLog/index.js",
+    "groupTitle": "voiceQueuesLog"
+  },
+  {
+    "type": "get",
+    "url": "/api/voiceQueuesLog",
+    "title": "Gets a list of VoiceQueuesLogs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voiceQueuesLog -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVoiceQueuesLogs",
+    "group": "voiceQueuesLog",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voiceQueuesLog?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voiceQueuesLog?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voiceQueuesLog?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voiceQueuesLog?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voiceQueuesLog?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueuesLog/index.js",
+    "groupTitle": "voiceQueuesLog"
+  },
+  {
+    "type": "get",
+    "url": "/api/voiceQueuesLog/{id}",
+    "title": "Gets a single VoiceQueuesLog",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowVoiceQueuesLogs",
+    "group": "voiceQueuesLog",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueuesLog/index.js",
+    "groupTitle": "voiceQueuesLog"
+  },
+  {
+    "type": "put",
+    "url": "/api/voiceQueuesLog/{id}",
+    "title": "Update an existing VoiceQueuesLog",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateVoiceQueuesLogs",
+    "group": "voiceQueuesLog",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueuesLog/index.js",
+    "groupTitle": "voiceQueuesLog"
+  }
+] });
diff --git a/apidoc/api_data.json b/apidoc/api_data.json
index db656d3..3221e57 100644
--- a/apidoc/api_data.json
+++ b/apidoc/api_data.json
@@ -1 +1,38663 @@
-[
  {
    "type": "delete",
    "url": "/api/actions/{id}",
    "title": "Deletes a Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/actions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteActions",
    "group": "Actions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/action/index.js",
    "groupTitle": "Actions"
  },
  {
    "type": "put",
    "url": "/api/actions/{id}",
    "title": "Update an existing Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/actions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateActions",
    "group": "Actions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/action/index.js",
    "groupTitle": "Actions"
  },
  {
    "type": "post",
    "url": "/api/analytics/custom_reports",
    "title": "Creates a new Analytic Custom Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Custom_Reports",
    "group": "Analytic_Custom_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "parent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "table",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "conditions",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "joins",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/custom_reports/{id}",
    "title": "Deletes a Analytic Custom Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Custom_Reports",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/custom_reports",
    "title": "Gets a list of Analytic Custom Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Custom_Reports",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/custom_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/custom_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/custom_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/custom_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/custom_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/custom_reports/{id}",
    "title": "Gets a single Analytic Custom Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Custom_Reports",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/custom_reports/{id}/preview",
    "title": "Report Preview",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/preview -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "preview",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/custom_reports/{id}/query",
    "title": "Report Query SQL",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/query -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "query",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/custom_reports/{id}/run",
    "title": "Report Run",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/run -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "run",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "put",
    "url": "/api/analytics/custom_reports/{id}",
    "title": "Update an existing Analytic Custom Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Custom_Reports",
    "group": "Analytic_Custom_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticCustomReport/index.js",
    "groupTitle": "Analytic_Custom_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/default_reports",
    "title": "Creates a new Analytic Default Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Default_Reports",
    "group": "Analytic_Default_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "parent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "table",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "conditions",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "joins",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/default_reports/{id}",
    "title": "Deletes a Analytic Default Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Default_Reports",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/default_reports",
    "title": "Gets a list of Analytic Default Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Default_Reports",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/default_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/default_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/default_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/default_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/default_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/default_reports/{id}",
    "title": "Gets a single Analytic Default Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Default_Reports",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/default_reports/{id}/preview",
    "title": "Report Preview",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id}/preview -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "preview",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/default_reports/{id}/query",
    "title": "Report Query SQL",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id}/query -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "query",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/default_reports/{id}/run",
    "title": "Report Run",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id}/run -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "run",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "put",
    "url": "/api/analytics/default_reports/{id}",
    "title": "Update an existing Analytic Default Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/default_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Default_Reports",
    "group": "Analytic_Default_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticDefaultReport/index.js",
    "groupTitle": "Analytic_Default_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/extracted_reports",
    "title": "Creates a new Analytic Extracted Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Extacted_Reports",
    "group": "Analytic_Extracted_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "basename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"csv\"",
              "\"pdf\"",
              "\"xlsx\""
            ],
            "optional": false,
            "field": "output",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "savename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "startDate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "endDate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "status",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"manual\"",
              "\"scheduled\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "reportId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reportType",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/extracted_reports/{id}",
    "title": "Deletes a Analytic Extracted Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Extacted_Reports",
    "group": "Analytic_Extracted_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/extracted_reports",
    "title": "Gets a list of Analytic Extacted Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Extacted_Reports",
    "group": "Analytic_Extracted_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/extracted_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/extracted_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/extracted_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/extracted_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/extracted_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/extracted_reports/{id}",
    "title": "Gets a single Analytic Extracted Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Extacted_Reports",
    "group": "Analytic_Extracted_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/extracted_reports/{id}/download",
    "title": "Download Extracted Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Analytic_Extracted_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "put",
    "url": "/api/analytics/extracted_reports/{id}",
    "title": "Update an existing Analytic Extracted Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Extacted_Reports",
    "group": "Analytic_Extracted_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticExtractedReport/index.js",
    "groupTitle": "Analytic_Extracted_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/field_reports/create_many",
    "title": "Creates many Analytic Field Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "BulkCreateAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "field",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "alias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "function",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "format",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "groupBy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "orderBy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "custom",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/field_reports/destroy_many?ids={ids}",
    "title": "Deletes many Analytic Field Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/destroy_many?ids=1&ids=2&ids=3 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "BulkDeleteAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/field_reports",
    "title": "Creates a new Analytic Field Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "field",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "alias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "function",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "format",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "groupBy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "orderBy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "custom",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/field_reports/{id}",
    "title": "Deletes a Analytic Field Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/field_reports",
    "title": "Gets a list of Analytic Field Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/field_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/field_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/field_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/field_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/field_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/field_reports/{id}",
    "title": "Gets a single Analytic Field Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/field_reports/{id}/create_many",
    "title": "Rewrite fields set",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/{id}/create_many -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addFields",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "put",
    "url": "/api/analytics/field_reports/{id}",
    "title": "Update an existing Analytic Field Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/field_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Field_Reports",
    "group": "Analytic_Field_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticFieldReport/index.js",
    "groupTitle": "Analytic_Field_Reports"
  },
  {
    "type": "post",
    "url": "/api/analytics/metrics",
    "title": "Creates a new Analytic Metrics",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/metrics -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Metric",
    "group": "Analytic_Metrics",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "table",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "metric",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticMetric/index.js",
    "groupTitle": "Analytic_Metrics"
  },
  {
    "type": "delete",
    "url": "/api/analytics/metrics/{id}",
    "title": "Deletes a Analytic Metrics",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/metrics/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Metric",
    "group": "Analytic_Metrics",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticMetric/index.js",
    "groupTitle": "Analytic_Metrics"
  },
  {
    "type": "get",
    "url": "/api/analytics/metrics",
    "title": "Gets a list of Analytic Metric",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/metrics -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Metric",
    "group": "Analytic_Metrics",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/metrics?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/metrics?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/metrics?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/metrics?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/metrics?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticMetric/index.js",
    "groupTitle": "Analytic_Metrics"
  },
  {
    "type": "get",
    "url": "/api/analytics/metrics/{id}",
    "title": "Gets a single Analytic Metrics",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/metrics/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Metric",
    "group": "Analytic_Metrics",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticMetric/index.js",
    "groupTitle": "Analytic_Metrics"
  },
  {
    "type": "put",
    "url": "/api/analytics/metrics/{id}",
    "title": "Update an existing Analytic Metrics",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/metrics/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Metric",
    "group": "Analytic_Metrics",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticMetric/index.js",
    "groupTitle": "Analytic_Metrics"
  },
  {
    "type": "post",
    "url": "/api/analytics/tree_reports",
    "title": "Creates a new Analytic Tree Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/tree_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAnalytic_Tree_Reports",
    "group": "Analytic_Tree_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "tree",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticTreeReport/index.js",
    "groupTitle": "Analytic_Tree_Reports"
  },
  {
    "type": "delete",
    "url": "/api/analytics/tree_reports/{id}",
    "title": "Deletes a Analytic Tree Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAnalytic_Tree_Reports",
    "group": "Analytic_Tree_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticTreeReport/index.js",
    "groupTitle": "Analytic_Tree_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/tree_reports",
    "title": "Gets a list of Analytic Tree Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/tree_reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAnalytic_Tree_Reports",
    "group": "Analytic_Tree_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/tree_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/tree_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/tree_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/tree_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/tree_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/analyticTreeReport/index.js",
    "groupTitle": "Analytic_Tree_Reports"
  },
  {
    "type": "get",
    "url": "/api/analytics/tree_reports/{id}",
    "title": "Gets a single Analytic Tree Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAnalytic_Tree_Reports",
    "group": "Analytic_Tree_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticTreeReport/index.js",
    "groupTitle": "Analytic_Tree_Reports"
  },
  {
    "type": "put",
    "url": "/api/analytics/tree_reports/{id}",
    "title": "Update an existing Analytic Tree Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAnalytic_Tree_Reports",
    "group": "Analytic_Tree_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/analyticTreeReport/index.js",
    "groupTitle": "Analytic_Tree_Reports"
  },
  {
    "type": "post",
    "url": "/api/attachments/clone",
    "title": "Clone an existing Attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneAttachments",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "delete",
    "url": "/api/attachments/{id}",
    "title": "Deletes a Attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAttachments",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "get",
    "url": "/api/attachments",
    "title": "Gets a list of Attachments",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAttachments",
    "group": "Attachments",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/attachments?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/attachments?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/attachments?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/attachments?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/attachments?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "get",
    "url": "/api/attachments/{id}",
    "title": "Gets a single Attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAttachments",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "post",
    "url": "/api/attachments",
    "title": "Add attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "create",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "get",
    "url": "/api/attachments/:id/download",
    "title": "Download attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments/:id/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/{id}/attachment_download",
    "title": "Download attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/attachment_download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "show",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "put",
    "url": "/api/attachments/{id}",
    "title": "Update an existing Attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAttachments",
    "group": "Attachments",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/attachment/index.js",
    "groupTitle": "Attachments"
  },
  {
    "type": "post",
    "url": "/api/auth/local/forgot",
    "title": "Creates a new password reset token",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/auth/local/forgot -d '{\"email\": \"[email-masked]\"}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Local_Forgot_Password",
    "group": "Authentication",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "email",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/authLocal/index.js",
    "groupTitle": "Authentication"
  },
  {
    "type": "post",
    "url": "/api/auth/local/reset/:token",
    "title": "Reset user password",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/auth/local/reset/94b422c1fkdjhg766a198da6997yu6gcc963641d -d '{\"password\": \"My_newP@ssw0rd\"}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Local_Reset_Password",
    "group": "Authentication",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "password",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/authLocal/index.js",
    "groupTitle": "Authentication"
  },
  {
    "type": "post",
    "url": "/api/auth/local",
    "title": "Creates a new User token",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Local_login",
    "group": "Authentication",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "password",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/authLocal/index.js",
    "groupTitle": "Authentication"
  },
  {
    "type": "post",
    "url": "/api/auth/google",
    "title": "Creates a new User token",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Local_login",
    "group": "Authentication",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "password",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/authGoogle/index.js",
    "groupTitle": "Authentication"
  },
  {
    "type": "post",
    "url": "/api/automations",
    "title": "Creates a new Automation",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAutomations",
    "group": "Automations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "status",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "delete",
    "url": "/api/automations/{id}",
    "title": "Deletes a Automation",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAutomations",
    "group": "Automations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "get",
    "url": "/api/automations",
    "title": "Gets a list of Automations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAutomations",
    "group": "Automations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/automations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/automations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/automations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/automations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/automations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "get",
    "url": "/api/automations/{id}",
    "title": "Gets a single Automation",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAutomations",
    "group": "Automations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "post",
    "url": "/api/automations/{id}/actions",
    "title": "Creates new actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id}/actions -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addActions",
    "group": "Automations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "action",
            "description": "<p>Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser, bot, script</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data1",
            "description": "<p>contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data2",
            "description": "<p>integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data3",
            "description": "<p>motionbar[NULL,NULL,WinAppArguments]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data4",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data5",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data6",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "data7",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "post",
    "url": "/api/automations/{id}/conditions",
    "title": "Creates new conditions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id}/conditions -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConditions",
    "group": "Automations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "field",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "operator",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "value",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "get",
    "url": "/api/automations/{id}/actions",
    "title": "Gets Automation Actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id}/actions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getActions",
    "group": "Automations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "get",
    "url": "/api/automations/{id}/conditions",
    "title": "Gets Automation Conditions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id}/conditions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConditions",
    "group": "Automations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "put",
    "url": "/api/automations/{id}",
    "title": "Update an existing Automation",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/automations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAutomations",
    "group": "Automations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/automation/index.js",
    "groupTitle": "Automations"
  },
  {
    "type": "post",
    "url": "/api/canned_answers",
    "title": "Create a new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/canned_answers -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Canned_Answers",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cannedAnswer/index.js",
    "groupTitle": "Canned_Answers"
  },
  {
    "type": "delete",
    "url": "/api/canned_answers/{id}",
    "title": "Deletes a Canned Answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/canned_answers/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteCanned_Answers",
    "group": "Canned_Answers",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cannedAnswer/index.js",
    "groupTitle": "Canned_Answers"
  },
  {
    "type": "get",
    "url": "/api/canned_answers",
    "title": "Gets a list of Canned Answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/canned_answers -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCanned_Answers",
    "group": "Canned_Answers",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/canned_answers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/canned_answers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/canned_answers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/canned_answers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/canned_answers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cannedAnswer/index.js",
    "groupTitle": "Canned_Answers"
  },
  {
    "type": "get",
    "url": "/api/canned_answers/{id}",
    "title": "Gets a single Canned Answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/canned_answers/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCanned_Answers",
    "group": "Canned_Answers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cannedAnswer/index.js",
    "groupTitle": "Canned_Answers"
  },
  {
    "type": "put",
    "url": "/api/canned_answers/{id}",
    "title": "Update an existing Canned Answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/canned_answers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateCanned_Answers",
    "group": "Canned_Answers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cannedAnswer/index.js",
    "groupTitle": "Canned_Answers"
  },
  {
    "type": "get",
    "url": "/chat/internal/users",
    "title": "Gets Users Last Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/chat/internal/users -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getLastUsersMessages",
    "group": "ChatInternalMessage",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "ChatInternalMessage"
  },
  {
    "type": "delete",
    "url": "/api/chat/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Chat_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatApplication/index.js",
    "groupTitle": "Chat_Applications"
  },
  {
    "type": "get",
    "url": "/api/chat/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Chat_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatApplication/index.js",
    "groupTitle": "Chat_Applications"
  },
  {
    "type": "put",
    "url": "/api/chat/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Chat_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatApplication/index.js",
    "groupTitle": "Chat_Applications"
  },
  {
    "type": "post",
    "url": "/api/chat/groups",
    "title": "Creates a new Group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateGroups",
    "group": "Chat_Groups",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "write",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "delete",
    "url": "/api/chat/groups/{id}",
    "title": "Deletes a Group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteGroups",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups/describe",
    "title": "Gets table info about Groups",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeGroups",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups",
    "title": "Gets a list of Groups",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetGroups",
    "group": "Chat_Groups",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/groups?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/groups?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/groups?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/groups?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/groups?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "delete",
    "url": "/api/chat/groups/{id}/members",
    "title": "Removes members from a group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/members?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveMembers",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups/{id}",
    "title": "Gets a single Group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowGroups",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "post",
    "url": "/api/chat/groups/{id}/members",
    "title": "Add members to chat group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/members -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMembers",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "post",
    "url": "/api/chat/groups/{id}/messages",
    "title": "Creates a new group message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/messages -d '{\"body\": \"Hi operator!\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups/{id}/members",
    "title": "Gets Members",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/members -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMembers",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups/{id}/messages",
    "title": "Gets Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "get",
    "url": "/api/chat/groups/{id}/unread",
    "title": "Get unread chat group messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id}/unread -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getUread",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "put",
    "url": "/api/chat/groups/{id}",
    "title": "Update an existing Group",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/groups/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateGroups",
    "group": "Chat_Groups",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatGroup/index.js",
    "groupTitle": "Chat_Groups"
  },
  {
    "type": "post",
    "url": "/api/chat/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "post",
    "url": "/api/chat/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Chat_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ratingValue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"star\"",
              "\"thumb\""
            ],
            "optional": true,
            "field": "ratingType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "ratingMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "pathTranscript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailTranscript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "browserName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "browserVersion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "osName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "osVersion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceModel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceVendor",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "referer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customerIp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "formData",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closeReason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customerPort",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/chat/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Chat_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/chat/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "put",
    "url": "/api/chat/interactions/{id}/abandon",
    "title": "Abandon interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/abandon -d '{\"channel\": \"chat\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "abandon",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to set as abandon an interaction and stop the routing.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "post",
    "url": "/api/chat/interactions/{id}/messages",
    "title": "Creates new messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Chat_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "put",
    "url": "/api/chat/interactions/{id}/close",
    "title": "Close Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "post",
    "url": "/api/chat/interactions/{id}/attachment_upload",
    "title": "Add attachment",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/attachment_upload -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "attachmentUpload",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "put",
    "url": "/api/chat/interactions/{id}/custom_update",
    "title": "Update interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/custom_update -d '{\"channel\": \"chat\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "customUpdate",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to update an interaction.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/{id}/download",
    "title": "Gets interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "get",
    "url": "/api/chat/interactions/{id}/my_messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id}/my_messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMyMessages",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "put",
    "url": "/api/chat/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Chat_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInteraction/index.js",
    "groupTitle": "Chat_Interactions"
  },
  {
    "type": "post",
    "url": "/api/chat/internal/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Chat_Internal_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ChatInternalMessageId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "delete",
    "url": "/api/chat/internal/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Chat_Internal_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/internal/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Chat_Internal_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/internal/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Chat_Internal_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/internal/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/internal/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/internal/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/internal/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/internal/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/internal/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Chat_Internal_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "put",
    "url": "/api/chat/internal/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/internal/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Chat_Internal_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatInternalMessage/index.js",
    "groupTitle": "Chat_Internal_Messages"
  },
  {
    "type": "post",
    "url": "/api/chat/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Chat_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "delete",
    "url": "/api/chat/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Chat_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Chat_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Chat_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Chat_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "put",
    "url": "/api/chat/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Chat_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Messages"
  },
  {
    "type": "post",
    "url": "/api/chat/offline_messages",
    "title": "Creates a new OfflineMessage",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateOfflineMessages",
    "group": "Chat_Offline_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "delete",
    "url": "/api/chat/offline_messages/{id}",
    "title": "Deletes a OfflineMessage",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteOfflineMessages",
    "group": "Chat_Offline_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/offline_messages/describe",
    "title": "Gets table info about OfflineMessages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeOfflineMessages",
    "group": "Chat_Offline_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/offline_messages",
    "title": "Gets a list of OfflineMessages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetOfflineMessages",
    "group": "Chat_Offline_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/offline_messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/offline_messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/offline_messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/offline_messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/offline_messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "get",
    "url": "/api/chat/offline_messages/{id}",
    "title": "Gets a single OfflineMessage",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowOfflineMessages",
    "group": "Chat_Offline_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "put",
    "url": "/api/chat/offline_messages/{id}",
    "title": "Update an existing OfflineMessage",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/offline_messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateOfflineMessages",
    "group": "Chat_Offline_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatOfflineMessage/index.js",
    "groupTitle": "Chat_Offline_Messages"
  },
  {
    "type": "post",
    "url": "/api/chat/proactive_actions",
    "title": "Creates a new Proactive Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/proactive_actions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateProactive_Actions",
    "group": "Chat_Proactive_Actions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"mouseOver\"",
              "\"timeout\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "selector",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatProactiveAction/index.js",
    "groupTitle": "Chat_Proactive_Actions"
  },
  {
    "type": "delete",
    "url": "/api/chat/proactive_actions/{id}",
    "title": "Deletes a Proactive Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteProactive_Actions",
    "group": "Chat_Proactive_Actions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatProactiveAction/index.js",
    "groupTitle": "Chat_Proactive_Actions"
  },
  {
    "type": "get",
    "url": "/api/chat/proactive_actions/{id}",
    "title": "Gets a single Proactive Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowProactive_Actions",
    "group": "Chat_Proactive_Actions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatProactiveAction/index.js",
    "groupTitle": "Chat_Proactive_Actions"
  },
  {
    "type": "put",
    "url": "/api/chat/proactive_actions/{id}",
    "title": "Update an existing Proactive Action",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateProactive_Actions",
    "group": "Chat_Proactive_Actions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatProactiveAction/index.js",
    "groupTitle": "Chat_Proactive_Actions"
  },
  {
    "type": "post",
    "url": "/api/chat/reports/queue",
    "title": "Creates a new Chat Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/chat/reports/queue/{id}",
    "title": "Deletes a Chat Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/queue/describe",
    "title": "Gets table info about Chat Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/queue",
    "title": "Gets a list of Chat Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/queue/{id}",
    "title": "Gets a single Chat Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/chat/reports/queue/{id}",
    "title": "Update an existing Chat Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateChat_Queue_Reports",
    "group": "Chat_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueueReport/index.js",
    "groupTitle": "Chat_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/chat/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "post",
    "url": "/api/chat/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "post",
    "url": "/api/chat/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Chat_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": true,
            "field": "strategy",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "delete",
    "url": "/api/chat/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Chat_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "delete",
    "url": "/api/chat/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "get",
    "url": "/api/chat/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "put",
    "url": "/api/chat/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Chat_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Chat_Queues"
  },
  {
    "type": "post",
    "url": "/api/chat/reports/transfer",
    "title": "Creates a new Chat Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/chat/reports/transfer/{id}",
    "title": "Deletes a Chat Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/transfer/describe",
    "title": "Gets table info about Chat Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/transfer",
    "title": "Gets a list of Chat Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/chat/reports/transfer/{id}",
    "title": "Gets a single Chat Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/chat/reports/transfer/{id}",
    "title": "Update an existing Chat Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateChat_Transfer_Reports",
    "group": "Chat_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatTransferReport/index.js",
    "groupTitle": "Chat_Transfer_Reports"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/users",
    "title": "Add agents to a website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites",
    "title": "Creates a new Website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateWebsites",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "address",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mapKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mapKeyOffline",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentAlias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customerAlias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "color",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "color_button",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "textColor",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "fontSize",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remote",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "animation",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rounded\"",
              "\"squared\""
            ],
            "optional": true,
            "field": "header_shape",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "header_online",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "start_chat_button",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "offline_chat_button",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "header_offline",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "download_transcript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "whiteLabel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "defaultWhiteLabel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "sitepic",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closingQuestion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "formSubmitSuccessMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "formSubmitFailureMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "noteTitle",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "placeholderMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closingMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closingMessageButton",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "skipMessageButton",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "conditionAgreement",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableRating",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableFeedback",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableSendButton",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "feedbackTitle",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"star\"",
              "\"thumb\""
            ],
            "optional": true,
            "field": "ratingType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ratingStarsNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "onlineForm",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "offlineForm",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "autoclose",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableCustomerWriting",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "forwardTranscript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "forwardTranscriptMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "forwardOffline",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "forwardOfflineAddress",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "waitingTitle",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "waitingMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "offlineMessageSubject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "offlineMessageBody",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableUnmanagedNote",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "unmanagedMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "skipUnmanaged",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sendUnmanaged",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableCustomerAttachment",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableCustomerCheckmarks",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "agentAvatar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "showAgentAvatar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "timezone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notificationTemplate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationSound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationShake",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "hideWhenOffline",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentIdentifier",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "waitForTheAssignedAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "alignment",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "verticalAlignment",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messagesAlignment",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultTitle",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "customerAvatar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "showCustomerAvatar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "messageFontSize",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "backgroundColor",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "queueTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "queueTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "agentTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "systemAlias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "systemAvatar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "delete",
    "url": "/api/chat/websites/{id}",
    "title": "Deletes a Website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteWebsites",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/describe",
    "title": "Gets table info about Websites",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeWebsites",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/users",
    "title": "Gets agents from website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites",
    "title": "Gets a list of Websites",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetWebsites",
    "group": "Chat_Websites",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/websites?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/websites?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/websites?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/websites?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/websites?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "delete",
    "url": "/api/chat/websites/{id}/users",
    "title": "Removes agents from a website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "delete",
    "url": "/api/chat/websites/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "delete",
    "url": "/api/chat/websites/{id}/dispositions",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}",
    "title": "Gets a single Website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowWebsites",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "put",
    "url": "/api/chat/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/avatar",
    "title": "Add avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/customer_avatar",
    "title": "Add customer avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/customer_avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addCustomerAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/accounts/{id}/interactions",
    "title": "Creates new interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/interactions -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addInteraction",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ratingValue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"star\"",
              "\"thumb\""
            ],
            "optional": true,
            "field": "ratingType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "ratingMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "pathTranscript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailTranscript",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "browserName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "browserVersion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "osName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "osVersion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceModel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceVendor",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deviceType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "referer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customerIp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "formData",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closeReason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customerPort",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/logo",
    "title": "Add logo",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/logo -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addLogo",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/proactive_actions",
    "title": "Creates new Proactive Actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/proactive_actions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addProactiveActions",
    "group": "Chat_Websites",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"mouseOver\"",
              "\"timeout\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "selector",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/system_avatar",
    "title": "Add system avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/system_avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addSystemAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/applications",
    "title": "Gets Website Applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/avatar",
    "title": "Get avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/avatar -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/customer_avatar",
    "title": "Get Customer Avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/customer_avatar -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getCustomerAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/fields",
    "title": "Gets Website Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/interactions",
    "title": "Gets Website Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getInteraction",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/logo",
    "title": "Get logo",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/logo -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getLogo",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/offline_messages",
    "title": "Gets Website Offline Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/offline_messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getOfflineMessages",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/proactive_actions",
    "title": "Gets Website Proactive Actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/proactive_actions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getProactiveActions",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/snippet",
    "title": "Gets Website Snippet",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/snippet -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSnippet",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "get",
    "url": "/api/chat/websites/{id}/system_avatar",
    "title": "Get System Avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/system_avatar -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSystemAvatar",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/notify",
    "title": "Notify new message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "notify",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new chat message to be sent to the system.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/chat/websites/{id}/offline",
    "title": "Offline message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id}/offline -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "offline",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "put",
    "url": "/api/chat/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatMessage/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "put",
    "url": "/api/chat/websites/{id}",
    "title": "Update an existing Website",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/websites/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateWebsites",
    "group": "Chat_Websites",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatWebsite/index.js",
    "groupTitle": "Chat_Websites"
  },
  {
    "type": "post",
    "url": "/api/cloudProviders",
    "title": "Creates a new CloudProvider",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cloudProviders -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateCloudProviders",
    "group": "CloudProviders",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"AmazonAWS\"",
              "\"Google\""
            ],
            "optional": false,
            "field": "service",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data1",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data2",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cloudProvider/index.js",
    "groupTitle": "CloudProviders"
  },
  {
    "type": "delete",
    "url": "/api/cloudProviders/{id}",
    "title": "Deletes a CloudProvider",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cloudProviders/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteCloudProviders",
    "group": "CloudProviders",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cloudProvider/index.js",
    "groupTitle": "CloudProviders"
  },
  {
    "type": "get",
    "url": "/api/cloudProviders",
    "title": "Gets a list of CloudProviders",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cloudProviders -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCloudProviders",
    "group": "CloudProviders",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cloudProviders?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cloudProviders?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cloudProviders?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cloudProviders?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cloudProviders?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cloudProvider/index.js",
    "groupTitle": "CloudProviders"
  },
  {
    "type": "get",
    "url": "/api/cloudProviders/{id}",
    "title": "Gets a single CloudProvider",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cloudProviders/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCloudProviders",
    "group": "CloudProviders",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cloudProvider/index.js",
    "groupTitle": "CloudProviders"
  },
  {
    "type": "put",
    "url": "/api/cloudProviders/{id}",
    "title": "Update an existing CloudProvider",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cloudProviders/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateCloudProviders",
    "group": "CloudProviders",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cloudProvider/index.js",
    "groupTitle": "CloudProviders"
  },
  {
    "type": "post",
    "url": "/api/cm/companies",
    "title": "Creates a new Company",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateCompanies",
    "group": "Cm_Companies",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "vat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "companyId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "website",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "street",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "postalCode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "city",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "country",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "emailDomain",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sStreet",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sPostalCode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sCity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sCountry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "delete",
    "url": "/api/cm/companies/{id}",
    "title": "Deletes a Company",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteCompanies",
    "group": "Cm_Companies",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "get",
    "url": "/api/cm/companies/describe",
    "title": "Gets table info about Companies",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeCompanies",
    "group": "Cm_Companies",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "get",
    "url": "/api/cm/companies",
    "title": "Gets a list of Companies",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCompanies",
    "group": "Cm_Companies",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/companies?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/companies?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/companies?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/companies?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/companies?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "get",
    "url": "/api/cm/companies/{id}",
    "title": "Gets a single Company",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCompanies",
    "group": "Cm_Companies",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "post",
    "url": "/api/cm/companies/{id}/contacts",
    "title": "Creates new contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies/{id}/contacts -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addContacts",
    "group": "Cm_Companies",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "firstName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "street",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "postalCode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "city",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "country",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dateOfBirth",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mobile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "url",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "facebook",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fb_data",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "twitter",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "skype",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "teams",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "viber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "line",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "wechat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "telegram",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "UserId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "scheduledat",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "get",
    "url": "/api/cm/companies/{id}/contacts",
    "title": "Gets List Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/companies/{id}/contacts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getContacts",
    "group": "Cm_Companies",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "put",
    "url": "/api/cm/companies/{id}",
    "title": "Update an existing Company",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/companies/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateCompanies",
    "group": "Cm_Companies",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCompany/index.js",
    "groupTitle": "Cm_Companies"
  },
  {
    "type": "delete",
    "url": "/api/cm/contacts/{id}",
    "title": "Deletes a Contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteContacts",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/describe",
    "title": "Gets table info about Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeContacts",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts",
    "title": "Gets a list of Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetContacts",
    "group": "Cm_Contacts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/contacts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/contacts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/contacts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/contacts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/contacts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}/finals",
    "title": "Gets contact hopper finals",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_finals -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperFinals",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}/hopper_histories",
    "title": "Gets contact hopper histories",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_histories -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperHistories",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}/hoppers",
    "title": "Gets contact hoppers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/hoppers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHoppers",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/create_many",
    "title": "Create Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/create_many -d '[{\"firstName\": \"John\", \"lastName\": \"doe\", \"...\": \"...\"}]' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "bulkCreate",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts",
    "title": "Create Contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts -d '{\"firstName\": \"John\", \"lastName\": \"doe\", \"...\": \"...\"}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "create",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}/jscripty_sessions",
    "title": "Gets contact hopper blacks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_black -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getJscriptySessions",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}/tags",
    "title": "Gets configurations tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/tags -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getTags",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/merge",
    "title": "Merge Contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/merge -d '{\"from\": 1, \"to\": 2}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "merge",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/{id}/tags",
    "title": "Sets new tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id}/tags -d '{\"ids\": [1,12]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "setTags",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "get",
    "url": "/api/cm/contacts/{id}",
    "title": "Gets a single Contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id} -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "show",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "put",
    "url": "/api/cm/contacts/{id}",
    "title": "Update a single Contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/{id} -d '{\"firstName\": \"John\", \"lastName\": \"Doe\"}' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "Cm_Contacts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_Contacts"
  },
  {
    "type": "delete",
    "url": "/api/cm/custom_fields/{id}",
    "title": "Deletes a Custom Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/custom_fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteCustom_Fields",
    "group": "Cm_Custom_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCustomField/index.js",
    "groupTitle": "Cm_Custom_Fields"
  },
  {
    "type": "get",
    "url": "/api/cm/custom_fields",
    "title": "Gets a list of Custom Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/custom_fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCustom_Fields",
    "group": "Cm_Custom_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/custom_fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/custom_fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/custom_fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/custom_fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/custom_fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmCustomField/index.js",
    "groupTitle": "Cm_Custom_Fields"
  },
  {
    "type": "get",
    "url": "/api/cm/custom_fields/{id}",
    "title": "Gets a single Custom Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/custom_fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCustom_Fields",
    "group": "Cm_Custom_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCustomField/index.js",
    "groupTitle": "Cm_Custom_Fields"
  },
  {
    "type": "put",
    "url": "/api/cm/custom_fields/{id}",
    "title": "Update an existing Custom Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/custom_fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateCustom_Fields",
    "group": "Cm_Custom_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCustomField/index.js",
    "groupTitle": "Cm_Custom_Fields"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper",
    "title": "Creates a new Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateHopper",
    "group": "Cm_Hopper",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "active",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "scheduledat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countbusyretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countcongestionretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countnoanswerretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "callback",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackuniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "recallme",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ContactId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ListId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "UserId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "VoiceQueueId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "CampaignId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countnosuchnumberretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countdropretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countabandonedretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countmachineretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countagentrejectretry",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper/describe",
    "title": "Gets table info about Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeHopper",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper",
    "title": "Gets a list of Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetHopper",
    "group": "Cm_Hopper",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper/{id}",
    "title": "Gets a single Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowHopper",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "delete",
    "url": "/api/cm/hopper_black/{id}",
    "title": "Deletes a Hopper Black",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_black/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteHopper_Black",
    "group": "Cm_Hopper_Black",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperBlack/index.js",
    "groupTitle": "Cm_Hopper_Black"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_black/describe",
    "title": "Gets table info about Hopper Black",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_black/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeHopper_Black",
    "group": "Cm_Hopper_Black",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperBlack/index.js",
    "groupTitle": "Cm_Hopper_Black"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_black",
    "title": "Gets a list of Hopper Black",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_black -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetHopper_Black",
    "group": "Cm_Hopper_Black",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_black?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_black?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_black?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_black?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_black?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperBlack/index.js",
    "groupTitle": "Cm_Hopper_Black"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_black/{id}",
    "title": "Gets a single Hopper Black",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_black/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowHopper_Black",
    "group": "Cm_Hopper_Black",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperBlack/index.js",
    "groupTitle": "Cm_Hopper_Black"
  },
  {
    "type": "put",
    "url": "/api/cm/hopper_black/{id}",
    "title": "Update an existing Hopper Black",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_black/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateHopper_Black",
    "group": "Cm_Hopper_Black",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperBlack/index.js",
    "groupTitle": "Cm_Hopper_Black"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_final/describe",
    "title": "Gets table info about HopperFinal",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_final/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_final",
    "title": "Gets a list of HopperFinal",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_final -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_final?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_final?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_final?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_final?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_final?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_final/{id}",
    "title": "Gets a single HopperFinal",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_final/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper_final/checkContactHopper",
    "title": "Check if contact is in hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/checkContactHopper -d '{\"VoiceQueueId\": \"VoiceQueueId\", \"CampaignId\": \"CampaignId\", \"ContactId\": \"ContactId\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "_checkContactHopper",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_final/campaign/countAttributes/{id}",
    "title": "Return number contacts for attributes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/campaign/countAttributes/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "countContactsIvrCampaignHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_final/voice/queue/countAttributes/{id}",
    "title": "Return number contacts for attributes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/voice/queue/countAttributes/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "countContactsQueueCampaignHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper_final/campaign/{id}",
    "title": "Move contacts in hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/campaign/moveContacts/{id} -d '{\"state\": \"state\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "moveContactsIvrCampaignHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper_final/voice/queue/{id}",
    "title": "Move contacts in hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/voice/queue/moveContacts/{id} -d '{\"state\": \"state\"}' -H 'Content-Type: application/json' -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "moveContactsQueueCampaignHopperFinal",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "put",
    "url": "/api/cm/hopper_final/{id}",
    "title": "Update a single hopper final",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_final/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "Cm_Hopper_Final",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperFinal/index.js",
    "groupTitle": "Cm_Hopper_Final"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper_history",
    "title": "Creates a new HopperHistory",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_history -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateHopperHistory",
    "group": "Cm_Hopper_History",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "state",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "statedesc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "scheduledat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countbusyretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countcongestionretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countnoanswerretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countglobal",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "originatecalleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "originatecalleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "starttime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "responsetime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "answertime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "droptime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "endtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "ringtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "holdtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "talktime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "followuptime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dropreason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "campaign",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "campaigntype",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "amd",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "callback",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackuniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "recallme",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "editedat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "edited",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countnosuchnumberretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countdropretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countabandonedretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countmachineretry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "countagentrejectretry",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperHistory/index.js",
    "groupTitle": "Cm_Hopper_History"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_history/describe",
    "title": "Gets table info about HopperHistory",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_history/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeHopperHistory",
    "group": "Cm_Hopper_History",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperHistory/index.js",
    "groupTitle": "Cm_Hopper_History"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_history",
    "title": "Gets a list of HopperHistory",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_history -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetHopperHistory",
    "group": "Cm_Hopper_History",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_history?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_history?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_history?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_history?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_history?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperHistory/index.js",
    "groupTitle": "Cm_Hopper_History"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper_history/{id}",
    "title": "Gets a single HopperHistory",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper_history/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowHopperHistory",
    "group": "Cm_Hopper_History",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperHistory/index.js",
    "groupTitle": "Cm_Hopper_History"
  },
  {
    "type": "put",
    "url": "/api/cm/hopper_history/{id}",
    "title": "Update a single hopper history",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/hopper_history/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "Cm_Hopper_History",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopperHistory/index.js",
    "groupTitle": "Cm_Hopper_History"
  },
  {
    "type": "delete",
    "url": "/api/cm/hopper/{id}",
    "title": "Delete Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroy",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "get",
    "url": "/api/cm/hopper/opencontacts",
    "title": "Gets Open Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/opencontacts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getOpenContacts",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "post",
    "url": "/api/cm/hopper/preview",
    "title": "Gets Preview Dialer Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/preview -d '{\"hopperIds\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getPreview",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "put",
    "url": "/api/cm/hopper/{id}",
    "title": "Update an existing Hopper",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/hopper/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateHopper",
    "group": "Cm_Hopper",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmHopper/index.js",
    "groupTitle": "Cm_Hopper"
  },
  {
    "type": "post",
    "url": "/api/cm/lists",
    "title": "Creates a new List",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateLists",
    "group": "Cm_Lists",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialPrefix",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "delete",
    "url": "/api/cm/lists/{id}",
    "title": "Deletes a List",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteLists",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/describe",
    "title": "Gets table info about Lists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeLists",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}/users",
    "title": "Gets agents from list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists",
    "title": "Gets a list of Lists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetLists",
    "group": "Cm_Lists",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/lists?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/lists?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/lists?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/lists?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/lists?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "delete",
    "url": "/api/cm/lists/{id}/users",
    "title": "Removes agents from a list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "delete",
    "url": "/api/cm/lists/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}",
    "title": "Gets a single List",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowLists",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "post",
    "url": "/api/cm/lists/{id}/users",
    "title": "Adds agents to a list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAgents",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "post",
    "url": "/api/cm/lists/{id}/contacts",
    "title": "Creates new contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/contacts -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addContacts",
    "group": "Cm_Lists",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "firstName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "street",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "postalCode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "city",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "country",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dateOfBirth",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mobile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "url",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "facebook",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fb_data",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "twitter",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "skype",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "teams",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "viber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "line",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "wechat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "telegram",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "UserId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "scheduledat",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "post",
    "url": "/api/cm/lists/{id}/fields",
    "title": "Creates a new custom field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/fields -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addCustomField",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "post",
    "url": "/api/cm/lists/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Cm_Lists",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}/contacts",
    "title": "Gets List Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/contacts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getContacts",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}/fields",
    "title": "Gets Custom Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getCustomFields",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}/dispositions",
    "title": "Gets list dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "get",
    "url": "/api/cm/lists/{id}/contacts/csv",
    "title": "Gets CSV List Contacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id}/contacts/csv -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "grunt",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "put",
    "url": "/api/cm/lists/{id}",
    "title": "Update an existing List",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/lists/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateLists",
    "group": "Cm_Lists",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmList/index.js",
    "groupTitle": "Cm_Lists"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/upload/:id",
    "title": "Import new contacts by csv",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/upload/:id -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "import",
    "group": "Cm_contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/upload",
    "title": "Upload csv",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/upload -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "upload",
    "group": "Cm_contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_contacts"
  },
  {
    "type": "post",
    "url": "/api/cm/contacts/csv",
    "title": "Create new contacts by csv",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/contacts/csv -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "uploadCsv",
    "group": "Cm_contacts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmContact/index.js",
    "groupTitle": "Cm_contacts"
  },
  {
    "type": "delete",
    "url": "/api/conditions/{id}",
    "title": "Deletes a Condition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/conditions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteConditions",
    "group": "Conditions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/condition/index.js",
    "groupTitle": "Conditions"
  },
  {
    "type": "put",
    "url": "/api/conditions/{id}",
    "title": "Update an existing Condition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/conditions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateConditions",
    "group": "Conditions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/condition/index.js",
    "groupTitle": "Conditions"
  },
  {
    "type": "post",
    "url": "/api/cm/custom_field",
    "title": "Create a new custom field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cm/custom_field  -d '{\"name\": \"mycf\", \"type\": \"text\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateCustomField",
    "group": "Custom_Fields",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cmCustomField/index.js",
    "groupTitle": "Custom_Fields"
  },
  {
    "type": "post",
    "url": "/api/dashboards/items",
    "title": "Create dasboard item",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/items \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Dashboard_Items",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboardItem/index.js",
    "groupTitle": "Dashboard_Items"
  },
  {
    "type": "delete",
    "url": "/api/dashboards/items/{id}",
    "title": "Deletes a Dashboard Item",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDashboard_Items",
    "group": "Dashboard_Items",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboardItem/index.js",
    "groupTitle": "Dashboard_Items"
  },
  {
    "type": "get",
    "url": "/api/dashboards/items/{id}",
    "title": "Gets a single Dashboard Item",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDashboard_Items",
    "group": "Dashboard_Items",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboardItem/index.js",
    "groupTitle": "Dashboard_Items"
  },
  {
    "type": "put",
    "url": "/api/dashboards/items/{id}",
    "title": "Update an existing item",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Update",
    "group": "Dashboard_Items",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboardItem/index.js",
    "groupTitle": "Dashboard_Items"
  },
  {
    "type": "post",
    "url": "/api/dashboards/clone",
    "title": "Clone an existing Dashboard",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneDashboards",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "post",
    "url": "/api/dashboards",
    "title": "Creates a new Dashboard",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDashboards",
    "group": "Dashboards",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "delete",
    "url": "/api/dashboards/{id}",
    "title": "Deletes a Dashboard",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDashboards",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "get",
    "url": "/api/dashboards",
    "title": "Gets a list of Dashboards",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDashboards",
    "group": "Dashboards",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/dashboards?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/dashboards?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/dashboards?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/dashboards?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/dashboards?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "get",
    "url": "/api/dashboards/{id}",
    "title": "Gets a single Dashboard",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDashboards",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "post",
    "url": "/api/dashboards/{id}/items",
    "title": "Creates new item",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/{id}/items -d '{\"type\": \"counter\", \"...\": \"...\"}]' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addItem",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "get",
    "url": "/api/dashboards/{id}/items",
    "title": "Gets items",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/{id}/items -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getItems",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "put",
    "url": "/api/dashboards/{id}",
    "title": "Update an existing Dashboard",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dashboards/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDashboards",
    "group": "Dashboards",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/dashboard/index.js",
    "groupTitle": "Dashboards"
  },
  {
    "type": "post",
    "url": "/api/integrations/desk/accounts",
    "title": "Creates a new Desk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDesk_Accounts",
    "group": "Desk_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"basic\""
            ],
            "optional": true,
            "field": "authType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "consumerKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "consumerSecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tokenSecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"integrationTab\"",
              "\"newTab\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/desk/accounts/{id}",
    "title": "Deletes a Desk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDesk_Accounts",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/accounts",
    "title": "Gets a list of Desk Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDesk_Accounts",
    "group": "Desk_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/accounts/{id}",
    "title": "Gets a single Desk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDesk_Accounts",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/desk/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/desk/accounts/{id}",
    "title": "Update an existing Desk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDesk_Accounts",
    "group": "Desk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskAccount/index.js",
    "groupTitle": "Desk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/desk/configurations",
    "title": "Creates a new Desk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDesk_Configurations",
    "group": "Desk_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/desk/configurations/{id}",
    "title": "Deletes a Desk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDesk_Configurations",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations",
    "title": "Gets a list of Desk Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDesk_Configurations",
    "group": "Desk_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations/{id}",
    "title": "Gets a single Desk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDesk_Configurations",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/configurations/{id}/tags",
    "title": "Gets configurations tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/tags -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getTags",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/desk/configurations/{id}/tags",
    "title": "Sets new tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "setTags",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/desk/configurations/{id}",
    "title": "Update an existing Desk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDesk_Configurations",
    "group": "Desk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskConfiguration/index.js",
    "groupTitle": "Desk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/desk/fields",
    "title": "Creates a new Desk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDesk_Fields",
    "group": "Desk_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskField/index.js",
    "groupTitle": "Desk_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/desk/fields/{id}",
    "title": "Deletes a Desk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDesk_Fields",
    "group": "Desk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskField/index.js",
    "groupTitle": "Desk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/fields",
    "title": "Gets a list of Desk Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDesk_Fields",
    "group": "Desk_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskField/index.js",
    "groupTitle": "Desk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/desk/fields/{id}",
    "title": "Gets a single Desk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDesk_Fields",
    "group": "Desk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskField/index.js",
    "groupTitle": "Desk_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/desk/fields/{id}",
    "title": "Update an existing Desk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDesk_Fields",
    "group": "Desk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDeskField/index.js",
    "groupTitle": "Desk_Fields"
  },
  {
    "type": "post",
    "url": "/api/dispositions",
    "title": "Creates a new Disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDispositions",
    "group": "Dispositions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/disposition/index.js",
    "groupTitle": "Dispositions"
  },
  {
    "type": "delete",
    "url": "/api/dispositions/{id}",
    "title": "Deletes a Disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dispositions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDispositions",
    "group": "Dispositions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/disposition/index.js",
    "groupTitle": "Dispositions"
  },
  {
    "type": "get",
    "url": "/api/dispositions",
    "title": "Gets a list of Dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dispositions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDispositions",
    "group": "Dispositions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/dispositions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/dispositions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/dispositions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/dispositions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/dispositions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/disposition/index.js",
    "groupTitle": "Dispositions"
  },
  {
    "type": "get",
    "url": "/api/dispositions/{id}",
    "title": "Gets a single Disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dispositions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDispositions",
    "group": "Dispositions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/disposition/index.js",
    "groupTitle": "Dispositions"
  },
  {
    "type": "put",
    "url": "/api/dispositions/{id}",
    "title": "Update an existing Disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDispositions",
    "group": "Dispositions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/disposition/index.js",
    "groupTitle": "Dispositions"
  },
  {
    "type": "post",
    "url": "/api/integrations/dynamics365/accounts",
    "title": "Creates a new Dynamics365 Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDynamics365_Accounts",
    "group": "Dynamics365_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tenantId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientSecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/dynamics365/accounts/{id}",
    "title": "Deletes a Dynamics365 Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDynamics365_Accounts",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/accounts",
    "title": "Gets a list of Dynamics365 Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDynamics365_Accounts",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/accounts/{id}",
    "title": "Gets a single Dynamics365 Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDynamics365_Accounts",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/dynamics365/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/dynamics365/accounts/{id}",
    "title": "Update an existing Dynamics365 Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDynamics365_Accounts",
    "group": "Dynamics365_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Account/index.js",
    "groupTitle": "Dynamics365_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/dynamics365/configurations",
    "title": "Creates a new Dynamics365 Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDynamics365_Configurations",
    "group": "Dynamics365_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"incident\"",
              "\"phonecall\""
            ],
            "optional": true,
            "field": "ticketType",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/dynamics365/configurations/{id}",
    "title": "Deletes a Dynamics365 Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDynamics365_Configurations",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/configurations",
    "title": "Gets a list of Dynamics365 Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDynamics365_Configurations",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/configurations/{id}",
    "title": "Gets a single Dynamics365 Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDynamics365_Configurations",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/dynamics365/configurations/{id}",
    "title": "Update an existing Dynamics365 Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDynamics365_Configurations",
    "group": "Dynamics365_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Configuration/index.js",
    "groupTitle": "Dynamics365_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/dynamics365/fields",
    "title": "Creates a new Dynamics365 Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateDynamics365_Fields",
    "group": "Dynamics365_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Field/index.js",
    "groupTitle": "Dynamics365_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/dynamics365/fields/{id}",
    "title": "Deletes a Dynamics365 Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteDynamics365_Fields",
    "group": "Dynamics365_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Field/index.js",
    "groupTitle": "Dynamics365_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/fields",
    "title": "Gets a list of Dynamics365 Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDynamics365_Fields",
    "group": "Dynamics365_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Field/index.js",
    "groupTitle": "Dynamics365_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/dynamics365/fields/{id}",
    "title": "Gets a single Dynamics365 Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDynamics365_Fields",
    "group": "Dynamics365_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Field/index.js",
    "groupTitle": "Dynamics365_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/dynamics365/fields/{id}",
    "title": "Update an existing Dynamics365 Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateDynamics365_Fields",
    "group": "Dynamics365_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intDynamics365Field/index.js",
    "groupTitle": "Dynamics365_Fields"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/users",
    "title": "Add agents to a fax account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts",
    "title": "Creates a new Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAccounts",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "ecm",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "headerinfo",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "localstationid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"2400\"",
              "\"4800\"",
              "\"7200\"",
              "\"9600\"",
              "\"12000\"",
              "\"14400\""
            ],
            "optional": true,
            "field": "minrate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"2400\"",
              "\"4800\"",
              "\"7200\"",
              "\"9600\"",
              "\"12000\"",
              "\"14400\""
            ],
            "optional": true,
            "field": "maxrate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "modem",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "gateway",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "faxdetect",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "t38timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"SIP\"",
              "\"IAX\"",
              "\"DADHI\"",
              "\"KHOMP\""
            ],
            "optional": true,
            "field": "tech",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notificationTemplate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationSound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationShake",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "waitForTheAssignedAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "queueTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "queueTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "agentTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/fax/accounts/{id}",
    "title": "Deletes a Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAccounts",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/describe",
    "title": "Gets table info about Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAccounts",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts",
    "title": "Gets a list of Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAccounts",
    "group": "Fax_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/users",
    "title": "Gets agents from fax account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/fax/accounts/{id}/users",
    "title": "Removes agents from a fax account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/fax/accounts/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/fax/accounts/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}",
    "title": "Gets a single Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAccounts",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/addaccountapplications",
    "title": "Creates new account and applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/interactions",
    "title": "Creates new interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/interactions -d '[{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addInteraction",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/applications",
    "title": "Gets account pplications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/interactions",
    "title": "Gets account interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getInteraction",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "get",
    "url": "/api/fax/accounts/{id}/messages",
    "title": "Gets account messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/{id}/send",
    "title": "Send new fax",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id}/send -d '{from: '\"John Doe\" <123456>'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "sendFax",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "put",
    "url": "/api/fax/accounts/{id}",
    "title": "Update an existing Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAccounts",
    "group": "Fax_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/accounts/updateaccountapplications",
    "title": "Update account and applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/accounts/updateaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Fax_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxAccount/index.js",
    "groupTitle": "Fax_Accounts"
  },
  {
    "type": "post",
    "url": "/api/fax/applications",
    "title": "Creates a new Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateApplications",
    "group": "Fax_Applications",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxApplication/index.js",
    "groupTitle": "Fax_Applications"
  },
  {
    "type": "delete",
    "url": "/api/fax/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Fax_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxApplication/index.js",
    "groupTitle": "Fax_Applications"
  },
  {
    "type": "get",
    "url": "/api/fax/applications",
    "title": "Gets a list of Applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/applications -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetApplications",
    "group": "Fax_Applications",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxApplication/index.js",
    "groupTitle": "Fax_Applications"
  },
  {
    "type": "get",
    "url": "/api/fax/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Fax_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxApplication/index.js",
    "groupTitle": "Fax_Applications"
  },
  {
    "type": "put",
    "url": "/api/fax/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Fax_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxApplication/index.js",
    "groupTitle": "Fax_Applications"
  },
  {
    "type": "post",
    "url": "/api/fax/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "post",
    "url": "/api/fax/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Fax_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fax",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/fax/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Fax_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/fax/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "post",
    "url": "/api/fax/interactions/{id}/messages",
    "title": "Creates new messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Fax_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "failMessage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/interactions/{id}/download",
    "title": "Get interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "put",
    "url": "/api/fax/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Fax_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxInteraction/index.js",
    "groupTitle": "Fax_Interactions"
  },
  {
    "type": "get",
    "url": "/api/fax/messages/{id}/download",
    "title": "Get message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Fax_Message",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Message"
  },
  {
    "type": "delete",
    "url": "/api/fax/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "get",
    "url": "/api/fax/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "get",
    "url": "/api/fax/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Fax_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "get",
    "url": "/api/fax/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "put",
    "url": "/api/fax/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "put",
    "url": "/api/fax/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "post",
    "url": "/api/fax/messages",
    "title": "Create message and send Fax",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "put",
    "url": "/api/fax/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Fax_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxMessage/index.js",
    "groupTitle": "Fax_Messages"
  },
  {
    "type": "post",
    "url": "/api/fax/reports/queue",
    "title": "Creates a new Fax Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/fax/reports/queue/{id}",
    "title": "Deletes a Fax Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/queue/describe",
    "title": "Gets table info about Fax Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/queue",
    "title": "Gets a list of Fax Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/queue/{id}",
    "title": "Gets a single Fax Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/fax/reports/queue/{id}",
    "title": "Update an existing Fax Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFax_Queue_Reports",
    "group": "Fax_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueueReport/index.js",
    "groupTitle": "Fax_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/fax/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "post",
    "url": "/api/fax/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "post",
    "url": "/api/fax/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Fax_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": false,
            "field": "strategy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "lastAgent",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "delete",
    "url": "/api/fax/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Fax_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "delete",
    "url": "/api/fax/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "get",
    "url": "/api/fax/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "put",
    "url": "/api/fax/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Fax_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Fax_Queues"
  },
  {
    "type": "post",
    "url": "/api/fax/reports/transfer",
    "title": "Creates a new Fax Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/fax/reports/transfer/{id}",
    "title": "Deletes a Fax Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/transfer/describe",
    "title": "Gets table info about Fax Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/transfer",
    "title": "Gets a list of Fax Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/fax/reports/transfer/{id}",
    "title": "Gets a single Fax Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/fax/reports/transfer/{id}",
    "title": "Update an existing Fax Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFax_Transfer_Reports",
    "group": "Fax_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxTransferReport/index.js",
    "groupTitle": "Fax_Transfer_Reports"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshdesk/accounts",
    "title": "Creates a new Freshdesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshdesk_Accounts",
    "group": "Freshdesk_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "apiKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshdesk/accounts/{id}",
    "title": "Deletes a Freshdesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshdesk_Accounts",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/accounts",
    "title": "Gets a list of Freshdesk Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshdesk_Accounts",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/accounts/{id}",
    "title": "Gets a single Freshdesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshdesk_Accounts",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshdesk/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshdesk/accounts/{id}",
    "title": "Update an existing Freshdesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshdesk_Accounts",
    "group": "Freshdesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskAccount/index.js",
    "groupTitle": "Freshdesk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshdesk/configurations",
    "title": "Creates a new Freshdesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshdesk_Configurations",
    "group": "Freshdesk_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshdesk/configurations/{id}",
    "title": "Deletes a Freshdesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshdesk_Configurations",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations",
    "title": "Gets a list of Freshdesk Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshdesk_Configurations",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations/{id}",
    "title": "Gets a single Freshdesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshdesk_Configurations",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/configurations/{id}/tags",
    "title": "Gets configurations tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/tags -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getTags",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshdesk/configurations/{id}/tags",
    "title": "Sets new tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "setTags",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshdesk/configurations/{id}",
    "title": "Update an existing Freshdesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshdesk_Configurations",
    "group": "Freshdesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskConfiguration/index.js",
    "groupTitle": "Freshdesk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshdesk/fields",
    "title": "Creates a new Freshdesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshdesk_Fields",
    "group": "Freshdesk_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskField/index.js",
    "groupTitle": "Freshdesk_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshdesk/fields/{id}",
    "title": "Deletes a Freshdesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshdesk_Fields",
    "group": "Freshdesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskField/index.js",
    "groupTitle": "Freshdesk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/fields",
    "title": "Gets a list of Freshdesk Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshdesk_Fields",
    "group": "Freshdesk_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskField/index.js",
    "groupTitle": "Freshdesk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshdesk/fields/{id}",
    "title": "Gets a single Freshdesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshdesk_Fields",
    "group": "Freshdesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskField/index.js",
    "groupTitle": "Freshdesk_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshdesk/fields/{id}",
    "title": "Update an existing Freshdesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshdesk_Fields",
    "group": "Freshdesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshdeskField/index.js",
    "groupTitle": "Freshdesk_Fields"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshsales/accounts",
    "title": "Creates a new Freshsales Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshsales_Accounts",
    "group": "Freshsales_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "apiKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshsales/accounts/{id}",
    "title": "Deletes a Freshsales Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshsales_Accounts",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/accounts",
    "title": "Gets a list of Freshsales Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshsales_Accounts",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/accounts/{id}",
    "title": "Gets a single Freshsales Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshsales_Accounts",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshsales/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshsales/accounts/{id}",
    "title": "Update an existing Freshsales Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshsales_Accounts",
    "group": "Freshsales_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesAccount/index.js",
    "groupTitle": "Freshsales_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshsales/configurations",
    "title": "Creates a new Freshsales Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshsales_Configurations",
    "group": "Freshsales_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshsales/configurations/{id}",
    "title": "Deletes a Freshsales Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshsales_Configurations",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/configurations",
    "title": "Gets a list of Freshsales Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshsales_Configurations",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/configurations/{id}",
    "title": "Gets a single Freshsales Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshsales_Configurations",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshsales/configurations/{id}",
    "title": "Update an existing Freshsales Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshsales_Configurations",
    "group": "Freshsales_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesConfiguration/index.js",
    "groupTitle": "Freshsales_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/freshsales/fields",
    "title": "Creates a new Freshsales Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateFreshsales_Fields",
    "group": "Freshsales_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesField/index.js",
    "groupTitle": "Freshsales_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/freshsales/fields/{id}",
    "title": "Deletes a Freshsales Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteFreshsales_Fields",
    "group": "Freshsales_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesField/index.js",
    "groupTitle": "Freshsales_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/fields",
    "title": "Gets a list of Freshsales Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetFreshsales_Fields",
    "group": "Freshsales_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesField/index.js",
    "groupTitle": "Freshsales_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/freshsales/fields/{id}",
    "title": "Gets a single Freshsales Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowFreshsales_Fields",
    "group": "Freshsales_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesField/index.js",
    "groupTitle": "Freshsales_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/freshsales/fields/{id}",
    "title": "Update an existing Freshsales Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateFreshsales_Fields",
    "group": "Freshsales_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intFreshsalesField/index.js",
    "groupTitle": "Freshsales_Fields"
  },
  {
    "type": "post",
    "url": "/api/campaigns/{id}/blacklists",
    "title": "Add blacklists to an IVR campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/blacklists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddBlackLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "post",
    "url": "/api/campaigns/{id}/lists",
    "title": "Add lists to an IVR campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/lists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "post",
    "url": "/api/campaigns/clone",
    "title": "Clone an existing IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneIVR_Campaigns",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "post",
    "url": "/api/campaigns",
    "title": "Creates a new IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateIVR_Campaigns",
    "group": "IVR_Campaigns",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"ivr\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "active",
            "description": "<p>Active/Disactive Campaign</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "limitCalls",
            "description": "<p>Max 200 calls.</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialOriginateCallerIdName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialOriginateCallerIdNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialOriginateTimeout",
            "description": "<p>Originate Timeout Seconds (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCongestionMaxRetry",
            "description": "<p>#Congestion Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCongestionRetryFrequency",
            "description": "<p>Congestion Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialBusyMaxRetry",
            "description": "<p>#Busy Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialBusyRetryFrequency",
            "description": "<p>Busy Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoAnswerMaxRetry",
            "description": "<p>#NoAnswer Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoAnswerRetryFrequency",
            "description": "<p>NoAnswer Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialGlobalMaxRetry",
            "description": "<p>#Global Max Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialTimezone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialGlobalInterval",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"always\"",
              "\"never\"",
              "\"onlyIfOpen\""
            ],
            "optional": true,
            "field": "dialCheckDuplicateType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialAMDActive",
            "description": "<p>Active/Disactive AMD</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDInitialSilence",
            "description": "<p>#AMD Initial Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDGreeting",
            "description": "<p>#AMD Greeting</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDAfterGreetingSilence",
            "description": "<p>#AMD After Greeting Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDTotalAnalysisTime",
            "description": "<p>#AMD Total Analysis Time</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMinWordLength",
            "description": "<p>#AMD Min Word Length</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDBetweenWordsSilence",
            "description": "<p>#AMD Between Words Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMaximumNumberOfWords",
            "description": "<p>#AMD Maximum Number Of Words</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDSilenceThreshold",
            "description": "<p>#AMD Silence Threshold (min:0, max:32767)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMaximumWordLength",
            "description": "<p>#AMD Maximum Word Length</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"DESC\"",
              "\"ASC\""
            ],
            "optional": true,
            "field": "dialOrderByScheduledAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialPrefix",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialRandomLastDigitCallerIdNumber",
            "description": "<p>Random Last Digit (min:1, max:15)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCutDigit",
            "description": "<p>Cut Digit (min:1, max:15)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoSuchNumberMaxRetry",
            "description": "<p>#NoSuchNumber Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoSuchNumberRetryFrequency",
            "description": "<p>NoSuchNumber Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialDropMaxRetry",
            "description": "<p>#Drop Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialDropRetryFrequency",
            "description": "<p>Drop Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAbandonedMaxRetry",
            "description": "<p>#Abandoned Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAbandonedRetryFrequency",
            "description": "<p>Abandoned Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialMachineMaxRetry",
            "description": "<p>#Machine Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialMachineRetryFrequency",
            "description": "<p>Machine Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAgentRejectMaxRetry",
            "description": "<p>#AgentReject Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAgentRejectRetryFrequency",
            "description": "<p>AgentReject Retry Frequency Minutes (min:1, max:99999)</p>"
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "delete",
    "url": "/api/campaigns/{id}",
    "title": "Deletes a IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteIVR_Campaigns",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/blacklists",
    "title": "Get IVR campaign blacklists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/blacklists -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetBlackLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/finals",
    "title": "Gets IVR campaign hopper finals",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/hopper_finals -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperFinals",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/hopper_histories",
    "title": "Gets IVR campaign hopper histories",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/hopper_histories -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperHistories",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/hoppers",
    "title": "Gets IVR campaign hoppers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/hoppers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHoppers",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns",
    "title": "Gets a list of IVR Campaigns",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetIVR_Campaigns",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/campaigns?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/campaigns?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/campaigns?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/campaigns?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/campaigns?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/lists",
    "title": "Get IVR campaign lists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/lists -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "delete",
    "url": "/api/campaigns/{id}/blacklists",
    "title": "Remove blacklists from an IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/blacklists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveBlackLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "delete",
    "url": "/api/campaigns/{id}/lists",
    "title": "Remove lists from an IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/lists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveLists",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}",
    "title": "Gets a single IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowIVR_Campaigns",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "get",
    "url": "/api/campaigns/{id}/blacks",
    "title": "Gets IVR campaign hopper blacks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id}/hopper_black -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getHopperBlacks",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "put",
    "url": "/api/campaigns/{id}",
    "title": "Update an existing IVR Campaign",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/campaigns/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateIVR_Campaigns",
    "group": "IVR_Campaigns",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/campaign/index.js",
    "groupTitle": "IVR_Campaigns"
  },
  {
    "type": "post",
    "url": "/api/integrations/reports",
    "title": "Creates a new Integration Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateIntegration_Reports",
    "group": "Integration_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "integration",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "eventChannel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitStatus",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "ticketId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "integrationId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contacts",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interface",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentcalledAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentconnectAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "holdtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentcomplete",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentcompleteAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "talktime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentacw",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "acwtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentringnoanswer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentringnoanswerAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentdump",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "agentdumpAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastevent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "channelstate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channelstatedesc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "connectedlinenum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "connectedlinename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "language",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destchannel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "destchannelstate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destchannelstatedesc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destcalleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destcalleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destconnectedlinenum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destconnectedlinename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destlanguage",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destaccountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destcontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destpriority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "destuniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "inReplyTo",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "subject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "to",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "cc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "attachment",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "html",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "text",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"SENT\"",
              "\"SENDING\"",
              "\"RECEIVED\"",
              "\"FAILED\""
            ],
            "optional": true,
            "field": "status",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "url",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "projectId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "delete",
    "url": "/api/integrations/reports/{id}",
    "title": "Deletes a Integration Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteIntegration_Reports",
    "group": "Integration_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "get",
    "url": "/api/integrations/reports/describe",
    "title": "Gets table info about Integration Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeIntegration_Reports",
    "group": "Integration_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "get",
    "url": "/api/integrations/reports",
    "title": "Gets a list of Integration Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetIntegration_Reports",
    "group": "Integration_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "get",
    "url": "/api/integrations/reports/{id}",
    "title": "Gets a single Integration Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowIntegration_Reports",
    "group": "Integration_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "put",
    "url": "/api/integrations/reports/{id}",
    "title": "Update an existing Integration Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateIntegration_Reports",
    "group": "Integration_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/integrationReport/index.js",
    "groupTitle": "Integration_Reports"
  },
  {
    "type": "post",
    "url": "/api/intervals",
    "title": "Creates a new Interval",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateIntervals",
    "group": "Intervals",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "delete",
    "url": "/api/intervals/{id}",
    "title": "Deletes a Interval",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteIntervals",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "get",
    "url": "/api/intervals",
    "title": "Gets a list of Intervals",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetIntervals",
    "group": "Intervals",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/intervals?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/intervals?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/intervals?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/intervals?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/intervals?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "get",
    "url": "/api/intervals/{id}",
    "title": "Gets a single Interval",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowIntervals",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "post",
    "url": "/api/intervals/{id}/sub_intervals",
    "title": "Creates a new sub interval",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -d '{\"interval\": \"00:00-08:30,mon-fri,*,*\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addInterval",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "post",
    "url": "/api/intervals/{id}/sub_intervals/create_many",
    "title": "Create new sub intervals set",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addIntervals",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "get",
    "url": "/api/intervals/{id}/sub_intervals",
    "title": "Get sub intervals set",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getIntervals",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "put",
    "url": "/api/intervals/{id}",
    "title": "Update an existing Interval",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/intervals/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateIntervals",
    "group": "Intervals",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/interval/index.js",
    "groupTitle": "Intervals"
  },
  {
    "type": "post",
    "url": "/api/jira",
    "title": "Creates a new issue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jira -d '{\"key\": \"Bug\", \"description\": \"I can't do it!\"}' \\\n -H \"Content-Type: application/json\" -X POST -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "Creates_Issue",
    "group": "Issue",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"Bug\""
            ],
            "optional": true,
            "field": "issuetype",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "summary",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jira/index.js",
    "groupTitle": "Issue"
  },
  {
    "type": "post",
    "url": "/api/jscripty/answers/reports",
    "title": "Creates a new Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateReports",
    "group": "JscriptyAnswerReport",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "question",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "answer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "projectname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "questionId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "delete",
    "url": "/api/jscripty/answers/reports/{id}",
    "title": "Deletes a Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteReports",
    "group": "JscriptyAnswerReport",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/answers/reports/describe",
    "title": "Gets table info about Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeReports",
    "group": "JscriptyAnswerReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/answers/reports",
    "title": "Gets a list of Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetReports",
    "group": "JscriptyAnswerReport",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/answers/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/answers/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/answers/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/answers/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/answers/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/answers/reports/{id}",
    "title": "Gets a single Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowReports",
    "group": "JscriptyAnswerReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "put",
    "url": "/api/jscripty/answers/reports/{id}",
    "title": "Update an existing Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateReports",
    "group": "JscriptyAnswerReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyAnswerReport/index.js",
    "groupTitle": "JscriptyAnswerReport"
  },
  {
    "type": "post",
    "url": "/api/jscripty/questions/reports",
    "title": "Creates a new Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateReports",
    "group": "JscriptyQuestionReport",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "question",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "answer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "projectname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "questionId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "delete",
    "url": "/api/jscripty/questions/reports/{id}",
    "title": "Deletes a Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteReports",
    "group": "JscriptyQuestionReport",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/questions/reports/describe",
    "title": "Gets table info about Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeReports",
    "group": "JscriptyQuestionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/questions/reports",
    "title": "Gets a list of Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetReports",
    "group": "JscriptyQuestionReport",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/questions/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/questions/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/questions/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/questions/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/questions/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/questions/reports/{id}",
    "title": "Gets a single Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowReports",
    "group": "JscriptyQuestionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "put",
    "url": "/api/jscripty/questions/reports/{id}",
    "title": "Update an existing Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateReports",
    "group": "JscriptyQuestionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyQuestionReport/index.js",
    "groupTitle": "JscriptyQuestionReport"
  },
  {
    "type": "post",
    "url": "/api/jscripty/sessions/reports",
    "title": "Creates a new Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateReports",
    "group": "JscriptySessionReport",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "starttime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "endtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "projectname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "completed",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "delete",
    "url": "/api/jscripty/sessions/reports/{id}",
    "title": "Deletes a Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteReports",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/sessions/reports/describe",
    "title": "Gets table info about Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeReports",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/sessions/reports",
    "title": "Gets a list of Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetReports",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/sessions/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/sessions/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/sessions/reports/{id}",
    "title": "Gets a single Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowReports",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "get",
    "url": "/api/jscripty/sessions/reports/{id}/questions",
    "title": "Gets Jscripty Session questions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id}/questions -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getQuestions",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "put",
    "url": "/api/jscripty/sessions/reports/{id}",
    "title": "Update an existing Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateReports",
    "group": "JscriptySessionReport",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptySessionReport/index.js",
    "groupTitle": "JscriptySessionReport"
  },
  {
    "type": "post",
    "url": "/api/jscripty/projects/clone",
    "title": "Clone an existing Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneProjects",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "post",
    "url": "/api/jscripty/projects",
    "title": "Creates a new Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateProjects",
    "group": "Jscripty_Projects",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "formData",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enableUncompleteSave",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "sendUnpauseOnSubmit",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "delete",
    "url": "/api/jscripty/projects/{id}",
    "title": "Deletes a Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteProjects",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/jscripty/projects",
    "title": "Gets a list of Projects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetProjects",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/projects?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/projects?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/projects?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/projects?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/projects?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/jscripty/projects/{id}",
    "title": "Gets a single Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowProjects",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/jscripty/projects/{id}/answers",
    "title": "Gets jscripty project answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id}/answers -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/jscripty/projects/{id}/sessions",
    "title": "Gets jscripty project sessions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id}/sessions -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getSessions",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/jscripty/projects/{id}/summary",
    "title": "Gets jscripty project summary",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id}/summary -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getSummary",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "put",
    "url": "/api/jscripty/projects/{id}",
    "title": "Update an existing Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/jscripty/projects/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateProjects",
    "group": "Jscripty_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/jscriptyProject/index.js",
    "groupTitle": "Jscripty_Projects"
  },
  {
    "type": "get",
    "url": "/api/license",
    "title": "Gets License Info",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/license -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "index",
    "group": "License",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/license/index.js",
    "groupTitle": "License"
  },
  {
    "type": "put",
    "url": "/api/license/{id}",
    "title": "Update License Info",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/license/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "License",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/license/index.js",
    "groupTitle": "License"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/users",
    "title": "Add agents to a mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/in_servers",
    "title": "Creates a new IMAP server",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddImap",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "authentication",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "user",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "port",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "tls",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "connTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "authTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "service",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/out_servers",
    "title": "Creates a new SMTP server",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSmtp",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "user",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pass",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "port",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secure",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "service",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "authentication",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}",
    "title": "Deletes a mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMailAccounts",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/describe",
    "title": "Gets table info about Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAccounts",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts",
    "title": "Gets a list of Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAccounts",
    "group": "Mail_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/users",
    "title": "Gets agents from mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/in_servers",
    "title": "Gets account IMAP server",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetImap",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/out_servers",
    "title": "Gets account SMTP server",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetSmtp",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}/users",
    "title": "Removes agents from a mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}/in_servers",
    "title": "Removes IMAP server from an account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveImmap",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/accounts/{id}/out_servers",
    "title": "Removes SMTP server from an account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSmtp",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}",
    "title": "Gets a single Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAccounts",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/interactions",
    "title": "Creates new interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/interactions -d '[{\"subject\": \"My printer is on fire!\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addInteraction",
    "group": "Mail_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "inReplyTo",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "to",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "cc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "subject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "attach",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "substatus",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "substatusAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "lastMsgBody",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "lastMsgText",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts",
    "title": "Create a mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "create",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/applications",
    "title": "Gets account applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/interactions",
    "title": "Gets account interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getInteraction",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/messages",
    "title": "Gets account messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "post",
    "url": "/api/mail/accounts/{id}/send",
    "title": "Send new mail",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/send -d '{from: '\"John Doe\" <[email-masked]>'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "sendMail",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "put",
    "url": "/api/mail/accounts/{id}",
    "title": "Update an existing Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAccounts",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "get",
    "url": "/api/mail/accounts/{id}/verify",
    "title": "Verify mail account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/accounts/{id}/verify -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "verifySmtp",
    "group": "Mail_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailAccount/index.js",
    "groupTitle": "Mail_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/mail/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Mail_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailApplication/index.js",
    "groupTitle": "Mail_Applications"
  },
  {
    "type": "get",
    "url": "/api/mail/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Mail_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailApplication/index.js",
    "groupTitle": "Mail_Applications"
  },
  {
    "type": "put",
    "url": "/api/mail/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Mail_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailApplication/index.js",
    "groupTitle": "Mail_Applications"
  },
  {
    "type": "post",
    "url": "/api/mail/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "post",
    "url": "/api/mail/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Mail_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "inReplyTo",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "to",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "cc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "subject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "attach",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "substatus",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "substatusAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "lastMsgBody",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "lastMsgText",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/mail/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "get",
    "url": "/api/mail/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "get",
    "url": "/api/mail/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Mail_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/mail/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "get",
    "url": "/api/mail/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "post",
    "url": "/api/mail/interactions/{id}/messages",
    "title": "Creates new message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id}/messages -d '[{\"to\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Mail_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "plainBody",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "to",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "cc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "bcc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "subject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sentAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "attach",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "originTo",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "originCc",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "get",
    "url": "/api/mail/interactions/{id}/download",
    "title": "Gets interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "get",
    "url": "/api/mail/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "put",
    "url": "/api/mail/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Mail_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailInteraction/index.js",
    "groupTitle": "Mail_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/mail/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "get",
    "url": "/api/mail/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "get",
    "url": "/api/mail/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Mail_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "get",
    "url": "/api/mail/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "put",
    "url": "/api/mail/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "post",
    "url": "/api/mail/messages",
    "title": "Create a message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "createMessage",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "get",
    "url": "/api/mail/messages/{id}/download",
    "title": "Gets message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "put",
    "url": "/api/mail/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "put",
    "url": "/api/mail/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Mail_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailMessage/index.js",
    "groupTitle": "Mail_Messages"
  },
  {
    "type": "post",
    "url": "/api/mail/reports/queue",
    "title": "Creates a new Mail Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/mail/reports/queue/{id}",
    "title": "Deletes a Mail Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/queue/describe",
    "title": "Gets table info about Mail Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/queue",
    "title": "Gets a list of Mail Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/queue/{id}",
    "title": "Gets a single Mail Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/mail/reports/queue/{id}",
    "title": "Update an existing Mail Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMail_Queue_Reports",
    "group": "Mail_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueueReport/index.js",
    "groupTitle": "Mail_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/mail/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "post",
    "url": "/api/mail/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "post",
    "url": "/api/mail/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Mail_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": true,
            "field": "strategy",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "delete",
    "url": "/api/mail/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Mail_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "delete",
    "url": "/api/mail/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "get",
    "url": "/api/mail/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "put",
    "url": "/api/mail/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Mail_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Mail_Queues"
  },
  {
    "type": "post",
    "url": "/api/mail/out_servers",
    "title": "Creates a new SMTP",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/out_servers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSMTPs",
    "group": "Mail_SMTP",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "user",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pass",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "port",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secure",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "service",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "authentication",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailServerOut/index.js",
    "groupTitle": "Mail_SMTP"
  },
  {
    "type": "delete",
    "url": "/api/mail/out_servers/{id}",
    "title": "Deletes a SMTP",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/out_servers/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSMTPs",
    "group": "Mail_SMTP",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailServerOut/index.js",
    "groupTitle": "Mail_SMTP"
  },
  {
    "type": "get",
    "url": "/api/mail/out_servers",
    "title": "Gets a list of SMTPs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/out_servers -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSMTPs",
    "group": "Mail_SMTP",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/out_servers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/out_servers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/out_servers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/out_servers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/out_servers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailServerOut/index.js",
    "groupTitle": "Mail_SMTP"
  },
  {
    "type": "get",
    "url": "/api/mail/out_servers/{id}",
    "title": "Gets a single SMTP",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/out_servers/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSMTPs",
    "group": "Mail_SMTP",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailServerOut/index.js",
    "groupTitle": "Mail_SMTP"
  },
  {
    "type": "put",
    "url": "/api/mail/out_servers/{id}",
    "title": "Update an existing SMTP",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/out_servers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSMTPs",
    "group": "Mail_SMTP",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailServerOut/index.js",
    "groupTitle": "Mail_SMTP"
  },
  {
    "type": "post",
    "url": "/api/mail/substatuses",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSubstatuses",
    "group": "Mail_Substatuses",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "delete",
    "url": "/api/mail/substatuses/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSubstatuses",
    "group": "Mail_Substatuses",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "get",
    "url": "/api/mail/substatuses/describe",
    "title": "Gets table info about Substatuses",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeSubstatuses",
    "group": "Mail_Substatuses",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "get",
    "url": "/api/mail/substatuses",
    "title": "Gets a list of Substatuses",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSubstatuses",
    "group": "Mail_Substatuses",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/substatuses?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/substatuses?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/substatuses?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/substatuses?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/substatuses?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "get",
    "url": "/api/mail/substatuses/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSubstatuses",
    "group": "Mail_Substatuses",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "put",
    "url": "/api/mail/substatuses/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/substatuses/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSubstatuses",
    "group": "Mail_Substatuses",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailSubstatus/index.js",
    "groupTitle": "Mail_Substatuses"
  },
  {
    "type": "post",
    "url": "/api/mail/reports/transfer",
    "title": "Creates a new Mail Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/mail/reports/transfer/{id}",
    "title": "Deletes a Mail Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/transfer/describe",
    "title": "Gets table info about Mail Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/transfer",
    "title": "Gets a list of Mail Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/mail/reports/transfer/{id}",
    "title": "Gets a single Mail Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/mail/reports/transfer/{id}",
    "title": "Update an existing Mail Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMail_Transfer_Reports",
    "group": "Mail_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailTransferReport/index.js",
    "groupTitle": "Mail_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/members/reports/describe",
    "title": "Gets table info about Member Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/members/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMember_Reports",
    "group": "Member_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/memberReport/index.js",
    "groupTitle": "Member_Reports"
  },
  {
    "type": "get",
    "url": "/api/members/reports",
    "title": "Gets a list of Member Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/members/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMember_Reports",
    "group": "Member_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/members/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/members/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/members/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/members/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/members/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/memberReport/index.js",
    "groupTitle": "Member_Reports"
  },
  {
    "type": "get",
    "url": "/api/members/reports/{id}",
    "title": "Gets a single Member Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/members/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMember_Reports",
    "group": "Member_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/memberReport/index.js",
    "groupTitle": "Member_Reports"
  },
  {
    "type": "get",
    "url": "/api/migrations",
    "title": "Gets a list of Migrations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/migrations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMigrations",
    "group": "Migrations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/migrations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/migrations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/migrations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/migrations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/migrations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/migration/index.js",
    "groupTitle": "Migrations"
  },
  {
    "type": "post",
    "url": "/api/voice/networks",
    "title": "Create a new network",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/networks -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Networks",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/network/index.js",
    "groupTitle": "Networks"
  },
  {
    "type": "delete",
    "url": "/api/voice/networks/{id}",
    "title": "Deletes a network",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/networks/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "Delete",
    "group": "Networks",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/network/index.js",
    "groupTitle": "Networks"
  },
  {
    "type": "get",
    "url": "/api/networks",
    "title": "Gets a list of Networks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/networks -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetNetworks",
    "group": "Networks",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/networks?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/networks?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/networks?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/networks?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/networks?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/network/index.js",
    "groupTitle": "Networks"
  },
  {
    "type": "get",
    "url": "/api/networks/{id}",
    "title": "Gets a single Network",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/networks/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowNetworks",
    "group": "Networks",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/network/index.js",
    "groupTitle": "Networks"
  },
  {
    "type": "put",
    "url": "/api/voice/networks/{id}",
    "title": "Update an existing network",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/networks/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Update",
    "group": "Networks",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/network/index.js",
    "groupTitle": "Networks"
  },
  {
    "type": "post",
    "url": "/api/notifications",
    "title": "Send notification to user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/notifications -d '{\"text\": \"Hello!\", \"TemplateId\": 1}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Send",
    "group": "Notifications",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/notification/index.js",
    "groupTitle": "Notifications"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/users",
    "title": "Add agents to a openchannel account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts",
    "title": "Creates a new Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAccounts",
    "group": "Openchannel_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "replyUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notificationTemplate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationSound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationShake",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "waitForTheAssignedAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mapKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "queueTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "queueTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "agentTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/accounts/{id}",
    "title": "Deletes a Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAccounts",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/describe",
    "title": "Gets table info about Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAccounts",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts",
    "title": "Gets a list of Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAccounts",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}/users",
    "title": "Gets agents from openchannel account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/accounts/{id}/users",
    "title": "Removes agents from a openchannel account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/accounts/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/accounts/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}",
    "title": "Gets a single Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAccounts",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Openchannel_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Openchannel_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Openchannel_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}/applications",
    "title": "Gets account applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "get",
    "url": "/api/openchannel/accounts/{id}/interactions",
    "title": "Gets Openchannel Account Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getInteractions",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/notify",
    "title": "Notify new message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "notify",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre><a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice</a></pre></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/accounts/{id}/send",
    "title": "Send new openchannel message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id}/send -d '{from: 'John Doe', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "sendOpenchannel",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "put",
    "url": "/api/openchannel/accounts/{id}",
    "title": "Update an existing Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAccounts",
    "group": "Openchannel_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelAccount/index.js",
    "groupTitle": "Openchannel_Accounts"
  },
  {
    "type": "post",
    "url": "/api/openchannel/applications",
    "title": "Creates a new Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateApplications",
    "group": "Openchannel_Applications",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelApplication/index.js",
    "groupTitle": "Openchannel_Applications"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Openchannel_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelApplication/index.js",
    "groupTitle": "Openchannel_Applications"
  },
  {
    "type": "get",
    "url": "/api/openchannel/applications",
    "title": "Gets a list of Applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/applications -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetApplications",
    "group": "Openchannel_Applications",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelApplication/index.js",
    "groupTitle": "Openchannel_Applications"
  },
  {
    "type": "get",
    "url": "/api/openchannel/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Openchannel_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelApplication/index.js",
    "groupTitle": "Openchannel_Applications"
  },
  {
    "type": "put",
    "url": "/api/openchannel/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Openchannel_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelApplication/index.js",
    "groupTitle": "Openchannel_Applications"
  },
  {
    "type": "post",
    "url": "/api/openchannel/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "post",
    "url": "/api/openchannel/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Openchannel_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "threadId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "externalUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "get",
    "url": "/api/openchannel/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "get",
    "url": "/api/openchannel/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "get",
    "url": "/api/openchannel/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "post",
    "url": "/api/openchannel/interactions/{id}/messages",
    "title": "Creates new messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Openchannel_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "get",
    "url": "/api/openchannel/interactions/{id}/download",
    "title": "Gets interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "get",
    "url": "/api/openchannel/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "put",
    "url": "/api/openchannel/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Openchannel_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelInteraction/index.js",
    "groupTitle": "Openchannel_Interactions"
  },
  {
    "type": "post",
    "url": "/api/openchannel/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Openchannel_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "get",
    "url": "/api/openchannel/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "get",
    "url": "/api/openchannel/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "get",
    "url": "/api/openchannel/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "put",
    "url": "/api/openchannel/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "put",
    "url": "/api/openchannel/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "put",
    "url": "/api/openchannel/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Openchannel_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelMessage/index.js",
    "groupTitle": "Openchannel_Messages"
  },
  {
    "type": "post",
    "url": "/api/openchannel/reports/queue",
    "title": "Creates a new Openchannel Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/reports/queue/{id}",
    "title": "Deletes a Openchannel Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/queue/describe",
    "title": "Gets table info about Openchannel Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/queue",
    "title": "Gets a list of Openchannel Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/queue/{id}",
    "title": "Gets a single Openchannel Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/openchannel/reports/queue/{id}",
    "title": "Update an existing Openchannel Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateOpenchannel_Queue_Reports",
    "group": "Openchannel_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueueReport/index.js",
    "groupTitle": "Openchannel_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/openchannel/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "post",
    "url": "/api/openchannel/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "post",
    "url": "/api/openchannel/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Openchannel_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": true,
            "field": "strategy",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "get",
    "url": "/api/openchannel/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "put",
    "url": "/api/openchannel/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Openchannel_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Openchannel_Queues"
  },
  {
    "type": "post",
    "url": "/api/openchannel/reports/transfer",
    "title": "Creates a new Openchannel Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/reports/transfer/{id}",
    "title": "Deletes a Openchannel Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/transfer/describe",
    "title": "Gets table info about Openchannel Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/transfer",
    "title": "Gets a list of Openchannel Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/openchannel/reports/transfer/{id}",
    "title": "Gets a single Openchannel Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/openchannel/reports/transfer/{id}",
    "title": "Update an existing Openchannel Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateOpenchannel_Transfer_Reports",
    "group": "Openchannel_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelTransferReport/index.js",
    "groupTitle": "Openchannel_Transfer_Reports"
  },
  {
    "type": "post",
    "url": "/api/pauses",
    "title": "Creates a new Pause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pauses -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreatePauses",
    "group": "Pauses",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pause/index.js",
    "groupTitle": "Pauses"
  },
  {
    "type": "delete",
    "url": "/api/pauses/{id}",
    "title": "Deletes a Pause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pauses/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeletePauses",
    "group": "Pauses",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pause/index.js",
    "groupTitle": "Pauses"
  },
  {
    "type": "get",
    "url": "/api/pauses",
    "title": "Gets a list of Pauses",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pauses -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetPauses",
    "group": "Pauses",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/pauses?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/pauses?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/pauses?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/pauses?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/pauses?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/pause/index.js",
    "groupTitle": "Pauses"
  },
  {
    "type": "get",
    "url": "/api/pauses/{id}",
    "title": "Gets a single Pause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pauses/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowPauses",
    "group": "Pauses",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pause/index.js",
    "groupTitle": "Pauses"
  },
  {
    "type": "put",
    "url": "/api/pauses/{id}",
    "title": "Update an existing Pause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pauses/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updatePauses",
    "group": "Pauses",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pause/index.js",
    "groupTitle": "Pauses"
  },
  {
    "type": "get",
    "url": "/api/plugins",
    "title": "Gets a list of Plugins",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetPlugins",
    "group": "Plugins",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/plugins?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/plugins?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/plugins?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/plugins?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/plugins?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "get",
    "url": "/api/plugins/{id}",
    "title": "Gets a single Plugin",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowPlugins",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "delete",
    "url": "/api/plugins/{id}",
    "title": "Delete a plugin",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroyPlugin",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "get",
    "url": "/api/plugins/{id}/download",
    "title": "Download plugin source code",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "put",
    "url": "/api/plugins/{id}",
    "title": "Update an existing plugin",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updatePlugin",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "post",
    "url": "/api/plugins",
    "title": "Upload new plugin",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "uploadPlugin",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "get",
    "url": "/api/plugins/webhook?hostname={host}&port={port}&encoding={encoding}&json={json}&path={path}",
    "title": "Redirect a plugin request to the specified path",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/webhook?port={port}&path={path} -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "webhookPlugin",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "post",
    "url": "/api/plugins/webhook?hostname={host}&port={port}&encoding={encoding}&json={json}&path={path}",
    "title": "Redirect a plugin request to the specified path",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/plugins/webhook?port={port}&path={path} -H 'Content-Type: application/json' -X POST",
        "type": "json"
      }
    ],
    "name": "webhookPlugin",
    "group": "Plugins",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/plugin/index.js",
    "groupTitle": "Plugins"
  },
  {
    "type": "delete",
    "url": "/api/pm2/{id}",
    "title": "Deletes an existing process",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pm2/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeletePm2Process",
    "group": "Pm2",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pm2/index.js",
    "groupTitle": "Pm2"
  },
  {
    "type": "get",
    "url": "/api/pm2/{id}",
    "title": "Gets a single pm2 process",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pm2/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetPm2Process",
    "group": "Pm2",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pm2/index.js",
    "groupTitle": "Pm2"
  },
  {
    "type": "get",
    "url": "/api/pm2",
    "title": "Gets pm2 processes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pm2 -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetPm2Processes",
    "group": "Pm2",
    "description": "<p>Motion returns the pm2 processes list.</p>",
    "version": "0.0.0",
    "filename": "server/api/pm2/index.js",
    "groupTitle": "Pm2"
  },
  {
    "type": "post",
    "url": "/api/pm2",
    "title": "Start a single pm2 process",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pm2 -d '{\"name\": \"process_name\", \"script\": \"/index.js\"}'\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "StartPm2Process",
    "group": "Pm2",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "script",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pm2/index.js",
    "groupTitle": "Pm2"
  },
  {
    "type": "put",
    "url": "/api/pm2/{id}",
    "title": "Update an existing process",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/pm2/{id} -d '{\"status\": \"online\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "UpdatePm2Process",
    "group": "Pm2",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/pm2/index.js",
    "groupTitle": "Pm2"
  },
  {
    "type": "get",
    "url": "/api/rpc/campaigns/",
    "title": "Gets a list of campaigns",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/campaigns -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "Campaigns",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime campaigns parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/fax/accounts",
    "title": "Gets a list of FaxAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/fax/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "FaxAccounts",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime fax account parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "put",
    "url": "/api/rpc/agents/:id/capacity",
    "title": "Sets agent capacity",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/agents/:id/capacity -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTAgentCapacity",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return the current agent capacity.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/agents",
    "title": "Gets a list of RTAgents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/agents -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTAgents",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime agents parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/chat/queues",
    "title": "Gets a list of RTChatQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/chat/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTChatQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime chat queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/fax/queues",
    "title": "Gets a list of RTFaxQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/fax/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTFaxQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime fax queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/mail/accounts",
    "title": "Gets a list of RTMailAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/mail/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTMailAccounts",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime mail account parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/mail/queues",
    "title": "Gets a list of RTMailQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/mail/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTMailQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime mail queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/openchannel/queues",
    "title": "Gets a list of RTOpenchannelQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/openchannel/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTOpenchannelQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime openchannel queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/outbound/channels",
    "title": "Gets a list of RTOutboundChannels",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/outbound/channels -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTOutboundChannels",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime outbound channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/sms/queues",
    "title": "Gets a list of RTSmsQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/sms/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTSmsQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime sms queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/telephones",
    "title": "Gets a list of RTTelephones",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/telephones -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTTelephones",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of telephones parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/trunks",
    "title": "Gets a list of RTTrunks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/trunks -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTTrunks",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime trunks parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/channels",
    "title": "Gets a list of RTVoiceChannelMixMonitor",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/channels/{uniqueid}/mixmonitor -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceChannelMixMonitor",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime voice channel mixmonitor.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/channels",
    "title": "Gets a list of RTVoiceChannelStopMixMonitor",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/channels/{uniqueid}/stopmixmonitor -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceChannelStopMixMonitor",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime voice channel stopmixmonitor.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/channels",
    "title": "Gets a list of RTVoiceChannels",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/channels -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceChannels",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime voice channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/channels/{uniqueid}",
    "title": "Gets a single RTVoiceQueueChannel",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueueChannel",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a specific realtime voice queue channel.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/channels/{uniqueid}/hangup",
    "title": "Hangup a single RTVoiceQueueChannel",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid}/hangup -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueueChannelHangup",
    "group": "RPC_Realtime",
    "description": "<p>Motion will hangup a specific realtime voice queue channel.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/channels/{uniqueid}/redirect/{exten}",
    "title": "Hangup a single RTVoiceQueueChannel",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid}/redirect/{exten} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueueChannelRedirect",
    "group": "RPC_Realtime",
    "description": "<p>Motion will redirect a specific realtime voice queue channel to a specific extension.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/preview/{id}",
    "title": "Gets a single preview contact",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/preview/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueuePreview",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a specific preview contact.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues",
    "title": "Gets a list of RTVoiceQueues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/outbound",
    "title": "Gets a list of RTOutbound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/channels",
    "title": "Gets a list of RTVoiceQueuesChannels",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/channels -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RTVoiceQueuesChannels",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime voice queues channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/chat/queues/{id}",
    "title": "Gets a single RTChatQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/chat/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTChatQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/fax/queues/{id}",
    "title": "Gets a single RTFaxQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/fax/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTFaxQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/mail/queues/{id}",
    "title": "Gets a single RTMailQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/mail/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTMailQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/openchannel/queues/{id}",
    "title": "Gets a single RTOpenchannelQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/openchannel/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTOpenchannelQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/sms/queues/{id}",
    "title": "Gets a single RTSmsQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/sms/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTSmsQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/voice/queues/{id}",
    "title": "Gets a single RTVoiceQueue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/voice/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRTVoiceQueues",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/agents/:id/notify",
    "title": "Notify message to a specific agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/agents/:id/notify -d '{\"messageId\": \"5080\", \"channel\": \"mail\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "agentNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific agent.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/chat/queues/:id/notify",
    "title": "Notify message to a specific queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/chat/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "chatQueueNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/chat/queues/waitinginteractions",
    "title": "Gets a list of chatQueuesWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/chat/queues/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "chatQueuesWaitingInteractions",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime waiting chat queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/fax/queues/:id/notify",
    "title": "Notify message to a specific queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/fax/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "faxQueueNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/fax/queues/waitinginteractions",
    "title": "Gets a list of faxQueuesWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/fax/queues/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "faxQueuesWaitingInteractions",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime waiting fax queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/mail/queues/:id/notify",
    "title": "Notify message to a specific queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/mail/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "mailQueueNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/mail/queues/waitinginteractions",
    "title": "Gets a list of mailQueuesWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/mail/queues/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "mailQueuesWaitingInteractions",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime waiting mail queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/openchannel/queues/:id/notify",
    "title": "Notify message to a specific queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/openchannel/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "openchannelQueueNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/openchannel/queues/waitinginteractions",
    "title": "Gets a list of openchannelQueuesWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/openchannel/queues/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "openchannelQueuesWaitingInteractions",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime waiting openchannel queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/rpc/sms/queues/:id/notify",
    "title": "Notify message to a specific queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/sms/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "smsQueueNotify",
    "group": "RPC_Realtime",
    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "get",
    "url": "/api/rpc/sms/queues/waitinginteractions",
    "title": "Gets a list of smsQueuesWaitingInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/rpc/sms/queues/waitinginteractions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "smsQueuesWaitingInteractions",
    "group": "RPC_Realtime",
    "description": "<p>Motion will return a list of realtime waiting sms queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/rpc/index.js",
    "groupTitle": "RPC_Realtime"
  },
  {
    "type": "post",
    "url": "/api/integrations/salesforce/accounts",
    "title": "Creates a new Salesforce Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSalesforce_Accounts",
    "group": "Salesforce_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientSecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "securityToken",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"integrationTab\"",
              "\"newTab\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/salesforce/accounts/{id}",
    "title": "Deletes a Salesforce Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSalesforce_Accounts",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/accounts",
    "title": "Gets a list of Salesforce Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSalesforce_Accounts",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/accounts/{id}",
    "title": "Gets a single Salesforce Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSalesforce_Accounts",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/salesforce/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/salesforce/accounts/{id}",
    "title": "Update an existing Salesforce Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSalesforce_Accounts",
    "group": "Salesforce_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceAccount/index.js",
    "groupTitle": "Salesforce_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/salesforce/configurations",
    "title": "Creates a new Salesforce Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSalesforce_Configurations",
    "group": "Salesforce_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"Task\"",
              "\"Case\""
            ],
            "optional": true,
            "field": "ticketType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"contact_lead\"",
              "\"contact\"",
              "\"lead\""
            ],
            "optional": true,
            "field": "moduleSearch",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"nothing\"",
              "\"contact\"",
              "\"lead\""
            ],
            "optional": true,
            "field": "moduleCreate",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/salesforce/configurations/{id}",
    "title": "Deletes a Salesforce Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSalesforce_Configurations",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/configurations",
    "title": "Gets a list of Salesforce Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSalesforce_Configurations",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/configurations/{id}",
    "title": "Gets a single Salesforce Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSalesforce_Configurations",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/salesforce/configurations/{id}",
    "title": "Update an existing Salesforce Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSalesforce_Configurations",
    "group": "Salesforce_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceConfiguration/index.js",
    "groupTitle": "Salesforce_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/salesforce/fields",
    "title": "Creates a new Salesforce Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSalesforce_Fields",
    "group": "Salesforce_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceField/index.js",
    "groupTitle": "Salesforce_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/salesforce/fields/{id}",
    "title": "Deletes a Salesforce Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSalesforce_Fields",
    "group": "Salesforce_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceField/index.js",
    "groupTitle": "Salesforce_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/fields",
    "title": "Gets a list of Salesforce Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSalesforce_Fields",
    "group": "Salesforce_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceField/index.js",
    "groupTitle": "Salesforce_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/salesforce/fields/{id}",
    "title": "Gets a single Salesforce Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSalesforce_Fields",
    "group": "Salesforce_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceField/index.js",
    "groupTitle": "Salesforce_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/salesforce/fields/{id}",
    "title": "Update an existing Salesforce Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSalesforce_Fields",
    "group": "Salesforce_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSalesforceField/index.js",
    "groupTitle": "Salesforce_Fields"
  },
  {
    "type": "post",
    "url": "/api/schedules",
    "title": "Creates a new Schedule",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSchedules",
    "group": "Schedules",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": false,
            "field": "active",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "cron",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "startAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "endAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "subtractNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"years\"",
              "\"quarters\"",
              "\"months\"",
              "\"weeks\"",
              "\"days\"",
              "\"hours\"",
              "\"minutes\""
            ],
            "optional": false,
            "field": "subtractUnit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"csv\"",
              "\"pdf\"",
              "\"xlsx\""
            ],
            "optional": false,
            "field": "output",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"custom\"",
              "\"default\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "sendMail",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "cc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "bcc",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "sendIfEmpty",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "delete",
    "url": "/api/schedules/{id}",
    "title": "Deletes a Schedule",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSchedules",
    "group": "Schedules",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "get",
    "url": "/api/schedules",
    "title": "Gets a list of Schedules",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSchedules",
    "group": "Schedules",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/schedules?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/schedules?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/schedules?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/schedules?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/schedules?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "get",
    "url": "/api/schedules/{id}",
    "title": "Gets a single Schedule",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSchedules",
    "group": "Schedules",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "get",
    "url": "/api/schedules/{id}/run",
    "title": "Run Scheduler",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules/{id}/run -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "run",
    "group": "Schedules",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "put",
    "url": "/api/schedules/{id}",
    "title": "Update an existing Schedule",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/schedules/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSchedules",
    "group": "Schedules",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/schedule/index.js",
    "groupTitle": "Schedules"
  },
  {
    "type": "post",
    "url": "/api/screen/recordings",
    "title": "Creates a new Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateRecordings",
    "group": "Screen_Recordings",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "format",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interactionid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rating",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "duration",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "startedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "createdAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "updatedAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "get",
    "url": "/api/screen/recordings/describe",
    "title": "Gets table info about Recordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeRecordings",
    "group": "Screen_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "get",
    "url": "/api/screen/recordings",
    "title": "Gets a list of Recordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetRecordings",
    "group": "Screen_Recordings",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/screen/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/screen/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/screen/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/screen/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/screen/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "get",
    "url": "/api/screen/recordings/{id}",
    "title": "Gets a single Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRecordings",
    "group": "Screen_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "delete",
    "url": "/api/screen/recordings/{id}",
    "title": "Delete screen recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroy",
    "group": "Screen_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "get",
    "url": "/api/screen/recordings/{id}/download",
    "title": "Download Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Screen_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "put",
    "url": "/api/screen/recordings/{id}",
    "title": "Update an existing Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/screen/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateRecordings",
    "group": "Screen_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/screenRecording/index.js",
    "groupTitle": "Screen_Recordings"
  },
  {
    "type": "post",
    "url": "/api/integrations/servicenow/accounts",
    "title": "Creates a new Servicenow Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateServicenow_Accounts",
    "group": "Servicenow_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/servicenow/accounts/{id}",
    "title": "Deletes a Servicenow Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteServicenow_Accounts",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/accounts",
    "title": "Gets a list of Servicenow Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetServicenow_Accounts",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/accounts/{id}",
    "title": "Gets a single Servicenow Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowServicenow_Accounts",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/servicenow/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/servicenow/accounts/{id}",
    "title": "Update an existing Servicenow Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateServicenow_Accounts",
    "group": "Servicenow_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowAccount/index.js",
    "groupTitle": "Servicenow_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/servicenow/configurations",
    "title": "Creates a new Servicenow Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateServicenow_Configurations",
    "group": "Servicenow_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/servicenow/configurations/{id}",
    "title": "Deletes a Servicenow Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteServicenow_Configurations",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/configurations",
    "title": "Gets a list of Servicenow Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetServicenow_Configurations",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/configurations/{id}",
    "title": "Gets a single Servicenow Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowServicenow_Configurations",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/servicenow/configurations/{id}",
    "title": "Update an existing Servicenow Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateServicenow_Configurations",
    "group": "Servicenow_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowConfiguration/index.js",
    "groupTitle": "Servicenow_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/servicenow/fields",
    "title": "Creates a new Servicenow Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateServicenow_Fields",
    "group": "Servicenow_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowField/index.js",
    "groupTitle": "Servicenow_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/servicenow/fields/{id}",
    "title": "Deletes a Servicenow Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteServicenow_Fields",
    "group": "Servicenow_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowField/index.js",
    "groupTitle": "Servicenow_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/fields",
    "title": "Gets a list of Servicenow Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetServicenow_Fields",
    "group": "Servicenow_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowField/index.js",
    "groupTitle": "Servicenow_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/servicenow/fields/{id}",
    "title": "Gets a single Servicenow Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowServicenow_Fields",
    "group": "Servicenow_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowField/index.js",
    "groupTitle": "Servicenow_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/servicenow/fields/{id}",
    "title": "Update an existing Servicenow Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateServicenow_Fields",
    "group": "Servicenow_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intServicenowField/index.js",
    "groupTitle": "Servicenow_Fields"
  },
  {
    "type": "get",
    "url": "/api/settings",
    "title": "Gets a list of Settings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSettings",
    "group": "Settings",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/settings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/settings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/settings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/settings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/settings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}",
    "title": "Gets a single Setting",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSettings",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "post",
    "url": "/api/settings/{id}/favicon",
    "title": "Add Favicon",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/favicon -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addFavicon",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "post",
    "url": "/api/settings/{id}/logo",
    "title": "Add logo",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/logo -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addLogo",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "post",
    "url": "/api/settings/{id}/logo_login",
    "title": "Add logo login",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/logo_login -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addLogoLogin",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "post",
    "url": "/api/settings/{id}/preferred",
    "title": "Add Preferred",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/preferred -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addPreferred",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}/favicon",
    "title": "Get Favicon",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/favicon -v -X GET",
        "type": "json"
      }
    ],
    "name": "getFavicon",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}/gdpr",
    "title": "Get gdpr settings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/gdpr -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getGdpr",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}/logo",
    "title": "Get logo",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/logo -v -X GET",
        "type": "json"
      }
    ],
    "name": "getLogo",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}/logo_login",
    "title": "Get logo login",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/logo_login -v -X GET",
        "type": "json"
      }
    ],
    "name": "getLogoLogin",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "get",
    "url": "/api/settings/{id}/preferred",
    "title": "Get Preferred",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id}/preferred -v -X GET",
        "type": "json"
      }
    ],
    "name": "getPreferred",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "put",
    "url": "/api/settings/{id}",
    "title": "Update an existing Setting",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/settings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSettings",
    "group": "Settings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/setting/index.js",
    "groupTitle": "Settings"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/users",
    "title": "Add agents to a sms account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts",
    "title": "Creates a new Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAccounts",
    "group": "Sms_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "remote",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"twilio\"",
              "\"skebby\"",
              "\"connectel\"",
              "\"clicksend\"",
              "\"plivo\"",
              "\"clickatell\"",
              "\"csc\"",
              "\"infobip\"",
              "\"intelepeer\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountSid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "authId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "authToken",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"SI\"",
              "\"TI\"",
              "\"GP\""
            ],
            "optional": true,
            "field": "smsMethod",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "apiKey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "senderString",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "deliveryReport",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notificationTemplate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationSound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationShake",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "waitForTheAssignedAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "queueTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "queueTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "agentTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "baseUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/sms/accounts/{id}",
    "title": "Deletes a Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAccounts",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/describe",
    "title": "Gets table info about Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAccounts",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts",
    "title": "Gets a list of Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAccounts",
    "group": "Sms_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/users",
    "title": "Gets agents from sms account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/sms/accounts/{id}/users",
    "title": "Removes agents from a sms account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/sms/accounts/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/sms/accounts/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}",
    "title": "Gets a single Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAccounts",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "put",
    "url": "/api/sms/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Sms_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Sms_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Sms_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/applications",
    "title": "Gets account applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/interactions",
    "title": "Gets Sms Account interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getInteractions",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/notify",
    "title": "Notify new message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "notify",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new sms message to be sent to the system.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "put",
    "url": "/api/sms/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/send",
    "title": "Send new sms message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/send -d '{from: '+39333123456', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "sendSms",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/messages/{id}/status",
    "title": "Receive message status",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
        "type": "json"
      }
    ],
    "name": "statusMessage",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/accounts/{id}/status",
    "title": "Receive message status",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
        "type": "json"
      }
    ],
    "name": "statusMessage",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "get",
    "url": "/api/sms/accounts/{id}/status",
    "title": "Receive message status as get request",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
        "type": "json"
      }
    ],
    "name": "statusMessage",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "put",
    "url": "/api/sms/accounts/{id}",
    "title": "Update an existing Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAccounts",
    "group": "Sms_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsAccount/index.js",
    "groupTitle": "Sms_Accounts"
  },
  {
    "type": "post",
    "url": "/api/sms/applications",
    "title": "Creates a new Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateApplications",
    "group": "Sms_Applications",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsApplication/index.js",
    "groupTitle": "Sms_Applications"
  },
  {
    "type": "delete",
    "url": "/api/sms/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Sms_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsApplication/index.js",
    "groupTitle": "Sms_Applications"
  },
  {
    "type": "get",
    "url": "/api/sms/applications",
    "title": "Gets a list of Applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/applications -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetApplications",
    "group": "Sms_Applications",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsApplication/index.js",
    "groupTitle": "Sms_Applications"
  },
  {
    "type": "get",
    "url": "/api/sms/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Sms_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsApplication/index.js",
    "groupTitle": "Sms_Applications"
  },
  {
    "type": "put",
    "url": "/api/sms/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Sms_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsApplication/index.js",
    "groupTitle": "Sms_Applications"
  },
  {
    "type": "post",
    "url": "/api/sms/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "post",
    "url": "/api/sms/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Sms_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/sms/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "get",
    "url": "/api/sms/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "get",
    "url": "/api/sms/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Sms_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/sms/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "get",
    "url": "/api/sms/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "post",
    "url": "/api/sms/interactions/{id}/messages",
    "title": "Creates new messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Sms_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "get",
    "url": "/api/sms/interactions/{id}/download",
    "title": "Gets interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "get",
    "url": "/api/sms/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "put",
    "url": "/api/sms/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Sms_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsInteraction/index.js",
    "groupTitle": "Sms_Interactions"
  },
  {
    "type": "post",
    "url": "/api/sms/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Sms_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "delete",
    "url": "/api/sms/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Sms_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "get",
    "url": "/api/sms/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Sms_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "get",
    "url": "/api/sms/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Sms_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "get",
    "url": "/api/sms/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Sms_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "put",
    "url": "/api/sms/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Sms_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsMessage/index.js",
    "groupTitle": "Sms_Messages"
  },
  {
    "type": "post",
    "url": "/api/sms/reports/queue",
    "title": "Creates a new Sms Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/sms/reports/queue/{id}",
    "title": "Deletes a Sms Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/queue/describe",
    "title": "Gets table info about Sms Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/queue",
    "title": "Gets a list of Sms Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/queue/{id}",
    "title": "Gets a single Sms Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/sms/reports/queue/{id}",
    "title": "Update an existing Sms Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSms_Queue_Reports",
    "group": "Sms_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueueReport/index.js",
    "groupTitle": "Sms_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/sms/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "post",
    "url": "/api/sms/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "post",
    "url": "/api/sms/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Sms_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": true,
            "field": "strategy",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "delete",
    "url": "/api/sms/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Sms_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "delete",
    "url": "/api/sms/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "get",
    "url": "/api/sms/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "put",
    "url": "/api/sms/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Sms_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Sms_Queues"
  },
  {
    "type": "post",
    "url": "/api/sms/reports/transfer",
    "title": "Creates a new Sms Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/sms/reports/transfer/{id}",
    "title": "Deletes a Sms Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/transfer/describe",
    "title": "Gets table info about Sms Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/transfer",
    "title": "Gets a list of Sms Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/sms/reports/transfer/{id}",
    "title": "Gets a single Sms Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/sms/reports/transfer/{id}",
    "title": "Update an existing Sms Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSms_Transfer_Reports",
    "group": "Sms_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsTransferReport/index.js",
    "groupTitle": "Sms_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/sounds",
    "title": "Gets a list of Sounds",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSounds",
    "group": "Sounds",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sounds?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sounds?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sounds?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sounds?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sounds?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "get",
    "url": "/api/sounds/{id}",
    "title": "Gets a single Sound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSounds",
    "group": "Sounds",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "post",
    "url": "/api/sounds",
    "title": "Create a new sound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addSound",
    "group": "Sounds",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "delete",
    "url": "/api/sounds/{id}",
    "title": "Deletes a sound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroySound",
    "group": "Sounds",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "get",
    "url": "/api/sounds/{id}/download",
    "title": "Download Sound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Sounds",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "put",
    "url": "/api/sounds",
    "title": "Update an existing new sound",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sounds -d '[\"name\": \"sound_name\", \"description\": \"sound_desc\"]' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSound",
    "group": "Sounds",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/sound/index.js",
    "groupTitle": "Sounds"
  },
  {
    "type": "post",
    "url": "/api/square/details/reports",
    "title": "Creates a new Square Detail Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "node",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "application",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "data",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "project_name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "delete",
    "url": "/api/square/details/reports/{id}",
    "title": "Deletes a Square Detail Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/details/reports/describe",
    "title": "Gets table info about Square Detail Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/details/reports",
    "title": "Gets a list of Square Detail Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/details/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/details/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/details/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/details/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/details/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/details/reports/{id}",
    "title": "Gets a single Square Detail Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "put",
    "url": "/api/square/details/reports/{id}",
    "title": "Update an existing Square Detail Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/details/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSquare_Detail_Reports",
    "group": "Square_Details_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReportDetail/index.js",
    "groupTitle": "Square_Details_Reports"
  },
  {
    "type": "post",
    "url": "/api/square/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Square_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareMessage/index.js",
    "groupTitle": "Square_Messages"
  },
  {
    "type": "delete",
    "url": "/api/square/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Square_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareMessage/index.js",
    "groupTitle": "Square_Messages"
  },
  {
    "type": "get",
    "url": "/api/square/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Square_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareMessage/index.js",
    "groupTitle": "Square_Messages"
  },
  {
    "type": "get",
    "url": "/api/square/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Square_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareMessage/index.js",
    "groupTitle": "Square_Messages"
  },
  {
    "type": "put",
    "url": "/api/square/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Square_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareMessage/index.js",
    "groupTitle": "Square_Messages"
  },
  {
    "type": "post",
    "url": "/api/square/odbc",
    "title": "Creates a new ODBC",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateODBCs",
    "group": "Square_ODBC",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dsn",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "delete",
    "url": "/api/square/odbc/{id}",
    "title": "Deletes a ODBC",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteODBCs",
    "group": "Square_ODBC",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "get",
    "url": "/api/square/odbc",
    "title": "Gets a list of ODBCs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetODBCs",
    "group": "Square_ODBC",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/odbc?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/odbc?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/odbc?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/odbc?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/odbc?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "get",
    "url": "/api/square/odbc/{id}",
    "title": "Gets a single ODBC",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowODBCs",
    "group": "Square_ODBC",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "get",
    "url": "/api/square/odbc/{id}/test",
    "title": "Test Odbc",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc/{id}/test -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "test",
    "group": "Square_ODBC",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "put",
    "url": "/api/square/odbc/{id}",
    "title": "Update an existing ODBC",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/odbc/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateODBCs",
    "group": "Square_ODBC",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareOdbc/index.js",
    "groupTitle": "Square_ODBC"
  },
  {
    "type": "post",
    "url": "/api/square/projects",
    "title": "Creates a new Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateProjects",
    "group": "Square_Projects",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notes",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Blob",
            "optional": true,
            "field": "preproduction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Blob",
            "optional": true,
            "field": "production",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "delete",
    "url": "/api/square/projects/{id}",
    "title": "Deletes a Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteProjects",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "get",
    "url": "/api/square/projects",
    "title": "Gets a list of Projects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetProjects",
    "group": "Square_Projects",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/projects?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/projects?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/projects?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/projects?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/projects?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "get",
    "url": "/api/square/projects/{id}",
    "title": "Gets a single Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowProjects",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "post",
    "url": "/api/square/projects/{id}/users",
    "title": "Adds user permissions to a Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addUsers",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "get",
    "url": "/api/square/projects/{id}/users",
    "title": "Gets users permissions from Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getUsers",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "delete",
    "url": "/api/square/projects/{id}/users",
    "title": "Removes user permissions from a Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "removeUsers",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "put",
    "url": "/api/square/projects/{id}",
    "title": "Update an existing Project",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/projects/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateProjects",
    "group": "Square_Projects",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareProject/index.js",
    "groupTitle": "Square_Projects"
  },
  {
    "type": "post",
    "url": "/api/square/recordings",
    "title": "Creates a new Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateRecordings",
    "group": "Square_Recordings",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "extension",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dnid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "projectName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "saveName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "filename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "savePath",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "format",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "get",
    "url": "/api/square/recordings",
    "title": "Gets a list of Recordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetRecordings",
    "group": "Square_Recordings",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "get",
    "url": "/api/square/recordings/{id}",
    "title": "Gets a single Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRecordings",
    "group": "Square_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "delete",
    "url": "/api/square/recordings/{id}/delete",
    "title": "Delete recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings/{id}/delete -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroy",
    "group": "Square_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "get",
    "url": "/api/square/recordings/{id}/download",
    "title": "Download Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Square_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "put",
    "url": "/api/square/recordings/{id}",
    "title": "Update an existing Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateRecordings",
    "group": "Square_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareRecording/index.js",
    "groupTitle": "Square_Recordings"
  },
  {
    "type": "post",
    "url": "/api/square/reports",
    "title": "Creates a new Square Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSquare_Reports",
    "group": "Square_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "network",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "network_script",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "request",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "language",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "version",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callingpres",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callingani2",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callington",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callingtns",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dnid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "rdnis",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "extension",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "enhanced",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "threadid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "project_name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "bot",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "delete",
    "url": "/api/square/reports/{id}",
    "title": "Deletes a Square Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSquare_Reports",
    "group": "Square_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/reports/describe",
    "title": "Gets table info about Square Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeSquare_Reports",
    "group": "Square_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/reports",
    "title": "Gets a list of Square Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSquare_Reports",
    "group": "Square_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "get",
    "url": "/api/square/reports/{id}",
    "title": "Gets a single Square Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSquare_Reports",
    "group": "Square_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "put",
    "url": "/api/square/reports/{id}",
    "title": "Update an existing Square Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/square/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSquare_Reports",
    "group": "Square_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/squareReport/index.js",
    "groupTitle": "Square_Reports"
  },
  {
    "type": "post",
    "url": "/api/integrations/sugarcrm/configurations",
    "title": "Creates a new SugarCRM Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSugarCRM_Configurations",
    "group": "SugarCRM_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "SugarCRM_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/sugarcrm/configurations/{id}",
    "title": "Deletes a SugarCRM Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSugarCRM_Configurations",
    "group": "SugarCRM_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "SugarCRM_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/configurations",
    "title": "Gets a list of SugarCRM Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSugarCRM_Configurations",
    "group": "SugarCRM_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "SugarCRM_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/configurations/{id}",
    "title": "Gets a single SugarCRM Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSugarCRM_Configurations",
    "group": "SugarCRM_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "SugarCRM_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/sugarcrm/configurations/{id}",
    "title": "Update an existing SugarCRM Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSugarCRM_Configurations",
    "group": "SugarCRM_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "SugarCRM_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/sugarcrm/accounts",
    "title": "Creates a new Sugarcrm Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSugarcrm_Accounts",
    "group": "Sugarcrm_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/sugarcrm/accounts/{id}",
    "title": "Deletes a Sugarcrm Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSugarcrm_Accounts",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/accounts",
    "title": "Gets a list of Sugarcrm Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSugarcrm_Accounts",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/accounts/{id}",
    "title": "Gets a single Sugarcrm Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSugarcrm_Accounts",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/sugarcrm/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/sugarcrm/accounts/{id}",
    "title": "Update an existing Sugarcrm Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSugarcrm_Accounts",
    "group": "Sugarcrm_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmAccount/index.js",
    "groupTitle": "Sugarcrm_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Sugarcrm_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "Sugarcrm_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Sugarcrm_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "Sugarcrm_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Sugarcrm_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmConfiguration/index.js",
    "groupTitle": "Sugarcrm_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/sugarcrm/fields",
    "title": "Creates a new Sugarcrm Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateSugarcrm_Fields",
    "group": "Sugarcrm_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmField/index.js",
    "groupTitle": "Sugarcrm_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/sugarcrm/fields/{id}",
    "title": "Deletes a Sugarcrm Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteSugarcrm_Fields",
    "group": "Sugarcrm_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmField/index.js",
    "groupTitle": "Sugarcrm_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/fields",
    "title": "Gets a list of Sugarcrm Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSugarcrm_Fields",
    "group": "Sugarcrm_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmField/index.js",
    "groupTitle": "Sugarcrm_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/sugarcrm/fields/{id}",
    "title": "Gets a single Sugarcrm Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowSugarcrm_Fields",
    "group": "Sugarcrm_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmField/index.js",
    "groupTitle": "Sugarcrm_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/sugarcrm/fields/{id}",
    "title": "Update an existing Sugarcrm Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateSugarcrm_Fields",
    "group": "Sugarcrm_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intSugarcrmField/index.js",
    "groupTitle": "Sugarcrm_Fields"
  },
  {
    "type": "get",
    "url": "/api/system/process",
    "title": "Gets system information",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/system -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSystemInformation",
    "group": "System_Information",
    "description": "<p>Motion returns the system information.</p>",
    "version": "0.0.0",
    "filename": "server/api/system/index.js",
    "groupTitle": "System_Information"
  },
  {
    "type": "get",
    "url": "/api/system",
    "title": "Gets system information",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/system -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetSystemInformation",
    "group": "System_Information",
    "description": "<p>Motion returns the system information.</p>",
    "version": "0.0.0",
    "filename": "server/api/system/index.js",
    "groupTitle": "System_Information"
  },
  {
    "type": "post",
    "url": "/api/tags",
    "title": "Creates a new Tag",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/tags -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateTags",
    "group": "Tags",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "color",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/tag/index.js",
    "groupTitle": "Tags"
  },
  {
    "type": "delete",
    "url": "/api/tags/{id}",
    "title": "Deletes a Tag",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/tags/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteTags",
    "group": "Tags",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/tag/index.js",
    "groupTitle": "Tags"
  },
  {
    "type": "get",
    "url": "/api/tags",
    "title": "Gets a list of Tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/tags -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTags",
    "group": "Tags",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/tags?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/tags?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/tags?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/tags?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/tags?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/tag/index.js",
    "groupTitle": "Tags"
  },
  {
    "type": "get",
    "url": "/api/tags/{id}",
    "title": "Gets a single Tag",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/tags/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTags",
    "group": "Tags",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/tag/index.js",
    "groupTitle": "Tags"
  },
  {
    "type": "put",
    "url": "/api/tags/{id}",
    "title": "Update an existing Tag",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/tags/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateTags",
    "group": "Tags",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/tag/index.js",
    "groupTitle": "Tags"
  },
  {
    "type": "post",
    "url": "/api/teams/{id}/queues",
    "title": "Add queues to a team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/queues -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddQueues",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "post",
    "url": "/api/teams",
    "title": "Creates a new Team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateTeams",
    "group": "Teams",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/teams/{id}",
    "title": "Deletes a Team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "get",
    "url": "/api/teams/{id}/users",
    "title": "Gets agents from team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "get",
    "url": "/api/teams/{id}/queues?channel={channel}",
    "title": "Gets Queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/queues?channel={channel} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "get",
    "url": "/api/teams",
    "title": "Gets a list of Teams",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Teams",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/teams?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/teams?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/teams?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/teams?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/teams?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/teams/{id}/users",
    "title": "Removes agents from a team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/teams/{id}/queues",
    "title": "Remove queues to a team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/queues?channel=voice&ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveQueues",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/chat/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/chatQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/fax/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/faxQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/openchannel/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/openchannelQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/sms/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/sms/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/smsQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/voice/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "delete",
    "url": "/api/mail/queues/{id}/teams",
    "title": "Remove teams from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/mailQueue/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "get",
    "url": "/api/teams/{id}",
    "title": "Gets a single Team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "post",
    "url": "/api/teams/{id}/users",
    "title": "Adds agents to a team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAgents",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "put",
    "url": "/api/teams/{id}",
    "title": "Update an existing Team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/teams/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateTeams",
    "group": "Teams",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/team/index.js",
    "groupTitle": "Teams"
  },
  {
    "type": "post",
    "url": "/api/templates",
    "title": "Creates a new Template",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/templates -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateTemplates",
    "group": "Templates",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "html",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/template/index.js",
    "groupTitle": "Templates"
  },
  {
    "type": "delete",
    "url": "/api/templates/{id}",
    "title": "Deletes a Template",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/templates/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteTemplates",
    "group": "Templates",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/template/index.js",
    "groupTitle": "Templates"
  },
  {
    "type": "get",
    "url": "/api/templates",
    "title": "Gets a list of Templates",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/templates -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTemplates",
    "group": "Templates",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/templates?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/templates?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/templates?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/templates?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/templates?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/template/index.js",
    "groupTitle": "Templates"
  },
  {
    "type": "get",
    "url": "/api/templates/{id}",
    "title": "Gets a single Template",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/templates/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTemplates",
    "group": "Templates",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/template/index.js",
    "groupTitle": "Templates"
  },
  {
    "type": "put",
    "url": "/api/templates/{id}",
    "title": "Update an existing Template",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/templates/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateTemplates",
    "group": "Templates",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/template/index.js",
    "groupTitle": "Templates"
  },
  {
    "type": "post",
    "url": "/api/triggers",
    "title": "Creates a new Trigger",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateTriggers",
    "group": "Triggers",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "status",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "delete",
    "url": "/api/triggers/{id}",
    "title": "Deletes a Trigger",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteTriggers",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "get",
    "url": "/api/triggers",
    "title": "Gets a list of Triggers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTriggers",
    "group": "Triggers",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/triggers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/triggers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/triggers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/triggers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/triggers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "get",
    "url": "/api/triggers/{id}",
    "title": "Gets a single Trigger",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTriggers",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "post",
    "url": "/api/triggers/{id}/actions",
    "title": "Creates new actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/actions -d '{\"action\": \"contactManager\",\"data1\": \"1\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAction",
    "group": "Triggers",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "action",
            "description": "<p>Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser, bot, script</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data1",
            "description": "<p>contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data2",
            "description": "<p>integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data3",
            "description": "<p>motionbar[NULL,NULL,WinAppArguments]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data4",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data5",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "data6",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "data7",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "post",
    "url": "/api/triggers/{id}/all_conditions",
    "title": "Creates a new \"AND\"condition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/all_conditions -d '{\"field\": \"name\", \"operator\": \"equal\", \"value\": \"John Doe\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAllCondition",
    "group": "Triggers",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "field",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "operator",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "value",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "post",
    "url": "/api/triggers/{id}/any_conditions",
    "title": "Creates a new \"OR\"condition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/any_conditions -d '{\"field\": \"name\", \"operator\": \"equal\", \"value\": \"John Doe\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnyCondition",
    "group": "Triggers",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "field",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "operator",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "value",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "get",
    "url": "/api/triggers/{id}/actions",
    "title": "Gets Trigger Actions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/actions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getActions",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "get",
    "url": "/api/triggers/{id}/all_conditions",
    "title": "Gets \"AND\" Trigger Conditions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/all_conditions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAllConditions",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "get",
    "url": "/api/triggers/{id}/any_conditions",
    "title": "Gets \"OR\" Trigger Conditions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id}/any_conditions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnyConditions",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "put",
    "url": "/api/triggers/{id}",
    "title": "Update an existing Trigger",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/triggers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateTriggers",
    "group": "Triggers",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trigger/index.js",
    "groupTitle": "Triggers"
  },
  {
    "type": "post",
    "url": "/api/trunks/clone",
    "title": "Clone an existing Trunk",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneTrunks",
    "group": "Trunks",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "post",
    "url": "/api/trunks",
    "title": "Create a new trunk",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Trunks",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"friend\"",
              "\"user\"",
              "\"peer\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"ALLOWED_NOT_SCREENED\"",
              "\"ALLOWED_PASSED_SCREEN\"",
              "\"ALLOWED_FAILED_SCREEN\"",
              "\"ALLOWED\"",
              "\"PROHIB_NOT_SCREENED\"",
              "\"PROHIB_PASSED_SCREEN\"",
              "\"PROHIB_FAILED_SCREEN\"",
              "\"PROHIB\""
            ],
            "optional": true,
            "field": "callingpres",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "permit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "md5secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remotesecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transport",
            "description": "<p>String is deprecated. Please use an Array as [&quot;udp&quot;, &quot;tcp&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rfc2833\"",
              "\"info\"",
              "\"shortinfo\"",
              "\"inband\"",
              "\"auto\""
            ],
            "optional": true,
            "field": "dtmfmode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"nonat\"",
              "\"update\"",
              "\"outgoing\""
            ],
            "optional": true,
            "field": "directmedia",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "directrtpsetup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "directmediapermit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "directmediadeny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nat",
            "description": "<p>String is deprecated. Please use an Array as [&quot;force_rport&quot;, &quot;comedia&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "namedcallgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pickupgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "namedpickupgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "language",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tonezone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disallow",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "allow",
            "description": "<p>String is deprecated. Please use an Array as [&quot;ulaw&quot;, &quot;alaw&quot;, &quot;alaw&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "autoframing",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "insecure",
            "description": "<p>String is deprecated. Please use an Array as [&quot;port&quot;, &quot;invite&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "trustrpid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "trust_id_outbound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"never\""
            ],
            "optional": true,
            "field": "progressinband",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "promiscredir",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "useclientcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "setvar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "amaflags",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "callcounter",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "busylevel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowoverlap",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowsubscribe",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowtransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "ignoresdpversion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "subscribecontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "template",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"always\""
            ],
            "optional": true,
            "field": "videosupport",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "maxcallbitrate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "rfc2833compensate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"accept\"",
              "\"refuse\"",
              "\"originate\""
            ],
            "optional": true,
            "field": "session_timers",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "session_expires",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "session_minse",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"uac\"",
              "\"uas\""
            ],
            "optional": true,
            "field": "session_refresher",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "t38pt_usertpsource",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "regexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fromdomain",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fromuser",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "port",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "qualify",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "keepalive",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultip",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultuser",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtptimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtpholdtimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtpkeepalive",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"pai\""
            ],
            "optional": true,
            "field": "sendrpid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "outboundproxy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackextension",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timert1",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timerb",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "qualifyfreq",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactpermit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactdeny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactacl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "unsolicited_mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "use_q850_reason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "maxforwards",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "encryption",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "avpf",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "force_avp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "icesupport",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "dtlsenable",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"fingerprint\"",
              "\"certificate\""
            ],
            "optional": true,
            "field": "dtlsverify",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dtlsrekey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscertfile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlsprivatekey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscipher",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscafile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscapath",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"active\"",
              "\"passive\"",
              "\"actpass\""
            ],
            "optional": true,
            "field": "dtlssetup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlsfingerprint",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "usereqphone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "recordonfeature",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "recordofffeature",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "call_limit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "registertrying",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "subscribemwi",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "vmexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mohinterpret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mohsuggest",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "parkinglot",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"nonat\"",
              "\"update\"",
              "\"update,nonat\""
            ],
            "optional": true,
            "field": "canreinvite",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "registry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "otherFields",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": false,
            "field": "active",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "t38pt_udptl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "delete",
    "url": "/api/trunks/{id}",
    "title": "Deletes a trunk",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "Delete",
    "group": "Trunks",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "get",
    "url": "/api/trunks",
    "title": "Gets a list of Trunks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTrunks",
    "group": "Trunks",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/trunks?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/trunks?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/trunks?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/trunks?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/trunks?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "get",
    "url": "/api/trunks/{id}",
    "title": "Gets a single Trunk",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTrunks",
    "group": "Trunks",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "put",
    "url": "/api/trunks/{id}",
    "title": "Update an existing trunk",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Update",
    "group": "Trunks",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/trunk/index.js",
    "groupTitle": "Trunks"
  },
  {
    "type": "post",
    "url": "/api/userProfile/resources",
    "title": "Creates a new User Profile Resource",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "resourceId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "type",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "delete",
    "url": "/api/userProfile/resources/{id}",
    "title": "Deletes a User Profile Resource",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "get",
    "url": "/api/userProfile/resources/describe",
    "title": "Gets table info about User Profile Resources",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "get",
    "url": "/api/userProfile/resources",
    "title": "Gets a list of User Profile Resources",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfile/resources?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfile/resources?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfile/resources?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfile/resources?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfile/resources?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "get",
    "url": "/api/userProfile/resources/{id}",
    "title": "Gets a single User Profile Resource",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "put",
    "url": "/api/userProfile/resources/{id}",
    "title": "Update an existing User Profile Resource",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/resources/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateUser_Profile_Resources",
    "group": "User_Profile_Resources",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileResource/index.js",
    "groupTitle": "User_Profile_Resources"
  },
  {
    "type": "post",
    "url": "/api/userProfile/sections",
    "title": "Creates a new User Profile Section",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "category",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "sectionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "enabled",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "autoAssociation",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "crudPermissions",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "delete",
    "url": "/api/userProfile/sections/{id}",
    "title": "Deletes a User Profile Section",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "get",
    "url": "/api/userProfile/sections/describe",
    "title": "Gets table info about User Profile Sections",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "get",
    "url": "/api/userProfile/sections",
    "title": "Gets a list of User Profile Sections",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfile/sections?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfile/sections?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfile/sections?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfile/sections?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfile/sections?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "get",
    "url": "/api/userProfile/sections/{id}",
    "title": "Gets a single User Profile Section",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "put",
    "url": "/api/userProfile/sections/{id}",
    "title": "Update an existing User Profile Section",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfile/sections/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateUser_Profile_Sections",
    "group": "User_Profile_Sections",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfileSection/index.js",
    "groupTitle": "User_Profile_Sections"
  },
  {
    "type": "post",
    "url": "/api/userProfiles/{id}/resources",
    "title": "Add resources' permissions to User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/resources -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddResources",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "post",
    "url": "/api/userProfiles/{id}/sections",
    "title": "Add sections' permissions to User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/sections -d '[{\"sectionId\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSections",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "post",
    "url": "/api/userProfiles/clone",
    "title": "Clone an existing User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "post",
    "url": "/api/userProfiles",
    "title": "Creates a new User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateUser_Profiles",
    "group": "User_Profiles",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "crudPermissions",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "delete",
    "url": "/api/userProfiles/{id}",
    "title": "Deletes a User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "get",
    "url": "/api/userProfiles/describe",
    "title": "Gets table info about User Profiles",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "get",
    "url": "/api/userProfiles/{id}/resources?section={section}",
    "title": "Get Resources assigned to a Section",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/resources?section={section} -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetResources",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "get",
    "url": "/api/userProfiles/{id}/sections",
    "title": "Get sections associated to a User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/sections -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetSections",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "get",
    "url": "/api/userProfiles",
    "title": "Gets a list of User Profiles",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfiles?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfiles?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfiles?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfiles?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfiles?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "delete",
    "url": "/api/userProfiles/{id}/resources",
    "title": "Removes resources' permissions from User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/resources?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveResources",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "delete",
    "url": "/api/userProfiles/{id}/sections",
    "title": "Removes sections' permissions from User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id}/sections?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSections",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "get",
    "url": "/api/userProfiles/{id}",
    "title": "Gets a single User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "put",
    "url": "/api/userProfiles/{id}",
    "title": "Update an existing User Profile",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/userProfiles/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateUser_Profiles",
    "group": "User_Profiles",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/userProfile/index.js",
    "groupTitle": "User_Profiles"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/chat_interactions",
    "title": "Add chat interaction tabs to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddChatInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/chat_websites",
    "title": "Add a Chat Website to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat_websites -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddChatWebsites",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/contacts",
    "title": "Add contacts to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/contacts -d '{\"ids\": [1,2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddContacts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/fax_accounts",
    "title": "Add a Fax Account to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddFaxAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/fax_interactions",
    "title": "Add fax interaction tabs to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddFaxInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/mail_accounts",
    "title": "Add a Mail Account to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddMailAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/mail_interactions",
    "title": "Add mail interaction tabs to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddMailInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/openchannel_accounts",
    "title": "Add a Open Channel Account to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddOpenchannelAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/openchannel_interactions",
    "title": "Add openchannel interaction tabs to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddOpenchannelInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/queues",
    "title": "Add queues to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/queues -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddQueues",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/sms_accounts",
    "title": "Add a Sms Account to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSmsAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/sms_interactions",
    "title": "Add sms interaction tabs to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSmsInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/square_projects",
    "title": "Add a Square Project to a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/square_projects -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSquareProjects",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/teams",
    "title": "Add teams to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/create_many",
    "title": "Creates many Users",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "BulkCreateUsers",
    "group": "Users",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": "<p>The name of the user</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "fullname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "alias",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"admin\"",
              "\"user\"",
              "\"agent\"",
              "\"telephone\""
            ],
            "optional": false,
            "field": "role",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "provider",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "internal",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "salt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mobile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "address",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "zipcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "userpic",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "city",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "country",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "online",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastLoginAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "voicePause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "chatPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mailPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "faxPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "smsPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "openchannelPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pauseType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastPauseAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "chatCapacity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mailCapacity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "faxCapacity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "smsCapacity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "openchannelCapacity",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarAutoAnswer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableSettings",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "phoneBarListenPort",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "phoneBarExpires",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarRemoteControl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "phoneBarRemoteControlPort",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableRecording",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarRingInUse",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "chanspy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "ipaddr",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "port",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "regseconds",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fullcontact",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "regserver",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "useragent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "lastms",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"friend\"",
              "\"user\"",
              "\"peer\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"ALLOWED_NOT_SCREENED\"",
              "\"ALLOWED_PASSED_SCREEN\"",
              "\"ALLOWED_FAILED_SCREEN\"",
              "\"ALLOWED\"",
              "\"PROHIB_NOT_SCREENED\"",
              "\"PROHIB_PASSED_SCREEN\"",
              "\"PROHIB_FAILED_SCREEN\"",
              "\"PROHIB\""
            ],
            "optional": true,
            "field": "callingpres",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "deny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "permit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "md5secret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remotesecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transport",
            "description": "<p>String is deprecated. Please use an Array as [&quot;udp&quot;, &quot;tcp&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rfc2833\"",
              "\"info\"",
              "\"shortinfo\"",
              "\"inband\"",
              "\"auto\""
            ],
            "optional": true,
            "field": "dtmfmode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"nonat\"",
              "\"update\"",
              "\"outgoing\""
            ],
            "optional": true,
            "field": "directmedia",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "directrtpsetup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "directmediapermit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "directmediadeny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nat",
            "description": "<p>String is deprecated. Please use an Array as [&quot;force_rport&quot;, &quot;comedia&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "namedcallgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pickupgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "namedpickupgroup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "language",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tonezone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "disallow",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "allow",
            "description": "<p>String is deprecated. Please use an Array as [&quot;ulaw&quot;, &quot;alaw&quot;, &quot;gsm&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "autoframing",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "insecure",
            "description": "<p>String is deprecated. Please use an Array as [&quot;port&quot;, &quot;invite&quot;]</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "trustrpid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "trust_id_outbound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"never\""
            ],
            "optional": true,
            "field": "progressinband",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "promiscredir",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "useclientcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "setvar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "amaflags",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "callcounter",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "busylevel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowoverlap",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowsubscribe",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "allowtransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "ignoresdpversion",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "subscribecontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "template",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"always\""
            ],
            "optional": true,
            "field": "videosupport",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "maxcallbitrate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "rfc2833compensate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"accept\"",
              "\"refuse\"",
              "\"originate\""
            ],
            "optional": true,
            "field": "session_timers",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "session_expires",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "session_minse",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"uac\"",
              "\"uas\""
            ],
            "optional": true,
            "field": "session_refresher",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "t38pt_usertpsource",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "regexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fromdomain",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fromuser",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "qualify",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "keepalive",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultip",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultuser",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtptimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtpholdtimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rtpkeepalive",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "sendrpid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "outboundproxy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callbackextension",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timert1",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timerb",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "qualifyfreq",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactpermit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactdeny",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "contactacl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "unsolicited_mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "use_q850_reason",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "maxforwards",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "encryption",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "avpf",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "force_avp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "icesupport",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "dtlsenable",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"fingerprint\"",
              "\"certificate\""
            ],
            "optional": true,
            "field": "dtlsverify",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dtlsrekey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscertfile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlsprivatekey",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscipher",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscafile",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlscapath",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"active\"",
              "\"passive\"",
              "\"actpass\""
            ],
            "optional": true,
            "field": "dtlssetup",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dtlsfingerprint",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "usereqphone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "recordonfeature",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "recordofffeature",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "call_limit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "registertrying",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "subscribemwi",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "vmexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mohinterpret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mohsuggest",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "parkinglot",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"nonat\"",
              "\"update\"",
              "\"update,nonat\""
            ],
            "optional": true,
            "field": "canreinvite",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "loginInPause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "resetPasswordToken",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "resetPasswordExpires",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "showWebBar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "permissions",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phoneBarUnconditionalNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phoneBarNoReplyNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phoneBarBusyNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarUnconditional",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarNoReply",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarBusy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarDnd",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarUnansweredCallBadge",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableDtmfTone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "phoneBarAutoAnswerDelay",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "extensionMonitor",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "crudPermissions",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "rtcp_mux",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "allowmessenger",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phoneBarOutboundProxy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "passwordResetAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableJaws",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableScreenRecordingByAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "phoneBarEnableVideoRecording",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarEnableAutomaticScreenRecording",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "phoneBarPrefixRequired",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "hotdesk",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interface",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "privacyEnabled",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "apiKeyNonce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "apiKeyIat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "screenrecording",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "blocked",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "blockedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "loginAttempts",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "disabled",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "put",
    "url": "/api/users/{id}/password",
    "title": "Change user password",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/password -d '{\"oldPassword\": \"1234\", \"newPassword\": \"5678\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "ChangePwd",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users",
    "title": "Create a new user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/api_key",
    "title": "Create a new API access key for the user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/:id/api_key -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateApiKey",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}",
    "title": "Deletes a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "Delete",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/describe",
    "title": "Gets table info about Users",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeUsers",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/agents",
    "title": "GetAgents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/agents -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/api_key",
    "title": "Get the API access key for the user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/:id/api_key -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetApiKey",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/groups",
    "title": "GetChatGroups",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/groups -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetChatGroups",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/chat/interactions",
    "title": "GetChatInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetChatInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/chat_websites",
    "title": "GetChatWebsites",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat_websites -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetChatWebsites",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/contacts",
    "title": "GetContacts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/contacts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetContacts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/fax_accounts",
    "title": "GetFaxAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax_accounts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetFaxAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/fax/interactions",
    "title": "GetFaxInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetFaxInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/lists",
    "title": "GetLists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/lists -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetLists",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/mail_accounts",
    "title": "GetMailAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail_accounts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetMailAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/mail/interactions",
    "title": "GetMailInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetMailInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/openchannel_accounts",
    "title": "GetOpenchannelAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetOpenchannelAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/openchannel/interactions",
    "title": "GetOpenchannelInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetOpenchannelInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/prefixes",
    "title": "GetPrefixes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/prefixes -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetPrefixes",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/queues?channel={channel}",
    "title": "Gets Queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/queues/?channel={channel} -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/recordings",
    "title": "GetRecordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/recordings -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetRecordings",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/scheduled_calls",
    "title": "GetScheduledCalls",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/scheduled_calls -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetScheduledCalls",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/screen_recordings",
    "title": "GetScreenRecordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/screen_recordings -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetScreenRecordings",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/sms_accounts",
    "title": "GetSmsAccounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms_accounts -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetSmsAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/sms/interactions",
    "title": "GetSmsInteractions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms/interactions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetSmsInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/square_projects",
    "title": "GetSquareProjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/square_projects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetSquareProjects",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/teams",
    "title": "GetTeams",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/teams -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users",
    "title": "Gets a list of Users",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetUsers",
    "group": "Users",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/users?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/users?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/users?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/users?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/users?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/queues_rt",
    "title": "GetVoiceQueuesRt",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/queues_rt -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetVoiceQueuesRt",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/login",
    "title": "Login",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/login  -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Login",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/logout",
    "title": "Logout",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/logout -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Logout",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/pause",
    "title": "Pause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/pause -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Pause",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/api_key",
    "title": "Remove API access key for the user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/:id/api_key -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveApiKey",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/chat_interactions",
    "title": "Removes interactions from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveChatInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/chat_websites",
    "title": "Removes a Chat Website from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/chat_websites?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveChatWebsites",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/fax_accounts",
    "title": "Removes a Fax Account from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveFaxAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/fax_interactions",
    "title": "Removes interactions from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/fax_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveFaxInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/mail_accounts",
    "title": "Removes a Mail Account from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveMailAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/mail_interactions",
    "title": "Removes interactions from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/mail_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveMailInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/openchannel_accounts",
    "title": "Removes a Open Channel Account from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveOpenchannelAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/openchannel_interactions",
    "title": "Removes openchannel interactions from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/openchannel_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveOpenchannelInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/queues",
    "title": "Remove queues to an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/queues?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveQueues",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/sms_accounts",
    "title": "Removes a Sms Account from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSmsAccounts",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/sms_interactions",
    "title": "Removes interactions from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/sms_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSmsInteractions",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/square_projects",
    "title": "Removes a Square Project from a user",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/square_projects?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSquareProjects",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "delete",
    "url": "/api/users/{id}/teams",
    "title": "Removes teams from an agent",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/teams?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTeams",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}",
    "title": "Gets a single User",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowUsers",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/unpause",
    "title": "Unpause",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/unpause -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Unpause",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/whoami",
    "title": "WhoAmI",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/whoami -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "WhoAmI",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/users/{id}/avatar",
    "title": "Add avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAvatar",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "get",
    "url": "/api/users/{id}/avatar",
    "title": "Get avatar",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id}/avatar -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAvatar",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "put",
    "url": "/api/users/{id}",
    "title": "Update an existing User",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/users/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateUsers",
    "group": "Users",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/user/index.js",
    "groupTitle": "Users"
  },
  {
    "type": "post",
    "url": "/api/variables",
    "title": "Creates a new Variable",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/variables -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateVariables",
    "group": "Variables",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/variable/index.js",
    "groupTitle": "Variables"
  },
  {
    "type": "delete",
    "url": "/api/variables/{id}",
    "title": "Deletes a Variable",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/variables/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteVariables",
    "group": "Variables",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/variable/index.js",
    "groupTitle": "Variables"
  },
  {
    "type": "get",
    "url": "/api/variables",
    "title": "Gets a list of Variables",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/variables -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVariables",
    "group": "Variables",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/variables?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/variables?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/variables?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/variables?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/variables?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/variable/index.js",
    "groupTitle": "Variables"
  },
  {
    "type": "get",
    "url": "/api/variables/{id}",
    "title": "Gets a single Variable",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/variables/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowVariables",
    "group": "Variables",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/variable/index.js",
    "groupTitle": "Variables"
  },
  {
    "type": "put",
    "url": "/api/variables/{id}",
    "title": "Update an existing Variable",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/variables/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateVariables",
    "group": "Variables",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/variable/index.js",
    "groupTitle": "Variables"
  },
  {
    "type": "get",
    "url": "/api/version/fetch",
    "title": "Fetch git version",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version/fetch -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "FetchVersion",
    "group": "Version",
    "description": "<p>Motion run the following command: git fetch origin master</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/version",
    "title": "Gets version",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVersion",
    "group": "Version",
    "description": "<p>Motion returns the current and latest motion version.</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/version/migrations",
    "title": "Launch database migrations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version/migrations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "MigrateVersion",
    "group": "Version",
    "description": "<p>Motion launch the database migrations, according to the application version</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/version/pull",
    "title": "Pull git version",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version/pull -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "PullVersion",
    "group": "Version",
    "description": "<p>Motion run the following command: git pull</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/version/reset",
    "title": "Reset git version",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version/reset -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ResetVersion",
    "group": "Version",
    "description": "<p>Motion run the following command: git reset --hard FETCH_HEAD</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/version/restart",
    "title": "Restart motion2 after update",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/version/restart -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "RestartVersion",
    "group": "Version",
    "description": "<p>Motion run the following command: pm2 restart motion</p>",
    "version": "0.0.0",
    "filename": "server/api/version/index.js",
    "groupTitle": "Version"
  },
  {
    "type": "get",
    "url": "/api/voice/agents/reports/describe",
    "title": "Gets table info about Agent Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/agents/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAgent_Reports",
    "group": "Voice_Agent_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceAgentReport/index.js",
    "groupTitle": "Voice_Agent_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/agents/reports",
    "title": "Gets a list of Agent Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/agents/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAgent_Reports",
    "group": "Voice_Agent_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/agents/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/agents/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/agents/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/agents/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/agents/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceAgentReport/index.js",
    "groupTitle": "Voice_Agent_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/agents/reports/{id}",
    "title": "Gets a single Agent Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/agents/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAgent_Reports",
    "group": "Voice_Agent_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceAgentReport/index.js",
    "groupTitle": "Voice_Agent_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/calls/reports/describe",
    "title": "Gets table info about Call Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/calls/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeCall_Reports",
    "group": "Voice_Call_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceCallReport/index.js",
    "groupTitle": "Voice_Call_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/calls/reports",
    "title": "Gets a list of Call Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/calls/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCall_Reports",
    "group": "Voice_Call_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/calls/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/calls/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/calls/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/calls/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/calls/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceCallReport/index.js",
    "groupTitle": "Voice_Call_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/calls/reports/{id}",
    "title": "Gets a single Call Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/calls/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCall_Reports",
    "group": "Voice_Call_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceCallReport/index.js",
    "groupTitle": "Voice_Call_Reports"
  },
  {
    "type": "put",
    "url": "/api/voice/calls/reports/{id}",
    "title": "Update a single cdr",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/calls/reports/{id} -d '{\"userDispositio\": \"OK\"}' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "Voice_Call_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceCallReport/index.js",
    "groupTitle": "Voice_Call_Reports"
  },
  {
    "type": "post",
    "url": "/api/voice/chanspy",
    "title": "Creates a new ChanSpy",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/chanspy -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateChanSpy",
    "group": "Voice_ChanSpy",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "prefix",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "options",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "auth",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "record",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "recordingFormat",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceChanSpy/index.js",
    "groupTitle": "Voice_ChanSpy"
  },
  {
    "type": "delete",
    "url": "/api/voice/chanspy/{id}",
    "title": "Deletes a ChanSpy",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/chanspy/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteChanSpy",
    "group": "Voice_ChanSpy",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceChanSpy/index.js",
    "groupTitle": "Voice_ChanSpy"
  },
  {
    "type": "get",
    "url": "/api/voice/chanspy",
    "title": "Gets a list of ChanSpy",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/chanspy -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetChanSpy",
    "group": "Voice_ChanSpy",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/chanspy?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/chanspy?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/chanspy?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/chanspy?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/chanspy?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceChanSpy/index.js",
    "groupTitle": "Voice_ChanSpy"
  },
  {
    "type": "get",
    "url": "/api/voice/chanspy/{id}",
    "title": "Gets a single ChanSpy",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/chanspy/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowChanSpy",
    "group": "Voice_ChanSpy",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceChanSpy/index.js",
    "groupTitle": "Voice_ChanSpy"
  },
  {
    "type": "put",
    "url": "/api/voice/chanspy/{id}",
    "title": "Update an existing ChanSpy",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/chanspy/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateChanSpy",
    "group": "Voice_ChanSpy",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceChanSpy/index.js",
    "groupTitle": "Voice_ChanSpy"
  },
  {
    "type": "post",
    "url": "/api/voice/contexts",
    "title": "Create a new context",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/contexts -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "Create",
    "group": "Voice_Contexts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "defaultEntry",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceContext/index.js",
    "groupTitle": "Voice_Contexts"
  },
  {
    "type": "delete",
    "url": "/api/voice/contexts/{id}",
    "title": "Deletes a context",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "Delete",
    "group": "Voice_Contexts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceContext/index.js",
    "groupTitle": "Voice_Contexts"
  },
  {
    "type": "get",
    "url": "/api/voice/contexts",
    "title": "Gets a list of Contexts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/contexts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetContexts",
    "group": "Voice_Contexts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/contexts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/contexts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/contexts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/contexts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/contexts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceContext/index.js",
    "groupTitle": "Voice_Contexts"
  },
  {
    "type": "get",
    "url": "/api/voice/contexts/{id}",
    "title": "Gets a single Context",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowContexts",
    "group": "Voice_Contexts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceContext/index.js",
    "groupTitle": "Voice_Contexts"
  },
  {
    "type": "put",
    "url": "/api/voice/contexts/{id}",
    "title": "Update an existing context",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Update",
    "group": "Voice_Contexts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceContext/index.js",
    "groupTitle": "Voice_Contexts"
  },
  {
    "type": "get",
    "url": "/api/voice/dials/reports/describe",
    "title": "Gets table info about Dial Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/dials/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeDial_Reports",
    "group": "Voice_Dial_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceDialReport/index.js",
    "groupTitle": "Voice_Dial_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/dials/reports",
    "title": "Gets a list of Dial Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/dials/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetDial_Reports",
    "group": "Voice_Dial_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/dials/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/dials/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/dials/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/dials/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/dials/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceDialReport/index.js",
    "groupTitle": "Voice_Dial_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/dials/reports/{id}",
    "title": "Gets a single Dial Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/dials/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowDial_Reports",
    "group": "Voice_Dial_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceDialReport/index.js",
    "groupTitle": "Voice_Dial_Reports"
  },
  {
    "type": "delete",
    "url": "/api/voice/extensions/{id}",
    "title": "Deletes a Extension",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteExtensions",
    "group": "Voice_Extensions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "get",
    "url": "/api/voice/extensions",
    "title": "Gets a list of Extensions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetExtensions",
    "group": "Voice_Extensions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/extensions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/extensions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/extensions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/extensions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/extensions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "get",
    "url": "/api/voice/extensions/{id}",
    "title": "Gets a single Extension",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowExtensions",
    "group": "Voice_Extensions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "post",
    "url": "/api/voice/extensions",
    "title": "Create new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions/{id}/applications -d '[{\"app\": \"Set\", \"appdata\": \"CALLERDNID=${CALLER(dnid)}\"}]' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Voice_Extensions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "post",
    "url": "/api/voice/extensions",
    "title": "Create an extension",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions -d '{\"exten\": \"12345\", \"context\": \"from-custom\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "create",
    "group": "Voice_Extensions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "put",
    "url": "/api/voice/extensions/{id}",
    "title": "Update an extension",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/extensions/{id} -d '{\"exten\": \"12345\", \"context\": \"from-custom\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "update",
    "group": "Voice_Extensions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceExtension/index.js",
    "groupTitle": "Voice_Extensions"
  },
  {
    "type": "post",
    "url": "/api/voice/mohs",
    "title": "Create a new a new MOH",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs -d '{\"name\": \"xmas_musics\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddMoh",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "post",
    "url": "/api/voice/mohs/{id}/sounds",
    "title": "Add sound to MOH",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds -d '{\"id\": 1}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddSound",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "delete",
    "url": "/api/voice/mohs/{id}",
    "title": "Deletes an MOH",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DestroyMoh",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "get",
    "url": "/api/voice/mohs",
    "title": "Gets a list of Music On Holds",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMusic_On_Holds",
    "group": "Voice_MOHs",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mohs?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mohs?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mohs?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mohs?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mohs?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "get",
    "url": "/api/voice/mohs/{id}/sounds",
    "title": "Gets sounds from MOH",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "GetSounds",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "delete",
    "url": "/api/voice/mohs/{id}/sounds/{id2}",
    "title": "Remove sound from MOH",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds/{id2} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveSound",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "get",
    "url": "/api/voice/mohs/{id}",
    "title": "Gets a single Music On Hold",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMusic_On_Holds",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "put",
    "url": "/api/voice/mohs/{id}",
    "title": "Update an existing Music On Hold",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mohs/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMusic_On_Holds",
    "group": "Voice_MOHs",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMusicOnHold/index.js",
    "groupTitle": "Voice_MOHs"
  },
  {
    "type": "post",
    "url": "/api/voice/mails",
    "title": "Creates a new Mail",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMails",
    "group": "Voice_Mails",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "customer_id",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "mailbox",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "fullname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "email",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "pager",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tz",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "attach",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "saycid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callback",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "review",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "operator",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "envelope",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "sayduration",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "saydurationm",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "sendvoicemail",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "delete",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "nextaftercmd",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "forcename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "forcegreetings",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": false,
            "field": "hidefromdir",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "stamp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "emailsubject",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "emailbody",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "maxsecs",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "maxmsg",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "delete",
    "url": "/api/voice/mails/{id}",
    "title": "Deletes a Mail",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMails",
    "group": "Voice_Mails",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "get",
    "url": "/api/voice/mails",
    "title": "Gets a list of Mails",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMails",
    "group": "Voice_Mails",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mails?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mails?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mails?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mails?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mails?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "get",
    "url": "/api/voice/mails/{id}",
    "title": "Gets a single Mail",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMails",
    "group": "Voice_Mails",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "get",
    "url": "/api/voice/mails/{id}/messages",
    "title": "Gets voice mail messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Voice_Mails",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "put",
    "url": "/api/voice/mails/{id}",
    "title": "Update an existing Mail",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMails",
    "group": "Voice_Mails",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMail/index.js",
    "groupTitle": "Voice_Mails"
  },
  {
    "type": "post",
    "url": "/api/voice/mails/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Voice_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "msgnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dir",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "macrocontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "callerid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "origtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "duration",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailboxuser",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "mailboxcontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Blob",
            "optional": true,
            "field": "recording",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "flag",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "msg_id",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "stamp",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "delete",
    "url": "/api/voice/mails/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Voice_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "get",
    "url": "/api/voice/mails/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Voice_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mails/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mails/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mails/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mails/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mails/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "get",
    "url": "/api/voice/mails/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Voice_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "get",
    "url": "voice/mails/messages/{id}/download",
    "title": "Download Voice Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}voice/mails/messages/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Voice_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "put",
    "url": "/api/voice/mails/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/mails/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Voice_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceMailMessage/index.js",
    "groupTitle": "Voice_Messages"
  },
  {
    "type": "post",
    "url": "/api/voice/prefixes/{id}/users",
    "title": "Add agents to a prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "delete",
    "url": "/api/voice/prefixes/{id}",
    "title": "Deletes a Prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeletePrefixes",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "get",
    "url": "/api/voice/prefixes/describe",
    "title": "Gets table info about Prefixes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribePrefixes",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "get",
    "url": "/api/voice/prefixes/{id}/users",
    "title": "Gets agents from prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "get",
    "url": "/api/voice/prefixes",
    "title": "Gets a list of Prefixes",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetPrefixes",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/prefixes?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/prefixes?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/prefixes?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/prefixes?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/prefixes?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "delete",
    "url": "/api/voice/prefixes/{id}/users",
    "title": "Removes agents from a prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "get",
    "url": "/api/voice/prefixes/{id}",
    "title": "Gets a single Prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowPrefixes",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "put",
    "url": "/api/voice/prefixes/{id}",
    "title": "Update an existing prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "Update",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "post",
    "url": "/api/voice/prefixes",
    "title": "Create a prefix",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/prefixes -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "create",
    "group": "Voice_Prefixes",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voicePrefix/index.js",
    "groupTitle": "Voice_Prefixes"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/reports/describe",
    "title": "Gets table info about Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/reports/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueue_Reports",
    "group": "Voice_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueueReport/index.js",
    "groupTitle": "Voice_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/reports",
    "title": "Gets a list of Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueue_Reports",
    "group": "Voice_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/queues/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/queues/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/queues/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/queues/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/queues/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueueReport/index.js",
    "groupTitle": "Voice_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/reports/{id}",
    "title": "Gets a single Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueue_Reports",
    "group": "Voice_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueueReport/index.js",
    "groupTitle": "Voice_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/reports/index",
    "title": "Get Voice Queues Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/reports/index -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getVoiceQueuesReport",
    "group": "Voice_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueueReport/index.js",
    "groupTitle": "Voice_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/voice/queues/{id}/users",
    "title": "Add agents to queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/queues/{id}/blacklists",
    "title": "Add blacklists to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddBlackLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/queues/{id}/lists",
    "title": "Add lists to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/lists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/queues/{id}/teams",
    "title": "Add teams to queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/queues/clone",
    "title": "Clone an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CloneQueues",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Voice_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"inbound\"",
              "\"outbound\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "musiconhold",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "announce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rr\"",
              "\"ringall\"",
              "\"leastrecent\"",
              "\"fewestcalls\"",
              "\"random\"",
              "\"rrmemory\"",
              "\"linear\"",
              "\"wrandom\"",
              "\"rrordered\""
            ],
            "optional": false,
            "field": "strategy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "servicelevel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "penaltymemberslimit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "retry",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "timeoutpriority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "weight",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "wrapuptime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "autofill",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"all\""
            ],
            "optional": true,
            "field": "autopause",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "autopausedelay",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "autopausebusy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "autopauseunavail",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "maxlen",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "setinterfacevar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "setqueueentryvar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "setqueuevar",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "eventmemberstatus",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membermacro",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membergosub",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "announce_frequency",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "min_announce_frequency",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "periodic_announce_frequency",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "random_periodic_announce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "relative_periodic_announce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\"",
              "\"once\""
            ],
            "optional": true,
            "field": "announce_holdtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "announce_position",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "announce_to_first_user",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "announce_position_limit",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"0\"",
              "\"5\"",
              "\"10\"",
              "\"15\"",
              "\"20\"",
              "\"30\""
            ],
            "optional": true,
            "field": "announce_round_seconds",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "monitor_format",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "monitor_type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_youarenext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_thereare",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_callswaiting",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_holdtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_minute",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_minutes",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_seconds",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_thankyou",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_reporthold",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_quantity1",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_quantity2",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_periodic_announce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue_less_than",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "periodic_announce",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinempty",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leavewhenempty",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "reportholdtime",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "ringinuse",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "memberdelay",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"yes\"",
              "\"no\""
            ],
            "optional": true,
            "field": "timeoutrestart",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "defaultrule",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "acw",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "acwTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialActive",
            "description": "<p>Active/Disactive Campaign</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"preview\"",
              "\"progressive\"",
              "\"power\"",
              "\"predictive\"",
              "\"booked\""
            ],
            "optional": true,
            "field": "dialMethod",
            "description": "<p>Dial Method.</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialLimitChannel",
            "description": "<p>Max 9999 channels, 0 means unlimited.</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialLimitQueue",
            "description": "<p>Max 9999 member in queue(min:1, max:9999), 0 means unlimited.</p>"
          },
          {
            "group": "Body",
            "type": "Float",
            "optional": true,
            "field": "dialPowerLevel",
            "description": "<p>Power Level: Calls for agents (min:1, max:10).</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"agentBusyFactor\"",
              "\"dropRate\""
            ],
            "optional": true,
            "field": "dialPredictiveOptimization",
            "description": "<p>Only for predictive method.</p>"
          },
          {
            "group": "Body",
            "type": "Float",
            "optional": true,
            "field": "dialPredictiveOptimizationPercentage",
            "description": "<p>Predictive Optimization Percentage (min: 1, max: 95)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialPredictiveInterval",
            "description": "<p>Interval Predictive Minutes (min:5 max:30)</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialOriginateCallerIdName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialOriginateCallerIdNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialOriginateTimeout",
            "description": "<p>Originate Timeout Seconds (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialQueueOptions",
            "description": "<p>https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialQueueTimeout",
            "description": "<p>Queue Timeout Seconds (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialQueueProject",
            "description": "<p>AGI queue option (use: agi://127.0.0.1/square,&lt;project_name&gt;)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCongestionMaxRetry",
            "description": "<p>#Congestion Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCongestionRetryFrequency",
            "description": "<p>Congestion Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialBusyMaxRetry",
            "description": "<p>#Busy Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialBusyRetryFrequency",
            "description": "<p>Busy Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoAnswerMaxRetry",
            "description": "<p>#NoAnswer Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoAnswerRetryFrequency",
            "description": "<p>NoAnswer Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialGlobalMaxRetry",
            "description": "<p>#Global Max Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialTimezone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialGlobalInterval",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialPrefix",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"always\"",
              "\"never\"",
              "\"onlyIfOpen\""
            ],
            "optional": true,
            "field": "dialCheckDuplicateType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialAMDActive",
            "description": "<p>Active/Disactive AMD</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDInitialSilence",
            "description": "<p>#AMD Initial Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDGreeting",
            "description": "<p>#AMD Greeting</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDAfterGreetingSilence",
            "description": "<p>#AMD After Greeting Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDTotalAnalysisTime",
            "description": "<p>#AMD Total Analysis Time</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMinWordLength",
            "description": "<p>#AMD Min Word Length</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDBetweenWordsSilence",
            "description": "<p>#AMD Between Words Silence</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMaximumNumberOfWords",
            "description": "<p>#AMD Maximum Number Of Words</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDSilenceThreshold",
            "description": "<p>#AMD Silence Threshold (min:0, max:32767)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAMDMaximumWordLength",
            "description": "<p>#AMD Maximum Word Length</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialRecallMeTimeout",
            "description": "<p>#RecallMe Timeout (min:1)</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialRecallInQueue",
            "description": "<p>Active/Disactive Recall In Queue</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"DESC\"",
              "\"ASC\""
            ],
            "optional": true,
            "field": "dialOrderByScheduledAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dialQueueProject2",
            "description": "<p>AGI queue option (use: agi://127.0.0.1/square,&lt;project_name&gt;)</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialAgiAfterHangupClient",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "dialAgiAfterHangupAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialRandomLastDigitCallerIdNumber",
            "description": "<p>Random Last Digit (min:1, max:15)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialCutDigit",
            "description": "<p>Cut Digit (min:1, max:15)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoSuchNumberMaxRetry",
            "description": "<p>#NoSuchNumber Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialNoSuchNumberRetryFrequency",
            "description": "<p>NoSuchNumber Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialDropMaxRetry",
            "description": "<p>#Drop Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialDropRetryFrequency",
            "description": "<p>Drop Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAbandonedMaxRetry",
            "description": "<p>#Abandoned Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAbandonedRetryFrequency",
            "description": "<p>Abandoned Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialMachineMaxRetry",
            "description": "<p>#Machine Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialMachineRetryFrequency",
            "description": "<p>Machine Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAgentRejectMaxRetry",
            "description": "<p>#AgentReject Retry (min:1, max:999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialAgentRejectRetryFrequency",
            "description": "<p>AgentReject Retry Frequency Minutes (min:1, max:99999)</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialPredictiveIntervalMaxThreshold",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "dialPredictiveIntervalMinThreshold",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "delete",
    "url": "/api/voice/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/blacklists",
    "title": "Get queue blacklists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetBlackLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/finals",
    "title": "Gets queue hopper finals",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_finals -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperFinals",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/hopper_histories",
    "title": "Gets queue hopper histories",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_histories -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHopperHistories",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/hoppers",
    "title": "Gets queue hoppers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/hoppers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetHoppers",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/lists",
    "title": "Get queue lists",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/lists -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/members",
    "title": "Gets queue members",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/members -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Voice_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/teams",
    "title": "Gets queue team",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "delete",
    "url": "/api/voice/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "delete",
    "url": "/api/voice/queues/{id}/blacklists",
    "title": "Remove blacklists from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveBlackLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "delete",
    "url": "/api/voice/queues/{id}/lists",
    "title": "Remove lists from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/lists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveLists",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "get",
    "url": "/api/voice/queues/{id}/blacks",
    "title": "Gets queue hopper blacks",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_black -v -u {name}:{password}  -X GET",
        "type": "json"
      }
    ],
    "name": "getHopperBlacks",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "put",
    "url": "/api/voice/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Voice_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueue/index.js",
    "groupTitle": "Voice_Queues"
  },
  {
    "type": "post",
    "url": "/api/voice/recordings",
    "title": "Creates a new Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateRecordings",
    "group": "Voice_Recordings",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "format",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "membername",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "calleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "connectedlinenum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "connectedlinename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "rating",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "queue",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "userDisposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "createdAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "updatedAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "get",
    "url": "/api/voice/recordings/describe",
    "title": "Gets table info about Recordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeRecordings",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "get",
    "url": "/api/voice/recordings",
    "title": "Gets a list of Recordings",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetRecordings",
    "group": "Voice_Recordings",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "get",
    "url": "/api/voice/recordings/{id}",
    "title": "Gets a single Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowRecordings",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "delete",
    "url": "/api/voice/recordings/{id}",
    "title": "Delete voice recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "destroy",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "get",
    "url": "/api/voice/recordings/{id}/download",
    "title": "Download Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "get",
    "url": "/api/voice/recordings/{id}/downloads",
    "title": "Download Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/{id}/downloads -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "downloads",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "put",
    "url": "/api/voice/recordings/{id}",
    "title": "Update an existing Recording",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateRecordings",
    "group": "Voice_Recordings",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceRecording/index.js",
    "groupTitle": "Voice_Recordings"
  },
  {
    "type": "post",
    "url": "/api/voice/transfers/reports",
    "title": "Creates a new Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateTransfer_Reports",
    "group": "Voice_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"blind\"",
              "\"attended\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "result",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfererchannel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transferercalleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transferercalleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfererconnectedlinenum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfererconnectedlinename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereraccountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transferercontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfererexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfererlinkedid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereechannel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereecalleridnum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereecalleridname",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereeconnectedlinenum",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereeconnectedlinename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereeaccountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereecontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereeexten",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transfereelinkedid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"Yes\"",
              "\"No\""
            ],
            "optional": true,
            "field": "isexternal",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "context",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "extension",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceTransferReport/index.js",
    "groupTitle": "Voice_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/voice/transfers/reports/{id}",
    "title": "Deletes a Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteTransfer_Reports",
    "group": "Voice_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceTransferReport/index.js",
    "groupTitle": "Voice_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/transfers/reports",
    "title": "Gets a list of Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTransfer_Reports",
    "group": "Voice_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/transfers/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/transfers/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/transfers/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/transfers/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/transfers/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceTransferReport/index.js",
    "groupTitle": "Voice_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/voice/transfers/reports/{id}",
    "title": "Gets a single Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowTransfer_Reports",
    "group": "Voice_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceTransferReport/index.js",
    "groupTitle": "Voice_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/voice/transfers/reports/{id}",
    "title": "Update an existing Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateTransfer_Reports",
    "group": "Voice_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceTransferReport/index.js",
    "groupTitle": "Voice_Transfer_Reports"
  },
  {
    "type": "post",
    "url": "/api/integrations/vtiger/accounts",
    "title": "Creates a new Vtiger Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateVtiger_Accounts",
    "group": "Vtiger_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "moduleName",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "accessKey",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/vtiger/accounts/{id}",
    "title": "Deletes a Vtiger Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteVtiger_Accounts",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/accounts",
    "title": "Gets a list of Vtiger Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVtiger_Accounts",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/accounts/{id}",
    "title": "Gets a single Vtiger Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowVtiger_Accounts",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/vtiger/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/vtiger/accounts/{id}",
    "title": "Update an existing Vtiger Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateVtiger_Accounts",
    "group": "Vtiger_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerAccount/index.js",
    "groupTitle": "Vtiger_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/vtiger/configurations",
    "title": "Creates a new Vtiger Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateVtiger_Configurations",
    "group": "Vtiger_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/vtiger/configurations/{id}",
    "title": "Deletes a Vtiger Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteVtiger_Configurations",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/configurations",
    "title": "Gets a list of Vtiger Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVtiger_Configurations",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/configurations/{id}",
    "title": "Gets a single Vtiger Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowVtiger_Configurations",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/vtiger/configurations/{id}",
    "title": "Update an existing Vtiger Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateVtiger_Configurations",
    "group": "Vtiger_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerConfiguration/index.js",
    "groupTitle": "Vtiger_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/vtiger/fields",
    "title": "Creates a new Vtiger Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateVtiger_Fields",
    "group": "Vtiger_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerField/index.js",
    "groupTitle": "Vtiger_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/vtiger/fields/{id}",
    "title": "Deletes a Vtiger Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteVtiger_Fields",
    "group": "Vtiger_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerField/index.js",
    "groupTitle": "Vtiger_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/fields",
    "title": "Gets a list of Vtiger Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVtiger_Fields",
    "group": "Vtiger_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerField/index.js",
    "groupTitle": "Vtiger_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/vtiger/fields/{id}",
    "title": "Gets a single Vtiger Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowVtiger_Fields",
    "group": "Vtiger_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerField/index.js",
    "groupTitle": "Vtiger_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/vtiger/fields/{id}",
    "title": "Update an existing Vtiger Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateVtiger_Fields",
    "group": "Vtiger_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intVtigerField/index.js",
    "groupTitle": "Vtiger_Fields"
  },
  {
    "type": "post",
    "url": "/api/webbar/answer",
    "title": "answer webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/answer -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_answer",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "sessionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/calls",
    "title": "webrtc call list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/calls -d '{\"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_calls",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/hangup",
    "title": "hangup webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/hangup -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_hangup",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "sessionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/unhold",
    "title": "unhold webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/unhold -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_hold",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "sessionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/hold",
    "title": "hold webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/hold -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_hold",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sessionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/originate",
    "title": "Originate new webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/originate -d '{\"callNumber\": \"0119692844\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_originate",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "callNumber",
            "description": ""
          },
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "callerId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "callbackUrl",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/webbar/transfer",
    "title": "blind transfer webrtc call",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/webbar/transfer -d '{\"userId\": 54, \"sessionId\":\"<sessionId>\", \"transferNumber\":\"<transferNumber>\"}' \\\n -H \"Content-Type: application/json\" -X POST",
        "type": "json"
      }
    ],
    "name": "Web_Bar_transfer",
    "group": "WebBar",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "number",
            "optional": false,
            "field": "userId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "string",
            "optional": false,
            "field": "sessionId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "string",
            "optional": false,
            "field": "transferNumber",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/webbar/index.js",
    "groupTitle": "WebBar"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/users",
    "title": "Add agents to a whatsapp account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts",
    "title": "Creates a new Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateAccounts",
    "group": "Whatsapp_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "remote",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"twilio\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountSid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "authToken",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "notificationTemplate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationSound",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "notificationShake",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "waitForTheAssignedAgent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "queueTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "queueTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "agentTransfer",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "agentTransferTimeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "mandatoryDispositionPauseId",
            "description": "<p>Status to put when mandatory disposition is enabled</p>"
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "mandatoryDisposition",
            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/accounts/{id}",
    "title": "Deletes a Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteAccounts",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/describe",
    "title": "Gets table info about Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeAccounts",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts",
    "title": "Gets a list of Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetAccounts",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/{id}/users",
    "title": "Gets agents from whatsapp account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/accounts/{id}/users",
    "title": "Removes agents from a whatsapp account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/accounts/{id}/canned_answers",
    "title": "Removes canned answers from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAnswers",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/accounts/{id}/dispositions",
    "title": "Removes dispositions from account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveDispositions",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/{id}",
    "title": "Gets a single Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowAccounts",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/messages/{id}/accept",
    "title": "Accepts message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "acceptMessage",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/canned_answers",
    "title": "Creates new canned answer",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addAnswer",
    "group": "Whatsapp_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "value",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Virtual",
            "optional": true,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/applications",
    "title": "Creates new applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addApplications",
    "group": "Whatsapp_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/dispositions",
    "title": "Creates new disposition",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addDisposition",
    "group": "Whatsapp_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "name",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/{id}/canned_answers",
    "title": "Gets account canned answers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getAnswers",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/{id}/applications",
    "title": "Gets account applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/applications -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getApplications",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/accounts/{id}/dispositions",
    "title": "Gets account dispositions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDispositions",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/notify",
    "title": "Notify new message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "notify",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new whatsapp message to be sent to the system.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/messages/{id}/reject",
    "title": "Rejects message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "rejectMessage",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/accounts/{id}/send",
    "title": "Send new whatsapp message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/send -d '{from: '+39333123456', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "sendWhatsapp",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/messages/{id}/status",
    "title": "Receive message status",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
        "type": "json"
      }
    ],
    "name": "statusMessage",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/accounts/{id}",
    "title": "Update an existing Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateAccounts",
    "group": "Whatsapp_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappAccount/index.js",
    "groupTitle": "Whatsapp_Accounts"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/applications",
    "title": "Creates a new Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateApplications",
    "group": "Whatsapp_Applications",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "priority",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "app",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Text",
            "optional": true,
            "field": "appdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "interval",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappApplication/index.js",
    "groupTitle": "Whatsapp_Applications"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/applications/{id}",
    "title": "Deletes a Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/applications/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteApplications",
    "group": "Whatsapp_Applications",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappApplication/index.js",
    "groupTitle": "Whatsapp_Applications"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/applications",
    "title": "Gets a list of Applications",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/applications -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetApplications",
    "group": "Whatsapp_Applications",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappApplication/index.js",
    "groupTitle": "Whatsapp_Applications"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/applications/{id}",
    "title": "Gets a single Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/applications/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowApplications",
    "group": "Whatsapp_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappApplication/index.js",
    "groupTitle": "Whatsapp_Applications"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/applications/{id}",
    "title": "Update an existing Application",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateApplications",
    "group": "Whatsapp_Applications",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappApplication/index.js",
    "groupTitle": "Whatsapp_Applications"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/interactions/{id}/tags",
    "title": "Add tags to the interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTags",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/interactions",
    "title": "Creates a new Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateInteractions",
    "group": "Whatsapp_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "closed",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "closedAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "note",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "read1stAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "firstMsgDirection",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastMsgAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "lastMsgDirection",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/interactions/{id}",
    "title": "Deletes a Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteInteractions",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/interactions/describe",
    "title": "Gets table info about Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeInteractions",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/interactions",
    "title": "Gets a list of Interactions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetInteractions",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/interactions/{id}/tags",
    "title": "Removes tags from interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveTags",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/interactions/{id}",
    "title": "Gets a single Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowInteractions",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/interactions/{id}/messages",
    "title": "Creates new messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addMessage",
    "group": "Whatsapp_Interactions",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/interactions/{id}/download",
    "title": "Gets interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/download -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "download",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/interactions/{id}/messages",
    "title": "Gets interaction messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/messages -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getMessages",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/interactions/{id}",
    "title": "Update an existing Interaction",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateInteractions",
    "group": "Whatsapp_Interactions",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappInteraction/index.js",
    "groupTitle": "Whatsapp_Interactions"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/messages",
    "title": "Creates a new Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateMessages",
    "group": "Whatsapp_Messages",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "Text",
            "optional": false,
            "field": "body",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "read",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"in\"",
              "\"out\""
            ],
            "optional": false,
            "field": "direction",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "messageId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "phone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "readAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "secret",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/messages/{id}",
    "title": "Deletes a Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteMessages",
    "group": "Whatsapp_Messages",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/messages/describe",
    "title": "Gets table info about Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeMessages",
    "group": "Whatsapp_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/messages",
    "title": "Gets a list of Messages",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMessages",
    "group": "Whatsapp_Messages",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/messages/{id}",
    "title": "Gets a single Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowMessages",
    "group": "Whatsapp_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/messages/{id}",
    "title": "Update an existing Message",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateMessages",
    "group": "Whatsapp_Messages",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappMessage/index.js",
    "groupTitle": "Whatsapp_Messages"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/reports/queue",
    "title": "Creates a new Whatsapp Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "from",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "joinAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "leaveAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "acceptAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "exitAt",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "reason",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/reports/queue/{id}",
    "title": "Deletes a Whatsapp Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/queue/describe",
    "title": "Gets table info about Whatsapp Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/queue",
    "title": "Gets a list of Whatsapp Queue Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/queue/{id}",
    "title": "Gets a single Whatsapp Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/reports/queue/{id}",
    "title": "Update an existing Whatsapp Queue Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateWhatsapp_Queue_Reports",
    "group": "Whatsapp_Queue_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueueReport/index.js",
    "groupTitle": "Whatsapp_Queue_Reports"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/queues/{id}/users",
    "title": "Add agents to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddAgents",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/queues/{id}/teams",
    "title": "Add teams to a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "AddTeams",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/queues",
    "title": "Creates a new Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateQueues",
    "group": "Whatsapp_Queues",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": true,
            "field": "timeout",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"rrmemory\"",
              "\"beepall\"",
              "\"roundrobin\""
            ],
            "optional": true,
            "field": "strategy",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/queues/{id}",
    "title": "Deletes a Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteQueues",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues/describe",
    "title": "Gets table info about Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeQueues",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues/{id}/users",
    "title": "Gets queue agents",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "GetAgents",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues/{id}/members",
    "title": "GetMembers",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/members  -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetMembers",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues",
    "title": "Gets a list of Queues",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetQueues",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues/{id}/teams",
    "title": "Gets queues list",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetTeams",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/queues/{id}/users",
    "title": "Removes agents from a queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "RemoveAgents",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/queues/{id}",
    "title": "Gets a single Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowQueues",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/queues/{id}",
    "title": "Update an existing Queue",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateQueues",
    "group": "Whatsapp_Queues",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappQueue/index.js",
    "groupTitle": "Whatsapp_Queues"
  },
  {
    "type": "post",
    "url": "/api/whatsapp/reports/transfer",
    "title": "Creates a new Whatsapp Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"account\"",
              "\"agent\"",
              "\"queue\""
            ],
            "optional": false,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "transferredAt",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "delete",
    "url": "/api/whatsapp/reports/transfer/{id}",
    "title": "Deletes a Whatsapp Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/transfer/describe",
    "title": "Gets table info about Whatsapp Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/transfer",
    "title": "Gets a list of Whatsapp Transfer Reports",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "get",
    "url": "/api/whatsapp/reports/transfer/{id}",
    "title": "Gets a single Whatsapp Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "put",
    "url": "/api/whatsapp/reports/transfer/{id}",
    "title": "Update an existing Whatsapp Transfer Report",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateWhatsapp_Transfer_Reports",
    "group": "Whatsapp_Transfer_Reports",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/whatsappTransferReport/index.js",
    "groupTitle": "Whatsapp_Transfer_Reports"
  },
  {
    "type": "post",
    "url": "/api/integrations/zendesk/accounts",
    "title": "Creates a new Zendesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZendesk_Accounts",
    "group": "Zendesk_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "username",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "password",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "token",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "remoteUri",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"password\"",
              "\"token\""
            ],
            "optional": true,
            "field": "authType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"integrationTab\"",
              "\"newTab\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zendesk/accounts/{id}",
    "title": "Deletes a Zendesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZendesk_Accounts",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/accounts",
    "title": "Gets a list of Zendesk Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZendesk_Accounts",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/accounts/{id}",
    "title": "Gets a single Zendesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZendesk_Accounts",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/zendesk/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/zendesk/accounts/{id}",
    "title": "Update an existing Zendesk Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZendesk_Accounts",
    "group": "Zendesk_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskAccount/index.js",
    "groupTitle": "Zendesk_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/zendesk/configurations",
    "title": "Creates a new Zendesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZendesk_Configurations",
    "group": "Zendesk_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zendesk/configurations/{id}",
    "title": "Deletes a Zendesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZendesk_Configurations",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations",
    "title": "Gets a list of Zendesk Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZendesk_Configurations",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations/{id}",
    "title": "Gets a single Zendesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZendesk_Configurations",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/configurations/{id}/tags",
    "title": "Gets configurations tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/tags -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getTags",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/zendesk/configurations/{id}/tags",
    "title": "Sets new tags",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "setTags",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/zendesk/configurations/{id}",
    "title": "Update an existing Zendesk Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZendesk_Configurations",
    "group": "Zendesk_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskConfiguration/index.js",
    "groupTitle": "Zendesk_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/zendesk/fields",
    "title": "Creates a new Zendesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZendesk_Fields",
    "group": "Zendesk_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskField/index.js",
    "groupTitle": "Zendesk_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zendesk/fields/{id}",
    "title": "Deletes a Zendesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZendesk_Fields",
    "group": "Zendesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskField/index.js",
    "groupTitle": "Zendesk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/fields",
    "title": "Gets a list of Zendesk Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZendesk_Fields",
    "group": "Zendesk_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskField/index.js",
    "groupTitle": "Zendesk_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/zendesk/fields/{id}",
    "title": "Gets a single Zendesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZendesk_Fields",
    "group": "Zendesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskField/index.js",
    "groupTitle": "Zendesk_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/zendesk/fields/{id}",
    "title": "Update an existing Zendesk Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZendesk_Fields",
    "group": "Zendesk_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZendeskField/index.js",
    "groupTitle": "Zendesk_Fields"
  },
  {
    "type": "post",
    "url": "/api/integrations/zoho/accounts",
    "title": "Creates a new Zoho Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZoho_Accounts",
    "group": "Zoho_Accounts",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "host",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "zone",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientId",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clientSecret",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "serverUrl",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "code",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "refreshToken",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zoho/accounts/{id}",
    "title": "Deletes a Zoho Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZoho_Accounts",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/accounts",
    "title": "Gets a list of Zoho Accounts",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZoho_Accounts",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/accounts/{id}",
    "title": "Gets a single Zoho Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZoho_Accounts",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/zoho/accounts/{id}/configurations",
    "title": "Creates new configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "addConfiguration",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/accounts/{id}/configurations",
    "title": "Gets account configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/configurations -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getConfigurations",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/accounts/{id}/fields",
    "title": "Gets account fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "put",
    "url": "/api/integrations/zoho/accounts/{id}",
    "title": "Update an existing Zoho Account",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZoho_Accounts",
    "group": "Zoho_Accounts",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoAccount/index.js",
    "groupTitle": "Zoho_Accounts"
  },
  {
    "type": "post",
    "url": "/api/integrations/zoho/configurations",
    "title": "Creates a new Zoho Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZoho_Configurations",
    "group": "Zoho_Configurations",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "name",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"lead\"",
              "\"contact\"",
              "\"nothing\""
            ],
            "optional": true,
            "field": "moduleCreate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"contact_lead\"",
              "\"contact\"",
              "\"lead\""
            ],
            "optional": true,
            "field": "moduleSearch",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "description",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zoho/configurations/{id}",
    "title": "Deletes a Zoho Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZoho_Configurations",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations",
    "title": "Gets a list of Zoho Configurations",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZoho_Configurations",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations/{id}",
    "title": "Gets a single Zoho Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZoho_Configurations",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations/{id}/descriptions",
    "title": "Gets configurations descriptions",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getDescriptions",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations/{id}/fields",
    "title": "Gets configurations fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/fields -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getFields",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/configurations/{id}/subjects",
    "title": "Gets configurations subjects",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/subjects -v -u {name}:{password} -X GET",
        "type": "json"
      }
    ],
    "name": "getSubjects",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "put",
    "url": "/api/integrations/zoho/configurations/{id}",
    "title": "Update an existing Zoho Configuration",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZoho_Configurations",
    "group": "Zoho_Configurations",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoConfiguration/index.js",
    "groupTitle": "Zoho_Configurations"
  },
  {
    "type": "post",
    "url": "/api/integrations/zoho/fields",
    "title": "Creates a new Zoho Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateZoho_Fields",
    "group": "Zoho_Fields",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\"",
              "\"keyValue\""
            ],
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "content",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "key",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "allowedValues": [
              "\"string\"",
              "\"variable\"",
              "\"customVariable\""
            ],
            "optional": true,
            "field": "keyType",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "keyContent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "idField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "nameField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Boolean",
            "optional": true,
            "field": "customField",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "variableName",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoField/index.js",
    "groupTitle": "Zoho_Fields"
  },
  {
    "type": "delete",
    "url": "/api/integrations/zoho/fields/{id}",
    "title": "Deletes a Zoho Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteZoho_Fields",
    "group": "Zoho_Fields",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoField/index.js",
    "groupTitle": "Zoho_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/fields",
    "title": "Gets a list of Zoho Fields",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/fields -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetZoho_Fields",
    "group": "Zoho_Fields",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoField/index.js",
    "groupTitle": "Zoho_Fields"
  },
  {
    "type": "get",
    "url": "/api/integrations/zoho/fields/{id}",
    "title": "Gets a single Zoho Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowZoho_Fields",
    "group": "Zoho_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoField/index.js",
    "groupTitle": "Zoho_Fields"
  },
  {
    "type": "put",
    "url": "/api/integrations/zoho/fields/{id}",
    "title": "Update an existing Zoho Field",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateZoho_Fields",
    "group": "Zoho_Fields",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/intZohoField/index.js",
    "groupTitle": "Zoho_Fields"
  },
  {
    "type": "post",
    "url": "/api/cdr",
    "title": "Creates a new Cdr",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateCdrs",
    "group": "cdr",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "calldate",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "clid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "src",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dst",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dcontext",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "channel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "dstchannel",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastapp",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "lastdata",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "duration",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "billsec",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "disposition",
            "description": ""
          },
          {
            "group": "Body",
            "type": "Integer",
            "optional": false,
            "field": "amaflags",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "accountcode",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "userfield",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "uniqueid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "linkedid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "sequence",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "peeraccount",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "type",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "tag",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "delete",
    "url": "/api/cdr/{id}",
    "title": "Deletes a Cdr",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteCdrs",
    "group": "cdr",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "get",
    "url": "/api/cdr/describe",
    "title": "Gets table info about Cdrs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr/describe -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "DescribeCdrs",
    "group": "cdr",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "get",
    "url": "/api/cdr",
    "title": "Gets a list of Cdrs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetCdrs",
    "group": "cdr",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cdr?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cdr?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cdr?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cdr?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cdr?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "get",
    "url": "/api/cdr/{id}",
    "title": "Gets a single Cdr",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowCdrs",
    "group": "cdr",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "put",
    "url": "/api/cdr/{id}",
    "title": "Update an existing Cdr",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/cdr/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateCdrs",
    "group": "cdr",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/cdr/index.js",
    "groupTitle": "cdr"
  },
  {
    "type": "post",
    "url": "/api/voiceQueuesLog",
    "title": "Creates a new VoiceQueuesLog",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voiceQueuesLog -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
        "type": "json"
      }
    ],
    "name": "CreateVoiceQueuesLogs",
    "group": "voiceQueuesLog",
    "parameter": {
      "fields": {
        "Body": [
          {
            "group": "Body",
            "type": "String",
            "optional": true,
            "field": "time",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "callid",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "queuename",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "agent",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "event",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data1",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data2",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data3",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data4",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "data5",
            "description": ""
          },
          {
            "group": "Body",
            "type": "String",
            "optional": false,
            "field": "dtm",
            "description": ""
          }
        ]
      }
    },
    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueuesLog/index.js",
    "groupTitle": "voiceQueuesLog"
  },
  {
    "type": "delete",
    "url": "/api/voiceQueuesLog/{id}",
    "title": "Deletes a VoiceQueuesLog",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -v -u {name}:{password} -X DELETE",
        "type": "json"
      }
    ],
    "name": "DeleteVoiceQueuesLogs",
    "group": "voiceQueuesLog",
    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueuesLog/index.js",
    "groupTitle": "voiceQueuesLog"
  },
  {
    "type": "get",
    "url": "/api/voiceQueuesLog",
    "title": "Gets a list of VoiceQueuesLogs",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voiceQueuesLog -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "GetVoiceQueuesLogs",
    "group": "voiceQueuesLog",
    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voiceQueuesLog?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voiceQueuesLog?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voiceQueuesLog?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voiceQueuesLog?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voiceQueuesLog?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueuesLog/index.js",
    "groupTitle": "voiceQueuesLog"
  },
  {
    "type": "get",
    "url": "/api/voiceQueuesLog/{id}",
    "title": "Gets a single VoiceQueuesLog",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -v -u {name}:{password}",
        "type": "json"
      }
    ],
    "name": "ShowVoiceQueuesLogs",
    "group": "voiceQueuesLog",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueuesLog/index.js",
    "groupTitle": "voiceQueuesLog"
  },
  {
    "type": "put",
    "url": "/api/voiceQueuesLog/{id}",
    "title": "Update an existing VoiceQueuesLog",
    "examples": [
      {
        "title": "Example usage:",
        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
        "type": "json"
      }
    ],
    "name": "updateVoiceQueuesLogs",
    "group": "voiceQueuesLog",
    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
    "version": "0.0.0",
    "filename": "server/api/voiceQueuesLog/index.js",
    "groupTitle": "voiceQueuesLog"
  }
]
+[
+  {
+    "type": "delete",
+    "url": "/api/actions/{id}",
+    "title": "Deletes a Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/actions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteActions",
+    "group": "Actions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/action/index.js",
+    "groupTitle": "Actions"
+  },
+  {
+    "type": "put",
+    "url": "/api/actions/{id}",
+    "title": "Update an existing Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/actions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateActions",
+    "group": "Actions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/action/index.js",
+    "groupTitle": "Actions"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/custom_reports",
+    "title": "Creates a new Analytic Custom Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Custom_Reports",
+    "group": "Analytic_Custom_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "parent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "table",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "conditions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "joins",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/custom_reports/{id}",
+    "title": "Deletes a Analytic Custom Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Custom_Reports",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/custom_reports",
+    "title": "Gets a list of Analytic Custom Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Custom_Reports",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/custom_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/custom_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/custom_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/custom_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/custom_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/custom_reports/{id}",
+    "title": "Gets a single Analytic Custom Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Custom_Reports",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/custom_reports/{id}/preview",
+    "title": "Report Preview",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/preview -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "preview",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/custom_reports/{id}/query",
+    "title": "Report Query SQL",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/query -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "query",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/custom_reports/{id}/run",
+    "title": "Report Run",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id}/run -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "run",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/custom_reports/{id}",
+    "title": "Update an existing Analytic Custom Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/custom_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Custom_Reports",
+    "group": "Analytic_Custom_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticCustomReport/index.js",
+    "groupTitle": "Analytic_Custom_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/default_reports",
+    "title": "Creates a new Analytic Default Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Default_Reports",
+    "group": "Analytic_Default_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "parent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "table",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "conditions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "joins",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/default_reports/{id}",
+    "title": "Deletes a Analytic Default Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Default_Reports",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/default_reports",
+    "title": "Gets a list of Analytic Default Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Default_Reports",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/default_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/default_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/default_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/default_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/default_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/default_reports/{id}",
+    "title": "Gets a single Analytic Default Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Default_Reports",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/default_reports/{id}/preview",
+    "title": "Report Preview",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id}/preview -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "preview",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/default_reports/{id}/query",
+    "title": "Report Query SQL",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id}/query -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "query",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/default_reports/{id}/run",
+    "title": "Report Run",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id}/run -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "run",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/default_reports/{id}",
+    "title": "Update an existing Analytic Default Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/default_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Default_Reports",
+    "group": "Analytic_Default_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticDefaultReport/index.js",
+    "groupTitle": "Analytic_Default_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/extracted_reports",
+    "title": "Creates a new Analytic Extracted Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Extacted_Reports",
+    "group": "Analytic_Extracted_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "basename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"csv\"",
+              "\"pdf\"",
+              "\"xlsx\""
+            ],
+            "optional": false,
+            "field": "output",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "savename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "startDate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "endDate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "status",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"manual\"",
+              "\"scheduled\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "reportId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reportType",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/extracted_reports/{id}",
+    "title": "Deletes a Analytic Extracted Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Extacted_Reports",
+    "group": "Analytic_Extracted_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/extracted_reports",
+    "title": "Gets a list of Analytic Extacted Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Extacted_Reports",
+    "group": "Analytic_Extracted_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/extracted_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/extracted_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/extracted_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/extracted_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/extracted_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/extracted_reports/{id}",
+    "title": "Gets a single Analytic Extracted Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Extacted_Reports",
+    "group": "Analytic_Extracted_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/extracted_reports/{id}/download",
+    "title": "Download Extracted Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Analytic_Extracted_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/extracted_reports/{id}",
+    "title": "Update an existing Analytic Extracted Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/extracted_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Extacted_Reports",
+    "group": "Analytic_Extracted_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticExtractedReport/index.js",
+    "groupTitle": "Analytic_Extracted_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/field_reports/create_many",
+    "title": "Creates many Analytic Field Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "BulkCreateAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "field",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "alias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "function",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "format",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "groupBy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "orderBy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "custom",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/field_reports/destroy_many?ids={ids}",
+    "title": "Deletes many Analytic Field Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/destroy_many?ids=1&ids=2&ids=3 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "BulkDeleteAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/field_reports",
+    "title": "Creates a new Analytic Field Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "field",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "alias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "function",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "format",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "groupBy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "orderBy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "custom",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/field_reports/{id}",
+    "title": "Deletes a Analytic Field Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/field_reports",
+    "title": "Gets a list of Analytic Field Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/field_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/field_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/field_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/field_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/field_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/field_reports/{id}",
+    "title": "Gets a single Analytic Field Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/field_reports/{id}/create_many",
+    "title": "Rewrite fields set",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/{id}/create_many -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addFields",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/field_reports/{id}",
+    "title": "Update an existing Analytic Field Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/field_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Field_Reports",
+    "group": "Analytic_Field_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticFieldReport/index.js",
+    "groupTitle": "Analytic_Field_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/metrics",
+    "title": "Creates a new Analytic Metrics",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/metrics -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Metric",
+    "group": "Analytic_Metrics",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "table",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "metric",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticMetric/index.js",
+    "groupTitle": "Analytic_Metrics"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/metrics/{id}",
+    "title": "Deletes a Analytic Metrics",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/metrics/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Metric",
+    "group": "Analytic_Metrics",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticMetric/index.js",
+    "groupTitle": "Analytic_Metrics"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/metrics",
+    "title": "Gets a list of Analytic Metric",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/metrics -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Metric",
+    "group": "Analytic_Metrics",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/metrics?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/metrics?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/metrics?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/metrics?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/metrics?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticMetric/index.js",
+    "groupTitle": "Analytic_Metrics"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/metrics/{id}",
+    "title": "Gets a single Analytic Metrics",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/metrics/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Metric",
+    "group": "Analytic_Metrics",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticMetric/index.js",
+    "groupTitle": "Analytic_Metrics"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/metrics/{id}",
+    "title": "Update an existing Analytic Metrics",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/metrics/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Metric",
+    "group": "Analytic_Metrics",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticMetric/index.js",
+    "groupTitle": "Analytic_Metrics"
+  },
+  {
+    "type": "post",
+    "url": "/api/analytics/tree_reports",
+    "title": "Creates a new Analytic Tree Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/tree_reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAnalytic_Tree_Reports",
+    "group": "Analytic_Tree_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "tree",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticTreeReport/index.js",
+    "groupTitle": "Analytic_Tree_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/analytics/tree_reports/{id}",
+    "title": "Deletes a Analytic Tree Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAnalytic_Tree_Reports",
+    "group": "Analytic_Tree_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticTreeReport/index.js",
+    "groupTitle": "Analytic_Tree_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/tree_reports",
+    "title": "Gets a list of Analytic Tree Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/tree_reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAnalytic_Tree_Reports",
+    "group": "Analytic_Tree_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/analytics/tree_reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/analytics/tree_reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/analytics/tree_reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/analytics/tree_reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/analytics/tree_reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticTreeReport/index.js",
+    "groupTitle": "Analytic_Tree_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/analytics/tree_reports/{id}",
+    "title": "Gets a single Analytic Tree Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAnalytic_Tree_Reports",
+    "group": "Analytic_Tree_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticTreeReport/index.js",
+    "groupTitle": "Analytic_Tree_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/analytics/tree_reports/{id}",
+    "title": "Update an existing Analytic Tree Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/analytics/tree_reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAnalytic_Tree_Reports",
+    "group": "Analytic_Tree_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/analyticTreeReport/index.js",
+    "groupTitle": "Analytic_Tree_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/attachments/clone",
+    "title": "Clone an existing Attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneAttachments",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "delete",
+    "url": "/api/attachments/{id}",
+    "title": "Deletes a Attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAttachments",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "get",
+    "url": "/api/attachments",
+    "title": "Gets a list of Attachments",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAttachments",
+    "group": "Attachments",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/attachments?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/attachments?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/attachments?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/attachments?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/attachments?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "get",
+    "url": "/api/attachments/{id}",
+    "title": "Gets a single Attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAttachments",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "post",
+    "url": "/api/attachments",
+    "title": "Add attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "create",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "get",
+    "url": "/api/attachments/:id/download",
+    "title": "Download attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments/:id/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/{id}/attachment_download",
+    "title": "Download attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/attachment_download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "show",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "put",
+    "url": "/api/attachments/{id}",
+    "title": "Update an existing Attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/attachments/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAttachments",
+    "group": "Attachments",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/attachment/index.js",
+    "groupTitle": "Attachments"
+  },
+  {
+    "type": "post",
+    "url": "/api/auth/local/forgot",
+    "title": "Creates a new password reset token",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/auth/local/forgot -d '{\"email\": \"[email-masked]\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Local_Forgot_Password",
+    "group": "Authentication",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "email",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/authLocal/index.js",
+    "groupTitle": "Authentication"
+  },
+  {
+    "type": "post",
+    "url": "/api/auth/local/reset/:token",
+    "title": "Reset user password",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/auth/local/reset/94b422c1fkdjhg766a198da6997yu6gcc963641d -d '{\"password\": \"My_newP@ssw0rd\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Local_Reset_Password",
+    "group": "Authentication",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "password",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/authLocal/index.js",
+    "groupTitle": "Authentication"
+  },
+  {
+    "type": "post",
+    "url": "/api/auth/google",
+    "title": "Creates a new User token",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/auth/google -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Local_login",
+    "group": "Authentication",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "password",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/authGoogle/index.js",
+    "groupTitle": "Authentication"
+  },
+  {
+    "type": "post",
+    "url": "/api/auth/local",
+    "title": "Creates a new User token",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/auth/local -d '{\"name\": \"john.doe\", \"password\": \"password\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Local_login",
+    "group": "Authentication",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "password",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/authLocal/index.js",
+    "groupTitle": "Authentication"
+  },
+  {
+    "type": "post",
+    "url": "/api/automations",
+    "title": "Creates a new Automation",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAutomations",
+    "group": "Automations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "status",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/automations/{id}",
+    "title": "Deletes a Automation",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAutomations",
+    "group": "Automations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "get",
+    "url": "/api/automations",
+    "title": "Gets a list of Automations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAutomations",
+    "group": "Automations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/automations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/automations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/automations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/automations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/automations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "get",
+    "url": "/api/automations/{id}",
+    "title": "Gets a single Automation",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAutomations",
+    "group": "Automations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "post",
+    "url": "/api/automations/{id}/actions",
+    "title": "Creates new actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id}/actions -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addActions",
+    "group": "Automations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "action",
+            "description": "<p>Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser, bot, script</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data1",
+            "description": "<p>contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data2",
+            "description": "<p>integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data3",
+            "description": "<p>motionbar[NULL,NULL,WinAppArguments]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data4",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data5",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data6",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "data7",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "post",
+    "url": "/api/automations/{id}/conditions",
+    "title": "Creates new conditions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id}/conditions -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConditions",
+    "group": "Automations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "field",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "operator",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "get",
+    "url": "/api/automations/{id}/actions",
+    "title": "Gets Automation Actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id}/actions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getActions",
+    "group": "Automations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "get",
+    "url": "/api/automations/{id}/conditions",
+    "title": "Gets Automation Conditions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id}/conditions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConditions",
+    "group": "Automations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "put",
+    "url": "/api/automations/{id}",
+    "title": "Update an existing Automation",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/automations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAutomations",
+    "group": "Automations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/automation/index.js",
+    "groupTitle": "Automations"
+  },
+  {
+    "type": "post",
+    "url": "/api/canned_answers",
+    "title": "Create a new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/canned_answers -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Canned_Answers",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cannedAnswer/index.js",
+    "groupTitle": "Canned_Answers"
+  },
+  {
+    "type": "delete",
+    "url": "/api/canned_answers/{id}",
+    "title": "Deletes a Canned Answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/canned_answers/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCanned_Answers",
+    "group": "Canned_Answers",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cannedAnswer/index.js",
+    "groupTitle": "Canned_Answers"
+  },
+  {
+    "type": "get",
+    "url": "/api/canned_answers",
+    "title": "Gets a list of Canned Answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/canned_answers -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCanned_Answers",
+    "group": "Canned_Answers",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/canned_answers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/canned_answers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/canned_answers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/canned_answers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/canned_answers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cannedAnswer/index.js",
+    "groupTitle": "Canned_Answers"
+  },
+  {
+    "type": "get",
+    "url": "/api/canned_answers/{id}",
+    "title": "Gets a single Canned Answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/canned_answers/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCanned_Answers",
+    "group": "Canned_Answers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cannedAnswer/index.js",
+    "groupTitle": "Canned_Answers"
+  },
+  {
+    "type": "put",
+    "url": "/api/canned_answers/{id}",
+    "title": "Update an existing Canned Answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/canned_answers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCanned_Answers",
+    "group": "Canned_Answers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cannedAnswer/index.js",
+    "groupTitle": "Canned_Answers"
+  },
+  {
+    "type": "get",
+    "url": "/chat/internal/users",
+    "title": "Gets Users Last Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/chat/internal/users -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getLastUsersMessages",
+    "group": "ChatInternalMessage",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "ChatInternalMessage"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Chat_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatApplication/index.js",
+    "groupTitle": "Chat_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Chat_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatApplication/index.js",
+    "groupTitle": "Chat_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Chat_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatApplication/index.js",
+    "groupTitle": "Chat_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/groups",
+    "title": "Creates a new Group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateGroups",
+    "group": "Chat_Groups",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "write",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/groups/{id}",
+    "title": "Deletes a Group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteGroups",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups/describe",
+    "title": "Gets table info about Groups",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeGroups",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups",
+    "title": "Gets a list of Groups",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetGroups",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/groups?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/groups?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/groups?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/groups?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/groups?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/groups/{id}/members",
+    "title": "Removes members from a group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/members?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveMembers",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups/{id}",
+    "title": "Gets a single Group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowGroups",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/groups/{id}/members",
+    "title": "Add members to chat group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/members -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMembers",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/groups/{id}/messages",
+    "title": "Creates a new group message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/messages -d '{\"body\": \"Hi operator!\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups/{id}/members",
+    "title": "Gets Members",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/members -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMembers",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups/{id}/messages",
+    "title": "Gets Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/groups/{id}/unread",
+    "title": "Get unread chat group messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id}/unread -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getUread",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/groups/{id}",
+    "title": "Update an existing Group",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/groups/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateGroups",
+    "group": "Chat_Groups",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatGroup/index.js",
+    "groupTitle": "Chat_Groups"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Chat_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ratingValue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"star\"",
+              "\"thumb\""
+            ],
+            "optional": true,
+            "field": "ratingType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "ratingMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "pathTranscript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailTranscript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "browserName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "browserVersion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "osName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "osVersion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceModel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceVendor",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "referer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customerIp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "formData",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closeReason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customerPort",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "vidaooSessionId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/abandon",
+    "title": "Abandon interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/abandon -d '{\"channel\": \"chat\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "abandon",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to set as abandon an interaction and stop the routing.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/close",
+    "title": "Close Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/close -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/interactions/{id}/messages",
+    "title": "Creates new messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Chat_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/interactions/{id}/attachment_upload",
+    "title": "Add attachment",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/attachment_upload -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "attachmentUpload",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/interactions/{id}/vidaoo",
+    "title": "Create Vidaoo Session",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/vidaoo  -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "createVidaooSession",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}/custom_update",
+    "title": "Update interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/custom_update -d '{\"channel\": \"chat\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "customUpdate",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to update an interaction.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/{id}/download",
+    "title": "Gets interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/interactions/{id}/my_messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id}/my_messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMyMessages",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Chat_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInteraction/index.js",
+    "groupTitle": "Chat_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/internal/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Chat_Internal_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ChatInternalMessageId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/internal/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Chat_Internal_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/internal/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Chat_Internal_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/internal/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Chat_Internal_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/internal/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/internal/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/internal/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/internal/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/internal/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/internal/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Chat_Internal_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/internal/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/internal/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Chat_Internal_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatInternalMessage/index.js",
+    "groupTitle": "Chat_Internal_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Chat_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Chat_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Chat_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Chat_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Chat_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Chat_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/offline_messages",
+    "title": "Creates a new OfflineMessage",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/offline_messages/{id}",
+    "title": "Deletes a OfflineMessage",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/offline_messages/describe",
+    "title": "Gets table info about OfflineMessages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/offline_messages",
+    "title": "Gets a list of OfflineMessages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/offline_messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/offline_messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/offline_messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/offline_messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/offline_messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/offline_messages/{id}",
+    "title": "Gets a single OfflineMessage",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/offline_messages/{id}",
+    "title": "Update an existing OfflineMessage",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/offline_messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateOfflineMessages",
+    "group": "Chat_Offline_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatOfflineMessage/index.js",
+    "groupTitle": "Chat_Offline_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/proactive_actions",
+    "title": "Creates a new Proactive Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/proactive_actions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateProactive_Actions",
+    "group": "Chat_Proactive_Actions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"mouseOver\"",
+              "\"timeout\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "selector",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatProactiveAction/index.js",
+    "groupTitle": "Chat_Proactive_Actions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/proactive_actions/{id}",
+    "title": "Deletes a Proactive Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteProactive_Actions",
+    "group": "Chat_Proactive_Actions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatProactiveAction/index.js",
+    "groupTitle": "Chat_Proactive_Actions"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/proactive_actions/{id}",
+    "title": "Gets a single Proactive Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowProactive_Actions",
+    "group": "Chat_Proactive_Actions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatProactiveAction/index.js",
+    "groupTitle": "Chat_Proactive_Actions"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/proactive_actions/{id}",
+    "title": "Update an existing Proactive Action",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/proactive_actions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateProactive_Actions",
+    "group": "Chat_Proactive_Actions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatProactiveAction/index.js",
+    "groupTitle": "Chat_Proactive_Actions"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/reports/queue",
+    "title": "Creates a new Chat Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/reports/queue/{id}",
+    "title": "Deletes a Chat Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/queue/describe",
+    "title": "Gets table info about Chat Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/queue",
+    "title": "Gets a list of Chat Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/queue/{id}",
+    "title": "Gets a single Chat Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/reports/queue/{id}",
+    "title": "Update an existing Chat Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateChat_Queue_Reports",
+    "group": "Chat_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueueReport/index.js",
+    "groupTitle": "Chat_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Chat_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": true,
+            "field": "strategy",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Chat_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Chat_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/reports/transfer",
+    "title": "Creates a new Chat Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/reports/transfer/{id}",
+    "title": "Deletes a Chat Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/transfer/describe",
+    "title": "Gets table info about Chat Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/transfer",
+    "title": "Gets a list of Chat Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/reports/transfer/{id}",
+    "title": "Gets a single Chat Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/reports/transfer/{id}",
+    "title": "Update an existing Chat Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateChat_Transfer_Reports",
+    "group": "Chat_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatTransferReport/index.js",
+    "groupTitle": "Chat_Transfer_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/users",
+    "title": "Add agents to a website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites",
+    "title": "Creates a new Website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateWebsites",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "address",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mapKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mapKeyOffline",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentAlias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customerAlias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "color",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "color_button",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "textColor",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "fontSize",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remote",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "animation",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rounded\"",
+              "\"squared\""
+            ],
+            "optional": true,
+            "field": "header_shape",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "header_online",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "start_chat_button",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "offline_chat_button",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "header_offline",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "download_transcript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "whiteLabel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "defaultWhiteLabel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "sitepic",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closingQuestion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "formSubmitSuccessMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "formSubmitFailureMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "noteTitle",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "placeholderMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closingMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closingMessageButton",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "skipMessageButton",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "conditionAgreement",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableRating",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableFeedback",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableSendButton",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "feedbackTitle",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"star\"",
+              "\"thumb\""
+            ],
+            "optional": true,
+            "field": "ratingType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ratingStarsNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "onlineForm",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "offlineForm",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "autoclose",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableCustomerWriting",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "forwardTranscript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "forwardTranscriptMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "forwardOffline",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "forwardOfflineAddress",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "waitingTitle",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "waitingMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "offlineMessageSubject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "offlineMessageBody",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableUnmanagedNote",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "unmanagedMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "skipUnmanaged",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sendUnmanaged",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableCustomerAttachment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableCustomerCheckmarks",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "agentAvatar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "showAgentAvatar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "timezone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notificationTemplate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationSound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationShake",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "hideWhenOffline",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentIdentifier",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "waitForTheAssignedAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "alignment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "verticalAlignment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messagesAlignment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultTitle",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "customerAvatar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "showCustomerAvatar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "messageFontSize",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "backgroundColor",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "queueTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "queueTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "agentTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "systemAlias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "systemAvatar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "vidaooEscalation",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "vidaooApiKey",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/websites/{id}",
+    "title": "Deletes a Website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteWebsites",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/describe",
+    "title": "Gets table info about Websites",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeWebsites",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/users",
+    "title": "Gets agents from website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites",
+    "title": "Gets a list of Websites",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetWebsites",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/chat/websites?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/chat/websites?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/chat/websites?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/chat/websites?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/chat/websites?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/websites/{id}/users",
+    "title": "Removes agents from a website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/websites/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/websites/{id}/dispositions",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}",
+    "title": "Gets a single Website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowWebsites",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/avatar",
+    "title": "Add avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/customer_avatar",
+    "title": "Add customer avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/customer_avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addCustomerAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/accounts/{id}/interactions",
+    "title": "Creates new interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/interactions -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addInteraction",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ratingValue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"star\"",
+              "\"thumb\""
+            ],
+            "optional": true,
+            "field": "ratingType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "ratingMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "pathTranscript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailTranscript",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "browserName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "browserVersion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "osName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "osVersion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceModel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceVendor",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deviceType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "referer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customerIp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "formData",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closeReason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customerPort",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "vidaooSessionId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/logo",
+    "title": "Add logo",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/logo -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addLogo",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/proactive_actions",
+    "title": "Creates new Proactive Actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/proactive_actions -d '[{\"name\": \"Satisfied\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addProactiveActions",
+    "group": "Chat_Websites",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"mouseOver\"",
+              "\"timeout\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "selector",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/system_avatar",
+    "title": "Add system avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/system_avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addSystemAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/applications",
+    "title": "Gets Website Applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/avatar",
+    "title": "Get avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/avatar -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/customer_avatar",
+    "title": "Get Customer Avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/customer_avatar -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getCustomerAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/fields",
+    "title": "Gets Website Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/interactions",
+    "title": "Gets Website Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getInteraction",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/logo",
+    "title": "Get logo",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/logo -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getLogo",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/offline_messages",
+    "title": "Gets Website Offline Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/offline_messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getOfflineMessages",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/proactive_actions",
+    "title": "Gets Website Proactive Actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/proactive_actions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getProactiveActions",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/snippet",
+    "title": "Gets Website Snippet",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/snippet -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSnippet",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "get",
+    "url": "/api/chat/websites/{id}/system_avatar",
+    "title": "Get System Avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/system_avatar -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSystemAvatar",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/notify",
+    "title": "Notify new message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "notify",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new chat message to be sent to the system.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/chat/websites/{id}/offline",
+    "title": "Offline message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id}/offline -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "offline",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatMessage/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "put",
+    "url": "/api/chat/websites/{id}",
+    "title": "Update an existing Website",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/websites/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateWebsites",
+    "group": "Chat_Websites",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatWebsite/index.js",
+    "groupTitle": "Chat_Websites"
+  },
+  {
+    "type": "post",
+    "url": "/api/cloudProviders",
+    "title": "Creates a new CloudProvider",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cloudProviders -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCloudProviders",
+    "group": "CloudProviders",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"AmazonAWS\"",
+              "\"Google\""
+            ],
+            "optional": false,
+            "field": "service",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data1",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data2",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cloudProvider/index.js",
+    "groupTitle": "CloudProviders"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cloudProviders/{id}",
+    "title": "Deletes a CloudProvider",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cloudProviders/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCloudProviders",
+    "group": "CloudProviders",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cloudProvider/index.js",
+    "groupTitle": "CloudProviders"
+  },
+  {
+    "type": "get",
+    "url": "/api/cloudProviders",
+    "title": "Gets a list of CloudProviders",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cloudProviders -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCloudProviders",
+    "group": "CloudProviders",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cloudProviders?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cloudProviders?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cloudProviders?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cloudProviders?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cloudProviders?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cloudProvider/index.js",
+    "groupTitle": "CloudProviders"
+  },
+  {
+    "type": "get",
+    "url": "/api/cloudProviders/{id}",
+    "title": "Gets a single CloudProvider",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cloudProviders/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCloudProviders",
+    "group": "CloudProviders",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cloudProvider/index.js",
+    "groupTitle": "CloudProviders"
+  },
+  {
+    "type": "put",
+    "url": "/api/cloudProviders/{id}",
+    "title": "Update an existing CloudProvider",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cloudProviders/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCloudProviders",
+    "group": "CloudProviders",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cloudProvider/index.js",
+    "groupTitle": "CloudProviders"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/companies",
+    "title": "Creates a new Company",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCompanies",
+    "group": "Cm_Companies",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "vat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "companyId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "website",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "street",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "postalCode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "city",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "country",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "emailDomain",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sStreet",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sPostalCode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sCity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sCountry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/companies/{id}",
+    "title": "Deletes a Company",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCompanies",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/companies/describe",
+    "title": "Gets table info about Companies",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeCompanies",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/companies",
+    "title": "Gets a list of Companies",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCompanies",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/companies?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/companies?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/companies?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/companies?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/companies?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/companies/{id}",
+    "title": "Gets a single Company",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCompanies",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/companies/{id}/contacts",
+    "title": "Creates new contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies/{id}/contacts -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addContacts",
+    "group": "Cm_Companies",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "firstName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "street",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "postalCode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "city",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "country",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dateOfBirth",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mobile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "url",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "facebook",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fb_data",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "twitter",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "skype",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "teams",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "viber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "line",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "wechat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "telegram",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "UserId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "scheduledat",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/companies/{id}/contacts",
+    "title": "Gets List Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/companies/{id}/contacts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getContacts",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/companies/{id}",
+    "title": "Update an existing Company",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/companies/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCompanies",
+    "group": "Cm_Companies",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCompany/index.js",
+    "groupTitle": "Cm_Companies"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/contacts/{id}",
+    "title": "Deletes a Contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteContacts",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/describe",
+    "title": "Gets table info about Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeContacts",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts",
+    "title": "Gets a list of Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetContacts",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/contacts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/contacts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/contacts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/contacts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/contacts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}/finals",
+    "title": "Gets contact hopper finals",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_finals -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperFinals",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}/hopper_histories",
+    "title": "Gets contact hopper histories",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_histories -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperHistories",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}/hoppers",
+    "title": "Gets contact hoppers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/hoppers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHoppers",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/create_many",
+    "title": "Create Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/create_many -d '[{\"firstName\": \"John\", \"lastName\": \"doe\", \"...\": \"...\"}]' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "bulkCreate",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts",
+    "title": "Create Contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts -d '{\"firstName\": \"John\", \"lastName\": \"doe\", \"...\": \"...\"}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "create",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}/jscripty_sessions",
+    "title": "Gets contact hopper blacks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/hopper_black -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getJscriptySessions",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}/tags",
+    "title": "Gets configurations tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/tags -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getTags",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/merge",
+    "title": "Merge Contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/merge -d '{\"from\": 1, \"to\": 2}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "merge",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/{id}/tags",
+    "title": "Sets new tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id}/tags -d '{\"ids\": [1,12]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "setTags",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/contacts/{id}",
+    "title": "Gets a single Contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id} -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "show",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/contacts/{id}",
+    "title": "Update a single Contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/{id} -d '{\"firstName\": \"John\", \"lastName\": \"Doe\"}' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "Cm_Contacts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_Contacts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/custom_fields/{id}",
+    "title": "Deletes a Custom Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/custom_fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCustom_Fields",
+    "group": "Cm_Custom_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCustomField/index.js",
+    "groupTitle": "Cm_Custom_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/custom_fields",
+    "title": "Gets a list of Custom Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/custom_fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCustom_Fields",
+    "group": "Cm_Custom_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/custom_fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/custom_fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/custom_fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/custom_fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/custom_fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCustomField/index.js",
+    "groupTitle": "Cm_Custom_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/custom_fields/{id}",
+    "title": "Gets a single Custom Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/custom_fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCustom_Fields",
+    "group": "Cm_Custom_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCustomField/index.js",
+    "groupTitle": "Cm_Custom_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/custom_fields/{id}",
+    "title": "Update an existing Custom Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/custom_fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCustom_Fields",
+    "group": "Cm_Custom_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCustomField/index.js",
+    "groupTitle": "Cm_Custom_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper",
+    "title": "Creates a new Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateHopper",
+    "group": "Cm_Hopper",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "active",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "scheduledat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countbusyretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countcongestionretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countnoanswerretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "callback",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackuniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "recallme",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ContactId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ListId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "UserId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "VoiceQueueId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "CampaignId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countnosuchnumberretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countdropretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countabandonedretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countmachineretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countagentrejectretry",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper/describe",
+    "title": "Gets table info about Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeHopper",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper",
+    "title": "Gets a list of Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopper",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper/{id}",
+    "title": "Gets a single Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowHopper",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/hopper_black/{id}",
+    "title": "Deletes a Hopper Black",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_black/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteHopper_Black",
+    "group": "Cm_Hopper_Black",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperBlack/index.js",
+    "groupTitle": "Cm_Hopper_Black"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_black/describe",
+    "title": "Gets table info about Hopper Black",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_black/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeHopper_Black",
+    "group": "Cm_Hopper_Black",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperBlack/index.js",
+    "groupTitle": "Cm_Hopper_Black"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_black",
+    "title": "Gets a list of Hopper Black",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_black -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopper_Black",
+    "group": "Cm_Hopper_Black",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_black?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_black?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_black?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_black?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_black?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperBlack/index.js",
+    "groupTitle": "Cm_Hopper_Black"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_black/{id}",
+    "title": "Gets a single Hopper Black",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_black/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowHopper_Black",
+    "group": "Cm_Hopper_Black",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperBlack/index.js",
+    "groupTitle": "Cm_Hopper_Black"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/hopper_black/{id}",
+    "title": "Update an existing Hopper Black",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_black/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateHopper_Black",
+    "group": "Cm_Hopper_Black",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperBlack/index.js",
+    "groupTitle": "Cm_Hopper_Black"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper_final/checkContactHopper",
+    "title": "Check if contact is in hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/checkContactHopper -d '{\"VoiceQueueId\": \"VoiceQueueId\", \"CampaignId\": \"CampaignId\", \"ContactId\": \"ContactId\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "/checkContactHopper",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_final/describe",
+    "title": "Gets table info about HopperFinal",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_final/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_final",
+    "title": "Gets a list of HopperFinal",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_final -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_final?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_final?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_final?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_final?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_final?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_final/{id}",
+    "title": "Gets a single HopperFinal",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_final/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_final/campaign/countAttributes/{id}",
+    "title": "Return number contacts for attributes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/campaign/countAttributes/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "countContactsIvrCampaignHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_final/voice/queue/countAttributes/{id}",
+    "title": "Return number contacts for attributes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/voice/queue/countAttributes/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "countContactsQueueCampaignHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper_final/campaign/{id}",
+    "title": "Move contacts in hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/campaign/moveContacts/{id} -d '{\"state\": \"state\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "moveContactsIvrCampaignHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper_final/voice/queue/{id}",
+    "title": "Move contacts in hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/voice/queue/moveContacts/{id} -d '{\"state\": \"state\"}' -H 'Content-Type: application/json' -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "moveContactsQueueCampaignHopperFinal",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/hopper_final/{id}",
+    "title": "Update a single hopper final",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_final/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "Cm_Hopper_Final",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperFinal/index.js",
+    "groupTitle": "Cm_Hopper_Final"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper_history",
+    "title": "Creates a new HopperHistory",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_history -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateHopperHistory",
+    "group": "Cm_Hopper_History",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "state",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "statedesc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "scheduledat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countbusyretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countcongestionretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countnoanswerretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countglobal",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "originatecalleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "originatecalleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "starttime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "responsetime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "answertime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "droptime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "endtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "ringtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "holdtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "talktime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "followuptime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dropreason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "campaign",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "campaigntype",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "amd",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "callback",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackuniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "recallme",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "editedat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "edited",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countnosuchnumberretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countdropretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countabandonedretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countmachineretry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "countagentrejectretry",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperHistory/index.js",
+    "groupTitle": "Cm_Hopper_History"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_history/describe",
+    "title": "Gets table info about HopperHistory",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_history/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeHopperHistory",
+    "group": "Cm_Hopper_History",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperHistory/index.js",
+    "groupTitle": "Cm_Hopper_History"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_history",
+    "title": "Gets a list of HopperHistory",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_history -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperHistory",
+    "group": "Cm_Hopper_History",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/hopper_history?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/hopper_history?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/hopper_history?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/hopper_history?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/hopper_history?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperHistory/index.js",
+    "groupTitle": "Cm_Hopper_History"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper_history/{id}",
+    "title": "Gets a single HopperHistory",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper_history/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowHopperHistory",
+    "group": "Cm_Hopper_History",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperHistory/index.js",
+    "groupTitle": "Cm_Hopper_History"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/hopper_history/{id}",
+    "title": "Update a single hopper history",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/hopper_history/{id} -d '{\"disposition\": \"OK\"}' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "Cm_Hopper_History",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopperHistory/index.js",
+    "groupTitle": "Cm_Hopper_History"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/hopper/{id}",
+    "title": "Delete Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroy",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/hopper/opencontacts",
+    "title": "Gets Open Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/opencontacts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getOpenContacts",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/hopper/preview",
+    "title": "Gets Preview Dialer Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/preview -d '{\"hopperIds\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getPreview",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/hopper/{id}",
+    "title": "Update an existing Hopper",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/hopper/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateHopper",
+    "group": "Cm_Hopper",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmHopper/index.js",
+    "groupTitle": "Cm_Hopper"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/lists",
+    "title": "Creates a new List",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateLists",
+    "group": "Cm_Lists",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialPrefix",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/lists/{id}",
+    "title": "Deletes a List",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteLists",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/describe",
+    "title": "Gets table info about Lists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeLists",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}/users",
+    "title": "Gets agents from list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists",
+    "title": "Gets a list of Lists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetLists",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cm/lists?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cm/lists?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cm/lists?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cm/lists?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cm/lists?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/lists/{id}/users",
+    "title": "Removes agents from a list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cm/lists/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}",
+    "title": "Gets a single List",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowLists",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/lists/{id}/users",
+    "title": "Adds agents to a list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAgents",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/lists/{id}/contacts",
+    "title": "Creates new contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/contacts -d '[{\"firstName\": \"John Doe\", \"email\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addContacts",
+    "group": "Cm_Lists",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "firstName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "street",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "postalCode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "city",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "country",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dateOfBirth",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mobile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "url",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "facebook",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fb_data",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "twitter",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "skype",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "teams",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "viber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "line",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "wechat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "telegram",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "UserId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "scheduledat",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/lists/{id}/fields",
+    "title": "Creates a new custom field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/fields -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addCustomField",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/lists/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Cm_Lists",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}/contacts",
+    "title": "Gets List Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/contacts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getContacts",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}/fields",
+    "title": "Gets Custom Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getCustomFields",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}/dispositions",
+    "title": "Gets list dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "get",
+    "url": "/api/cm/lists/{id}/contacts/csv",
+    "title": "Gets CSV List Contacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id}/contacts/csv -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "grunt",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "put",
+    "url": "/api/cm/lists/{id}",
+    "title": "Update an existing List",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/lists/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateLists",
+    "group": "Cm_Lists",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmList/index.js",
+    "groupTitle": "Cm_Lists"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/upload/:id",
+    "title": "Import new contacts by csv",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/upload/:id -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "import",
+    "group": "Cm_contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/upload",
+    "title": "Upload csv",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/upload -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "upload",
+    "group": "Cm_contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_contacts"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/contacts/csv",
+    "title": "Create new contacts by csv",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/contacts/csv -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "uploadCsv",
+    "group": "Cm_contacts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmContact/index.js",
+    "groupTitle": "Cm_contacts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/conditions/{id}",
+    "title": "Deletes a Condition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/conditions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteConditions",
+    "group": "Conditions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/condition/index.js",
+    "groupTitle": "Conditions"
+  },
+  {
+    "type": "put",
+    "url": "/api/conditions/{id}",
+    "title": "Update an existing Condition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/conditions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateConditions",
+    "group": "Conditions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/condition/index.js",
+    "groupTitle": "Conditions"
+  },
+  {
+    "type": "post",
+    "url": "/api/cm/custom_field",
+    "title": "Create a new custom field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cm/custom_field  -d '{\"name\": \"mycf\", \"type\": \"text\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCustomField",
+    "group": "Custom_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cmCustomField/index.js",
+    "groupTitle": "Custom_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/dashboards/items",
+    "title": "Create dasboard item",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/items \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Dashboard_Items",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboardItem/index.js",
+    "groupTitle": "Dashboard_Items"
+  },
+  {
+    "type": "delete",
+    "url": "/api/dashboards/items/{id}",
+    "title": "Deletes a Dashboard Item",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDashboard_Items",
+    "group": "Dashboard_Items",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboardItem/index.js",
+    "groupTitle": "Dashboard_Items"
+  },
+  {
+    "type": "get",
+    "url": "/api/dashboards/items/{id}",
+    "title": "Gets a single Dashboard Item",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDashboard_Items",
+    "group": "Dashboard_Items",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboardItem/index.js",
+    "groupTitle": "Dashboard_Items"
+  },
+  {
+    "type": "put",
+    "url": "/api/dashboards/items/{id}",
+    "title": "Update an existing item",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/items/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Update",
+    "group": "Dashboard_Items",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboardItem/index.js",
+    "groupTitle": "Dashboard_Items"
+  },
+  {
+    "type": "post",
+    "url": "/api/dashboards/clone",
+    "title": "Clone an existing Dashboard",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneDashboards",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "post",
+    "url": "/api/dashboards",
+    "title": "Creates a new Dashboard",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDashboards",
+    "group": "Dashboards",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "delete",
+    "url": "/api/dashboards/{id}",
+    "title": "Deletes a Dashboard",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDashboards",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "get",
+    "url": "/api/dashboards",
+    "title": "Gets a list of Dashboards",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDashboards",
+    "group": "Dashboards",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/dashboards?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/dashboards?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/dashboards?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/dashboards?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/dashboards?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "get",
+    "url": "/api/dashboards/{id}",
+    "title": "Gets a single Dashboard",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDashboards",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "post",
+    "url": "/api/dashboards/{id}/items",
+    "title": "Creates new item",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/{id}/items -d '{\"type\": \"counter\", \"...\": \"...\"}]' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addItem",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "get",
+    "url": "/api/dashboards/{id}/items",
+    "title": "Gets items",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/{id}/items -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getItems",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "put",
+    "url": "/api/dashboards/{id}",
+    "title": "Update an existing Dashboard",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dashboards/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDashboards",
+    "group": "Dashboards",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/dashboard/index.js",
+    "groupTitle": "Dashboards"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/desk/accounts",
+    "title": "Creates a new Desk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDesk_Accounts",
+    "group": "Desk_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"basic\""
+            ],
+            "optional": true,
+            "field": "authType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "consumerKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "consumerSecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tokenSecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"integrationTab\"",
+              "\"newTab\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/desk/accounts/{id}",
+    "title": "Deletes a Desk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDesk_Accounts",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/accounts",
+    "title": "Gets a list of Desk Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDesk_Accounts",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/accounts/{id}",
+    "title": "Gets a single Desk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDesk_Accounts",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/desk/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/desk/accounts/{id}",
+    "title": "Update an existing Desk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDesk_Accounts",
+    "group": "Desk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskAccount/index.js",
+    "groupTitle": "Desk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/desk/configurations",
+    "title": "Creates a new Desk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDesk_Configurations",
+    "group": "Desk_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/desk/configurations/{id}",
+    "title": "Deletes a Desk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDesk_Configurations",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations",
+    "title": "Gets a list of Desk Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDesk_Configurations",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations/{id}",
+    "title": "Gets a single Desk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDesk_Configurations",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/configurations/{id}/tags",
+    "title": "Gets configurations tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/tags -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getTags",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/desk/configurations/{id}/tags",
+    "title": "Sets new tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "setTags",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/desk/configurations/{id}",
+    "title": "Update an existing Desk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDesk_Configurations",
+    "group": "Desk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskConfiguration/index.js",
+    "groupTitle": "Desk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/desk/fields",
+    "title": "Creates a new Desk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDesk_Fields",
+    "group": "Desk_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskField/index.js",
+    "groupTitle": "Desk_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/desk/fields/{id}",
+    "title": "Deletes a Desk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDesk_Fields",
+    "group": "Desk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskField/index.js",
+    "groupTitle": "Desk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/fields",
+    "title": "Gets a list of Desk Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDesk_Fields",
+    "group": "Desk_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/desk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/desk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/desk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/desk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/desk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskField/index.js",
+    "groupTitle": "Desk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/desk/fields/{id}",
+    "title": "Gets a single Desk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDesk_Fields",
+    "group": "Desk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskField/index.js",
+    "groupTitle": "Desk_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/desk/fields/{id}",
+    "title": "Update an existing Desk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/desk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDesk_Fields",
+    "group": "Desk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDeskField/index.js",
+    "groupTitle": "Desk_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/dispositions",
+    "title": "Creates a new Disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dispositions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDispositions",
+    "group": "Dispositions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/disposition/index.js",
+    "groupTitle": "Dispositions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/dispositions/{id}",
+    "title": "Deletes a Disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dispositions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDispositions",
+    "group": "Dispositions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/disposition/index.js",
+    "groupTitle": "Dispositions"
+  },
+  {
+    "type": "get",
+    "url": "/api/dispositions",
+    "title": "Gets a list of Dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dispositions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDispositions",
+    "group": "Dispositions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/dispositions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/dispositions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/dispositions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/dispositions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/dispositions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/disposition/index.js",
+    "groupTitle": "Dispositions"
+  },
+  {
+    "type": "get",
+    "url": "/api/dispositions/{id}",
+    "title": "Gets a single Disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dispositions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDispositions",
+    "group": "Dispositions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/disposition/index.js",
+    "groupTitle": "Dispositions"
+  },
+  {
+    "type": "put",
+    "url": "/api/dispositions/{id}",
+    "title": "Update an existing Disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/dispositions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDispositions",
+    "group": "Dispositions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/disposition/index.js",
+    "groupTitle": "Dispositions"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/dynamics365/accounts",
+    "title": "Creates a new Dynamics365 Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDynamics365_Accounts",
+    "group": "Dynamics365_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tenantId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientSecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/dynamics365/accounts/{id}",
+    "title": "Deletes a Dynamics365 Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDynamics365_Accounts",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/accounts",
+    "title": "Gets a list of Dynamics365 Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDynamics365_Accounts",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/accounts/{id}",
+    "title": "Gets a single Dynamics365 Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDynamics365_Accounts",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/dynamics365/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/dynamics365/accounts/{id}",
+    "title": "Update an existing Dynamics365 Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDynamics365_Accounts",
+    "group": "Dynamics365_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Account/index.js",
+    "groupTitle": "Dynamics365_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/dynamics365/configurations",
+    "title": "Creates a new Dynamics365 Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDynamics365_Configurations",
+    "group": "Dynamics365_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"incident\"",
+              "\"phonecall\""
+            ],
+            "optional": true,
+            "field": "ticketType",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/dynamics365/configurations/{id}",
+    "title": "Deletes a Dynamics365 Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDynamics365_Configurations",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/configurations",
+    "title": "Gets a list of Dynamics365 Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDynamics365_Configurations",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/configurations/{id}",
+    "title": "Gets a single Dynamics365 Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDynamics365_Configurations",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/dynamics365/configurations/{id}",
+    "title": "Update an existing Dynamics365 Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDynamics365_Configurations",
+    "group": "Dynamics365_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Configuration/index.js",
+    "groupTitle": "Dynamics365_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/dynamics365/fields",
+    "title": "Creates a new Dynamics365 Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateDynamics365_Fields",
+    "group": "Dynamics365_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Field/index.js",
+    "groupTitle": "Dynamics365_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/dynamics365/fields/{id}",
+    "title": "Deletes a Dynamics365 Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteDynamics365_Fields",
+    "group": "Dynamics365_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Field/index.js",
+    "groupTitle": "Dynamics365_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/fields",
+    "title": "Gets a list of Dynamics365 Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDynamics365_Fields",
+    "group": "Dynamics365_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/dynamics365/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/dynamics365/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/dynamics365/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Field/index.js",
+    "groupTitle": "Dynamics365_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/dynamics365/fields/{id}",
+    "title": "Gets a single Dynamics365 Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDynamics365_Fields",
+    "group": "Dynamics365_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Field/index.js",
+    "groupTitle": "Dynamics365_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/dynamics365/fields/{id}",
+    "title": "Update an existing Dynamics365 Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/dynamics365/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateDynamics365_Fields",
+    "group": "Dynamics365_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intDynamics365Field/index.js",
+    "groupTitle": "Dynamics365_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/users",
+    "title": "Add agents to a fax account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts",
+    "title": "Creates a new Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAccounts",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "ecm",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "headerinfo",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "localstationid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"2400\"",
+              "\"4800\"",
+              "\"7200\"",
+              "\"9600\"",
+              "\"12000\"",
+              "\"14400\""
+            ],
+            "optional": true,
+            "field": "minrate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"2400\"",
+              "\"4800\"",
+              "\"7200\"",
+              "\"9600\"",
+              "\"12000\"",
+              "\"14400\""
+            ],
+            "optional": true,
+            "field": "maxrate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "modem",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "gateway",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "faxdetect",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "t38timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"SIP\"",
+              "\"IAX\"",
+              "\"DADHI\"",
+              "\"KHOMP\""
+            ],
+            "optional": true,
+            "field": "tech",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notificationTemplate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationSound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationShake",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "waitForTheAssignedAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "queueTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "queueTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "agentTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/accounts/{id}",
+    "title": "Deletes a Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAccounts",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/describe",
+    "title": "Gets table info about Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAccounts",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts",
+    "title": "Gets a list of Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAccounts",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/users",
+    "title": "Gets agents from fax account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/accounts/{id}/users",
+    "title": "Removes agents from a fax account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/accounts/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/accounts/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}",
+    "title": "Gets a single Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAccounts",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/addaccountapplications",
+    "title": "Creates new account and applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/addaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/interactions",
+    "title": "Creates new interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/interactions -d '[{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addInteraction",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/applications",
+    "title": "Gets account pplications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/interactions",
+    "title": "Gets account interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getInteraction",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/accounts/{id}/messages",
+    "title": "Gets account messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/{id}/send",
+    "title": "Send new fax",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id}/send -d '{from: '\"John Doe\" <123456>'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "sendFax",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/accounts/{id}",
+    "title": "Update an existing Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAccounts",
+    "group": "Fax_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/accounts/updateaccountapplications",
+    "title": "Update account and applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/accounts/updateaccountapplications -d '[{\"name\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Fax_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxAccount/index.js",
+    "groupTitle": "Fax_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/applications",
+    "title": "Creates a new Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateApplications",
+    "group": "Fax_Applications",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxApplication/index.js",
+    "groupTitle": "Fax_Applications"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Fax_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxApplication/index.js",
+    "groupTitle": "Fax_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/applications",
+    "title": "Gets a list of Applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/applications -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetApplications",
+    "group": "Fax_Applications",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxApplication/index.js",
+    "groupTitle": "Fax_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Fax_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxApplication/index.js",
+    "groupTitle": "Fax_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Fax_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxApplication/index.js",
+    "groupTitle": "Fax_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Fax_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fax",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/interactions/{id}/messages",
+    "title": "Creates new messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Fax_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "failMessage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/interactions/{id}/download",
+    "title": "Get interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Fax_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxInteraction/index.js",
+    "groupTitle": "Fax_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/messages/{id}/download",
+    "title": "Get message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Fax_Message",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Message"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/messages",
+    "title": "Create message and send Fax",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Fax_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxMessage/index.js",
+    "groupTitle": "Fax_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/reports/queue",
+    "title": "Creates a new Fax Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/reports/queue/{id}",
+    "title": "Deletes a Fax Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/queue/describe",
+    "title": "Gets table info about Fax Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/queue",
+    "title": "Gets a list of Fax Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/queue/{id}",
+    "title": "Gets a single Fax Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/reports/queue/{id}",
+    "title": "Update an existing Fax Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFax_Queue_Reports",
+    "group": "Fax_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueueReport/index.js",
+    "groupTitle": "Fax_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Fax_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": false,
+            "field": "strategy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "lastAgent",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Fax_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Fax_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/fax/reports/transfer",
+    "title": "Creates a new Fax Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/reports/transfer/{id}",
+    "title": "Deletes a Fax Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/transfer/describe",
+    "title": "Gets table info about Fax Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/transfer",
+    "title": "Gets a list of Fax Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/fax/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/fax/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/fax/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/fax/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/fax/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/fax/reports/transfer/{id}",
+    "title": "Gets a single Fax Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/fax/reports/transfer/{id}",
+    "title": "Update an existing Fax Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFax_Transfer_Reports",
+    "group": "Fax_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxTransferReport/index.js",
+    "groupTitle": "Fax_Transfer_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshdesk/accounts",
+    "title": "Creates a new Freshdesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshdesk_Accounts",
+    "group": "Freshdesk_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "apiKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshdesk/accounts/{id}",
+    "title": "Deletes a Freshdesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshdesk_Accounts",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/accounts",
+    "title": "Gets a list of Freshdesk Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshdesk_Accounts",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/accounts/{id}",
+    "title": "Gets a single Freshdesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshdesk_Accounts",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshdesk/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshdesk/accounts/{id}",
+    "title": "Update an existing Freshdesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshdesk_Accounts",
+    "group": "Freshdesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskAccount/index.js",
+    "groupTitle": "Freshdesk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshdesk/configurations",
+    "title": "Creates a new Freshdesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshdesk_Configurations",
+    "group": "Freshdesk_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshdesk/configurations/{id}",
+    "title": "Deletes a Freshdesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshdesk_Configurations",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations",
+    "title": "Gets a list of Freshdesk Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshdesk_Configurations",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations/{id}",
+    "title": "Gets a single Freshdesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshdesk_Configurations",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/configurations/{id}/tags",
+    "title": "Gets configurations tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/tags -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getTags",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshdesk/configurations/{id}/tags",
+    "title": "Sets new tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "setTags",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshdesk/configurations/{id}",
+    "title": "Update an existing Freshdesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshdesk_Configurations",
+    "group": "Freshdesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskConfiguration/index.js",
+    "groupTitle": "Freshdesk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshdesk/fields",
+    "title": "Creates a new Freshdesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshdesk_Fields",
+    "group": "Freshdesk_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskField/index.js",
+    "groupTitle": "Freshdesk_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshdesk/fields/{id}",
+    "title": "Deletes a Freshdesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshdesk_Fields",
+    "group": "Freshdesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskField/index.js",
+    "groupTitle": "Freshdesk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/fields",
+    "title": "Gets a list of Freshdesk Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshdesk_Fields",
+    "group": "Freshdesk_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshdesk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshdesk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshdesk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskField/index.js",
+    "groupTitle": "Freshdesk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshdesk/fields/{id}",
+    "title": "Gets a single Freshdesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshdesk_Fields",
+    "group": "Freshdesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskField/index.js",
+    "groupTitle": "Freshdesk_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshdesk/fields/{id}",
+    "title": "Update an existing Freshdesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshdesk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshdesk_Fields",
+    "group": "Freshdesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshdeskField/index.js",
+    "groupTitle": "Freshdesk_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshsales/accounts",
+    "title": "Creates a new Freshsales Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshsales_Accounts",
+    "group": "Freshsales_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "apiKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshsales/accounts/{id}",
+    "title": "Deletes a Freshsales Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshsales_Accounts",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/accounts",
+    "title": "Gets a list of Freshsales Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshsales_Accounts",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/accounts/{id}",
+    "title": "Gets a single Freshsales Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshsales_Accounts",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshsales/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshsales/accounts/{id}",
+    "title": "Update an existing Freshsales Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshsales_Accounts",
+    "group": "Freshsales_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesAccount/index.js",
+    "groupTitle": "Freshsales_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshsales/configurations",
+    "title": "Creates a new Freshsales Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshsales_Configurations",
+    "group": "Freshsales_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshsales/configurations/{id}",
+    "title": "Deletes a Freshsales Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshsales_Configurations",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/configurations",
+    "title": "Gets a list of Freshsales Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshsales_Configurations",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/configurations/{id}",
+    "title": "Gets a single Freshsales Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshsales_Configurations",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshsales/configurations/{id}",
+    "title": "Update an existing Freshsales Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshsales_Configurations",
+    "group": "Freshsales_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesConfiguration/index.js",
+    "groupTitle": "Freshsales_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/freshsales/fields",
+    "title": "Creates a new Freshsales Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateFreshsales_Fields",
+    "group": "Freshsales_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesField/index.js",
+    "groupTitle": "Freshsales_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/freshsales/fields/{id}",
+    "title": "Deletes a Freshsales Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteFreshsales_Fields",
+    "group": "Freshsales_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesField/index.js",
+    "groupTitle": "Freshsales_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/fields",
+    "title": "Gets a list of Freshsales Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetFreshsales_Fields",
+    "group": "Freshsales_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/freshsales/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/freshsales/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/freshsales/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesField/index.js",
+    "groupTitle": "Freshsales_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/freshsales/fields/{id}",
+    "title": "Gets a single Freshsales Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowFreshsales_Fields",
+    "group": "Freshsales_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesField/index.js",
+    "groupTitle": "Freshsales_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/freshsales/fields/{id}",
+    "title": "Update an existing Freshsales Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/freshsales/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateFreshsales_Fields",
+    "group": "Freshsales_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intFreshsalesField/index.js",
+    "groupTitle": "Freshsales_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/campaigns/{id}/blacklists",
+    "title": "Add blacklists to an IVR campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/blacklists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddBlackLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "post",
+    "url": "/api/campaigns/{id}/lists",
+    "title": "Add lists to an IVR campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/lists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "post",
+    "url": "/api/campaigns/clone",
+    "title": "Clone an existing IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "post",
+    "url": "/api/campaigns",
+    "title": "Creates a new IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"ivr\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "active",
+            "description": "<p>Active/Disactive Campaign</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "limitCalls",
+            "description": "<p>Max 200 calls.</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialOriginateCallerIdName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialOriginateCallerIdNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialOriginateTimeout",
+            "description": "<p>Originate Timeout Seconds (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCongestionMaxRetry",
+            "description": "<p>#Congestion Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCongestionRetryFrequency",
+            "description": "<p>Congestion Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialBusyMaxRetry",
+            "description": "<p>#Busy Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialBusyRetryFrequency",
+            "description": "<p>Busy Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoAnswerMaxRetry",
+            "description": "<p>#NoAnswer Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoAnswerRetryFrequency",
+            "description": "<p>NoAnswer Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialGlobalMaxRetry",
+            "description": "<p>#Global Max Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialTimezone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialGlobalInterval",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"always\"",
+              "\"never\"",
+              "\"onlyIfOpen\""
+            ],
+            "optional": true,
+            "field": "dialCheckDuplicateType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialAMDActive",
+            "description": "<p>Active/Disactive AMD</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDInitialSilence",
+            "description": "<p>#AMD Initial Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDGreeting",
+            "description": "<p>#AMD Greeting</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDAfterGreetingSilence",
+            "description": "<p>#AMD After Greeting Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDTotalAnalysisTime",
+            "description": "<p>#AMD Total Analysis Time</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMinWordLength",
+            "description": "<p>#AMD Min Word Length</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDBetweenWordsSilence",
+            "description": "<p>#AMD Between Words Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMaximumNumberOfWords",
+            "description": "<p>#AMD Maximum Number Of Words</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDSilenceThreshold",
+            "description": "<p>#AMD Silence Threshold (min:0, max:32767)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMaximumWordLength",
+            "description": "<p>#AMD Maximum Word Length</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"DESC\"",
+              "\"ASC\""
+            ],
+            "optional": true,
+            "field": "dialOrderByScheduledAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialPrefix",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialRandomLastDigitCallerIdNumber",
+            "description": "<p>Random Last Digit (min:1, max:15)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCutDigit",
+            "description": "<p>Cut Digit (min:1, max:15)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoSuchNumberMaxRetry",
+            "description": "<p>#NoSuchNumber Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoSuchNumberRetryFrequency",
+            "description": "<p>NoSuchNumber Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialDropMaxRetry",
+            "description": "<p>#Drop Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialDropRetryFrequency",
+            "description": "<p>Drop Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAbandonedMaxRetry",
+            "description": "<p>#Abandoned Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAbandonedRetryFrequency",
+            "description": "<p>Abandoned Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialMachineMaxRetry",
+            "description": "<p>#Machine Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialMachineRetryFrequency",
+            "description": "<p>Machine Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAgentRejectMaxRetry",
+            "description": "<p>#AgentReject Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAgentRejectRetryFrequency",
+            "description": "<p>AgentReject Retry Frequency Minutes (min:1, max:99999)</p>"
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "delete",
+    "url": "/api/campaigns/{id}",
+    "title": "Deletes a IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/blacklists",
+    "title": "Get IVR campaign blacklists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/blacklists -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetBlackLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/finals",
+    "title": "Gets IVR campaign hopper finals",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/hopper_finals -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperFinals",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/hopper_histories",
+    "title": "Gets IVR campaign hopper histories",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/hopper_histories -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperHistories",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/hoppers",
+    "title": "Gets IVR campaign hoppers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/hoppers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHoppers",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns",
+    "title": "Gets a list of IVR Campaigns",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/campaigns?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/campaigns?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/campaigns?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/campaigns?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/campaigns?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/lists",
+    "title": "Get IVR campaign lists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/lists -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "delete",
+    "url": "/api/campaigns/{id}/blacklists",
+    "title": "Remove blacklists from an IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/blacklists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveBlackLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "delete",
+    "url": "/api/campaigns/{id}/lists",
+    "title": "Remove lists from an IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/lists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveLists",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}",
+    "title": "Gets a single IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "get",
+    "url": "/api/campaigns/{id}/blacks",
+    "title": "Gets IVR campaign hopper blacks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id}/hopper_black -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getHopperBlacks",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "put",
+    "url": "/api/campaigns/{id}",
+    "title": "Update an existing IVR Campaign",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/campaigns/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateIVR_Campaigns",
+    "group": "IVR_Campaigns",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/campaign/index.js",
+    "groupTitle": "IVR_Campaigns"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/reports",
+    "title": "Creates a new Integration Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateIntegration_Reports",
+    "group": "Integration_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "integration",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "eventChannel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitStatus",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "ticketId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "integrationId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contacts",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interface",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentcalledAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentconnectAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "holdtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentcomplete",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentcompleteAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "talktime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentacw",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "acwtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentringnoanswer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentringnoanswerAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentdump",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "agentdumpAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastevent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "channelstate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channelstatedesc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "connectedlinenum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "connectedlinename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "language",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destchannel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "destchannelstate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destchannelstatedesc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destcalleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destcalleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destconnectedlinenum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destconnectedlinename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destlanguage",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destaccountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destcontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destpriority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "destuniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "inReplyTo",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "subject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "to",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "cc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "attachment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "html",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "text",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"SENT\"",
+              "\"SENDING\"",
+              "\"RECEIVED\"",
+              "\"FAILED\""
+            ],
+            "optional": true,
+            "field": "status",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "url",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "projectId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/reports/{id}",
+    "title": "Deletes a Integration Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteIntegration_Reports",
+    "group": "Integration_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/reports/describe",
+    "title": "Gets table info about Integration Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeIntegration_Reports",
+    "group": "Integration_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/reports",
+    "title": "Gets a list of Integration Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetIntegration_Reports",
+    "group": "Integration_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/reports/{id}",
+    "title": "Gets a single Integration Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowIntegration_Reports",
+    "group": "Integration_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/reports/{id}",
+    "title": "Update an existing Integration Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateIntegration_Reports",
+    "group": "Integration_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/integrationReport/index.js",
+    "groupTitle": "Integration_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/intervals",
+    "title": "Creates a new Interval",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateIntervals",
+    "group": "Intervals",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "delete",
+    "url": "/api/intervals/{id}",
+    "title": "Deletes a Interval",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "get",
+    "url": "/api/intervals",
+    "title": "Gets a list of Intervals",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/intervals?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/intervals?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/intervals?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/intervals?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/intervals?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "get",
+    "url": "/api/intervals/{id}",
+    "title": "Gets a single Interval",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "post",
+    "url": "/api/intervals/{id}/sub_intervals",
+    "title": "Creates a new sub interval",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -d '{\"interval\": \"00:00-08:30,mon-fri,*,*\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addInterval",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "post",
+    "url": "/api/intervals/{id}/sub_intervals/create_many",
+    "title": "Create new sub intervals set",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "get",
+    "url": "/api/intervals/{id}/sub_intervals",
+    "title": "Get sub intervals set",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id}/sub_intervals -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "put",
+    "url": "/api/intervals/{id}",
+    "title": "Update an existing Interval",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/intervals/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateIntervals",
+    "group": "Intervals",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/interval/index.js",
+    "groupTitle": "Intervals"
+  },
+  {
+    "type": "post",
+    "url": "/api/jira",
+    "title": "Creates a new issue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jira -d '{\"key\": \"Bug\", \"description\": \"I can't do it!\"}' \\\n -H \"Content-Type: application/json\" -X POST -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "Creates_Issue",
+    "group": "Issue",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"Bug\""
+            ],
+            "optional": true,
+            "field": "issuetype",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "summary",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jira/index.js",
+    "groupTitle": "Issue"
+  },
+  {
+    "type": "post",
+    "url": "/api/jscripty/answers/reports",
+    "title": "Creates a new Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateReports",
+    "group": "JscriptyAnswerReport",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "question",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "answer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "projectname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "questionId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "delete",
+    "url": "/api/jscripty/answers/reports/{id}",
+    "title": "Deletes a Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteReports",
+    "group": "JscriptyAnswerReport",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/answers/reports/describe",
+    "title": "Gets table info about Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeReports",
+    "group": "JscriptyAnswerReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/answers/reports",
+    "title": "Gets a list of Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetReports",
+    "group": "JscriptyAnswerReport",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/answers/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/answers/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/answers/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/answers/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/answers/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/answers/reports/{id}",
+    "title": "Gets a single Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowReports",
+    "group": "JscriptyAnswerReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "put",
+    "url": "/api/jscripty/answers/reports/{id}",
+    "title": "Update an existing Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/answers/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateReports",
+    "group": "JscriptyAnswerReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyAnswerReport/index.js",
+    "groupTitle": "JscriptyAnswerReport"
+  },
+  {
+    "type": "post",
+    "url": "/api/jscripty/questions/reports",
+    "title": "Creates a new Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateReports",
+    "group": "JscriptyQuestionReport",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "question",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "answer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "projectname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "questionId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "delete",
+    "url": "/api/jscripty/questions/reports/{id}",
+    "title": "Deletes a Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteReports",
+    "group": "JscriptyQuestionReport",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/questions/reports/describe",
+    "title": "Gets table info about Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeReports",
+    "group": "JscriptyQuestionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/questions/reports",
+    "title": "Gets a list of Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetReports",
+    "group": "JscriptyQuestionReport",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/questions/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/questions/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/questions/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/questions/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/questions/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/questions/reports/{id}",
+    "title": "Gets a single Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowReports",
+    "group": "JscriptyQuestionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "put",
+    "url": "/api/jscripty/questions/reports/{id}",
+    "title": "Update an existing Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/questions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateReports",
+    "group": "JscriptyQuestionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyQuestionReport/index.js",
+    "groupTitle": "JscriptyQuestionReport"
+  },
+  {
+    "type": "post",
+    "url": "/api/jscripty/sessions/reports",
+    "title": "Creates a new Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateReports",
+    "group": "JscriptySessionReport",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "starttime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "endtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "projectname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "completed",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "delete",
+    "url": "/api/jscripty/sessions/reports/{id}",
+    "title": "Deletes a Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteReports",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/sessions/reports/describe",
+    "title": "Gets table info about Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeReports",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/sessions/reports",
+    "title": "Gets a list of Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetReports",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/sessions/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/sessions/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/sessions/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/sessions/reports/{id}",
+    "title": "Gets a single Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowReports",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/sessions/reports/{id}/questions",
+    "title": "Gets Jscripty Session questions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id}/questions -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getQuestions",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "put",
+    "url": "/api/jscripty/sessions/reports/{id}",
+    "title": "Update an existing Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/sessions/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateReports",
+    "group": "JscriptySessionReport",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptySessionReport/index.js",
+    "groupTitle": "JscriptySessionReport"
+  },
+  {
+    "type": "post",
+    "url": "/api/jscripty/projects/clone",
+    "title": "Clone an existing Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneProjects",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "post",
+    "url": "/api/jscripty/projects",
+    "title": "Creates a new Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateProjects",
+    "group": "Jscripty_Projects",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "formData",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enableUncompleteSave",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "sendUnpauseOnSubmit",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "delete",
+    "url": "/api/jscripty/projects/{id}",
+    "title": "Deletes a Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteProjects",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/projects",
+    "title": "Gets a list of Projects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetProjects",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/jscripty/projects?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/jscripty/projects?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/jscripty/projects?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/jscripty/projects?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/jscripty/projects?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/projects/{id}",
+    "title": "Gets a single Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowProjects",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/projects/{id}/answers",
+    "title": "Gets jscripty project answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id}/answers -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/projects/{id}/sessions",
+    "title": "Gets jscripty project sessions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id}/sessions -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSessions",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/jscripty/projects/{id}/summary",
+    "title": "Gets jscripty project summary",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id}/summary -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSummary",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "put",
+    "url": "/api/jscripty/projects/{id}",
+    "title": "Update an existing Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/jscripty/projects/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateProjects",
+    "group": "Jscripty_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/jscriptyProject/index.js",
+    "groupTitle": "Jscripty_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/license",
+    "title": "Gets License Info",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/license -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "index",
+    "group": "License",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/license/index.js",
+    "groupTitle": "License"
+  },
+  {
+    "type": "put",
+    "url": "/api/license/{id}",
+    "title": "Update License Info",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/license/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "License",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/license/index.js",
+    "groupTitle": "License"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/users",
+    "title": "Add agents to a mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/in_servers",
+    "title": "Creates a new IMAP server",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddImap",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "authentication",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "user",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "port",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "tls",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "connTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "authTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "service",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/out_servers",
+    "title": "Creates a new SMTP server",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -d '{\"host\": \"host\", \"username\": \"username\", \"password\": \"password\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSmtp",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "user",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pass",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "port",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secure",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "service",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "authentication",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}",
+    "title": "Deletes a mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMailAccounts",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/describe",
+    "title": "Gets table info about Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAccounts",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts",
+    "title": "Gets a list of Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAccounts",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/users",
+    "title": "Gets agents from mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/in_servers",
+    "title": "Gets account IMAP server",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetImap",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/out_servers",
+    "title": "Gets account SMTP server",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetSmtp",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}/users",
+    "title": "Removes agents from a mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}/in_servers",
+    "title": "Removes IMAP server from an account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/in_servers -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveImmap",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/accounts/{id}/out_servers",
+    "title": "Removes SMTP server from an account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/out_servers -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSmtp",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}",
+    "title": "Gets a single Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAccounts",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/interactions",
+    "title": "Creates new interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/interactions -d '[{\"subject\": \"My printer is on fire!\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addInteraction",
+    "group": "Mail_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "inReplyTo",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "to",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "cc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "subject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "attach",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "substatus",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "substatusAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "lastMsgBody",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "lastMsgText",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts",
+    "title": "Create a mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "create",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/applications",
+    "title": "Gets account applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/interactions",
+    "title": "Gets account interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getInteraction",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/messages",
+    "title": "Gets account messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/accounts/{id}/send",
+    "title": "Send new mail",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/send -d '{from: '\"John Doe\" <[email-masked]>'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "sendMail",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/accounts/{id}",
+    "title": "Update an existing Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAccounts",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/accounts/{id}/verify",
+    "title": "Verify mail account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/accounts/{id}/verify -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "verifySmtp",
+    "group": "Mail_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailAccount/index.js",
+    "groupTitle": "Mail_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Mail_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailApplication/index.js",
+    "groupTitle": "Mail_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Mail_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailApplication/index.js",
+    "groupTitle": "Mail_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Mail_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailApplication/index.js",
+    "groupTitle": "Mail_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Mail_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "inReplyTo",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "to",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "cc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "subject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "attach",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "substatus",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "substatusAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "lastMsgBody",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "lastMsgText",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/interactions/{id}/messages",
+    "title": "Creates new message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id}/messages -d '[{\"to\": \"[email-masked]\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Mail_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "plainBody",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "to",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "cc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "bcc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "subject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sentAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "attach",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "originTo",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "originCc",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/interactions/{id}/download",
+    "title": "Gets interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Mail_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailInteraction/index.js",
+    "groupTitle": "Mail_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/messages",
+    "title": "Create a message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "createMessage",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/messages/{id}/download",
+    "title": "Gets message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Mail_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailMessage/index.js",
+    "groupTitle": "Mail_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/reports/queue",
+    "title": "Creates a new Mail Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/reports/queue/{id}",
+    "title": "Deletes a Mail Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/queue/describe",
+    "title": "Gets table info about Mail Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/queue",
+    "title": "Gets a list of Mail Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/queue/{id}",
+    "title": "Gets a single Mail Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/reports/queue/{id}",
+    "title": "Update an existing Mail Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMail_Queue_Reports",
+    "group": "Mail_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueueReport/index.js",
+    "groupTitle": "Mail_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Mail_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": true,
+            "field": "strategy",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Mail_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Mail_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/out_servers",
+    "title": "Creates a new SMTP",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/out_servers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSMTPs",
+    "group": "Mail_SMTP",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "user",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pass",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "port",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secure",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "service",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "authentication",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailServerOut/index.js",
+    "groupTitle": "Mail_SMTP"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/out_servers/{id}",
+    "title": "Deletes a SMTP",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/out_servers/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSMTPs",
+    "group": "Mail_SMTP",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailServerOut/index.js",
+    "groupTitle": "Mail_SMTP"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/out_servers",
+    "title": "Gets a list of SMTPs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/out_servers -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSMTPs",
+    "group": "Mail_SMTP",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/out_servers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/out_servers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/out_servers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/out_servers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/out_servers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailServerOut/index.js",
+    "groupTitle": "Mail_SMTP"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/out_servers/{id}",
+    "title": "Gets a single SMTP",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/out_servers/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSMTPs",
+    "group": "Mail_SMTP",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailServerOut/index.js",
+    "groupTitle": "Mail_SMTP"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/out_servers/{id}",
+    "title": "Update an existing SMTP",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/out_servers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSMTPs",
+    "group": "Mail_SMTP",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailServerOut/index.js",
+    "groupTitle": "Mail_SMTP"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/substatuses",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSubstatuses",
+    "group": "Mail_Substatuses",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/substatuses/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSubstatuses",
+    "group": "Mail_Substatuses",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/substatuses/describe",
+    "title": "Gets table info about Substatuses",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeSubstatuses",
+    "group": "Mail_Substatuses",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/substatuses",
+    "title": "Gets a list of Substatuses",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSubstatuses",
+    "group": "Mail_Substatuses",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/substatuses?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/substatuses?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/substatuses?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/substatuses?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/substatuses?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/substatuses/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSubstatuses",
+    "group": "Mail_Substatuses",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/substatuses/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/substatuses/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSubstatuses",
+    "group": "Mail_Substatuses",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailSubstatus/index.js",
+    "groupTitle": "Mail_Substatuses"
+  },
+  {
+    "type": "post",
+    "url": "/api/mail/reports/transfer",
+    "title": "Creates a new Mail Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/reports/transfer/{id}",
+    "title": "Deletes a Mail Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/transfer/describe",
+    "title": "Gets table info about Mail Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/transfer",
+    "title": "Gets a list of Mail Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/mail/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/mail/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/mail/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/mail/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/mail/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/mail/reports/transfer/{id}",
+    "title": "Gets a single Mail Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/mail/reports/transfer/{id}",
+    "title": "Update an existing Mail Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMail_Transfer_Reports",
+    "group": "Mail_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailTransferReport/index.js",
+    "groupTitle": "Mail_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/members/reports/describe",
+    "title": "Gets table info about Member Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/members/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMember_Reports",
+    "group": "Member_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/memberReport/index.js",
+    "groupTitle": "Member_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/members/reports",
+    "title": "Gets a list of Member Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/members/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMember_Reports",
+    "group": "Member_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/members/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/members/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/members/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/members/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/members/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/memberReport/index.js",
+    "groupTitle": "Member_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/members/reports/{id}",
+    "title": "Gets a single Member Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/members/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMember_Reports",
+    "group": "Member_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/memberReport/index.js",
+    "groupTitle": "Member_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/migrations",
+    "title": "Gets a list of Migrations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/migrations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMigrations",
+    "group": "Migrations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/migrations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/migrations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/migrations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/migrations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/migrations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/migration/index.js",
+    "groupTitle": "Migrations"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/networks",
+    "title": "Create a new network",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/networks -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Networks",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/network/index.js",
+    "groupTitle": "Networks"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/networks/{id}",
+    "title": "Deletes a network",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/networks/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "Delete",
+    "group": "Networks",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/network/index.js",
+    "groupTitle": "Networks"
+  },
+  {
+    "type": "get",
+    "url": "/api/networks",
+    "title": "Gets a list of Networks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/networks -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetNetworks",
+    "group": "Networks",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/networks?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/networks?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/networks?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/networks?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/networks?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/network/index.js",
+    "groupTitle": "Networks"
+  },
+  {
+    "type": "get",
+    "url": "/api/networks/{id}",
+    "title": "Gets a single Network",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/networks/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowNetworks",
+    "group": "Networks",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/network/index.js",
+    "groupTitle": "Networks"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/networks/{id}",
+    "title": "Update an existing network",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/networks/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Update",
+    "group": "Networks",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/network/index.js",
+    "groupTitle": "Networks"
+  },
+  {
+    "type": "post",
+    "url": "/api/notifications",
+    "title": "Send notification to user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/notifications -d '{\"text\": \"Hello!\", \"TemplateId\": 1}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Send",
+    "group": "Notifications",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/notification/index.js",
+    "groupTitle": "Notifications"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/users",
+    "title": "Add agents to a openchannel account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts",
+    "title": "Creates a new Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAccounts",
+    "group": "Openchannel_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "replyUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notificationTemplate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationSound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationShake",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "waitForTheAssignedAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mapKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "queueTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "queueTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "agentTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/accounts/{id}",
+    "title": "Deletes a Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAccounts",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/describe",
+    "title": "Gets table info about Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAccounts",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts",
+    "title": "Gets a list of Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAccounts",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}/users",
+    "title": "Gets agents from openchannel account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/accounts/{id}/users",
+    "title": "Removes agents from a openchannel account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/accounts/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/accounts/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}",
+    "title": "Gets a single Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAccounts",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Openchannel_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Openchannel_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Openchannel_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}/applications",
+    "title": "Gets account applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/accounts/{id}/interactions",
+    "title": "Gets Openchannel Account Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getInteractions",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/notify",
+    "title": "Notify new message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "notify",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>Follow this link to check the documentation: <pre><a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice</a></pre></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/accounts/{id}/send",
+    "title": "Send new openchannel message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id}/send -d '{from: 'John Doe', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "sendOpenchannel",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/accounts/{id}",
+    "title": "Update an existing Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAccounts",
+    "group": "Openchannel_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelAccount/index.js",
+    "groupTitle": "Openchannel_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/applications",
+    "title": "Creates a new Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateApplications",
+    "group": "Openchannel_Applications",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelApplication/index.js",
+    "groupTitle": "Openchannel_Applications"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Openchannel_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelApplication/index.js",
+    "groupTitle": "Openchannel_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/applications",
+    "title": "Gets a list of Applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/applications -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetApplications",
+    "group": "Openchannel_Applications",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelApplication/index.js",
+    "groupTitle": "Openchannel_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Openchannel_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelApplication/index.js",
+    "groupTitle": "Openchannel_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Openchannel_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelApplication/index.js",
+    "groupTitle": "Openchannel_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Openchannel_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "threadId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "externalUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/interactions/{id}/messages",
+    "title": "Creates new messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Openchannel_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/interactions/{id}/download",
+    "title": "Gets interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Openchannel_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelInteraction/index.js",
+    "groupTitle": "Openchannel_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Openchannel_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Openchannel_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelMessage/index.js",
+    "groupTitle": "Openchannel_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/reports/queue",
+    "title": "Creates a new Openchannel Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/reports/queue/{id}",
+    "title": "Deletes a Openchannel Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/queue/describe",
+    "title": "Gets table info about Openchannel Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/queue",
+    "title": "Gets a list of Openchannel Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/queue/{id}",
+    "title": "Gets a single Openchannel Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/reports/queue/{id}",
+    "title": "Update an existing Openchannel Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateOpenchannel_Queue_Reports",
+    "group": "Openchannel_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueueReport/index.js",
+    "groupTitle": "Openchannel_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Openchannel_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": true,
+            "field": "strategy",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Openchannel_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Openchannel_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/openchannel/reports/transfer",
+    "title": "Creates a new Openchannel Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/reports/transfer/{id}",
+    "title": "Deletes a Openchannel Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/transfer/describe",
+    "title": "Gets table info about Openchannel Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/transfer",
+    "title": "Gets a list of Openchannel Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/openchannel/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/openchannel/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/openchannel/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/openchannel/reports/transfer/{id}",
+    "title": "Gets a single Openchannel Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/openchannel/reports/transfer/{id}",
+    "title": "Update an existing Openchannel Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateOpenchannel_Transfer_Reports",
+    "group": "Openchannel_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelTransferReport/index.js",
+    "groupTitle": "Openchannel_Transfer_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/pauses",
+    "title": "Creates a new Pause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pauses -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreatePauses",
+    "group": "Pauses",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pause/index.js",
+    "groupTitle": "Pauses"
+  },
+  {
+    "type": "delete",
+    "url": "/api/pauses/{id}",
+    "title": "Deletes a Pause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pauses/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeletePauses",
+    "group": "Pauses",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pause/index.js",
+    "groupTitle": "Pauses"
+  },
+  {
+    "type": "get",
+    "url": "/api/pauses",
+    "title": "Gets a list of Pauses",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pauses -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetPauses",
+    "group": "Pauses",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/pauses?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/pauses?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/pauses?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/pauses?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/pauses?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/pause/index.js",
+    "groupTitle": "Pauses"
+  },
+  {
+    "type": "get",
+    "url": "/api/pauses/{id}",
+    "title": "Gets a single Pause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pauses/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowPauses",
+    "group": "Pauses",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pause/index.js",
+    "groupTitle": "Pauses"
+  },
+  {
+    "type": "put",
+    "url": "/api/pauses/{id}",
+    "title": "Update an existing Pause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pauses/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updatePauses",
+    "group": "Pauses",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pause/index.js",
+    "groupTitle": "Pauses"
+  },
+  {
+    "type": "get",
+    "url": "/api/plugins",
+    "title": "Gets a list of Plugins",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetPlugins",
+    "group": "Plugins",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/plugins?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/plugins?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/plugins?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/plugins?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/plugins?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "get",
+    "url": "/api/plugins/{id}",
+    "title": "Gets a single Plugin",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowPlugins",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "delete",
+    "url": "/api/plugins/{id}",
+    "title": "Delete a plugin",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroyPlugin",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "get",
+    "url": "/api/plugins/{id}/download",
+    "title": "Download plugin source code",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "put",
+    "url": "/api/plugins/{id}",
+    "title": "Update an existing plugin",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updatePlugin",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "post",
+    "url": "/api/plugins",
+    "title": "Upload new plugin",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "uploadPlugin",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "get",
+    "url": "/api/plugins/webhook?hostname={host}&port={port}&encoding={encoding}&json={json}&path={path}",
+    "title": "Redirect a plugin request to the specified path",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/webhook?port={port}&path={path} -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "webhookPlugin",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "post",
+    "url": "/api/plugins/webhook?hostname={host}&port={port}&encoding={encoding}&json={json}&path={path}",
+    "title": "Redirect a plugin request to the specified path",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/plugins/webhook?port={port}&path={path} -H 'Content-Type: application/json' -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "webhookPlugin",
+    "group": "Plugins",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/plugin/index.js",
+    "groupTitle": "Plugins"
+  },
+  {
+    "type": "delete",
+    "url": "/api/pm2/{id}",
+    "title": "Deletes an existing process",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pm2/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeletePm2Process",
+    "group": "Pm2",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pm2/index.js",
+    "groupTitle": "Pm2"
+  },
+  {
+    "type": "get",
+    "url": "/api/pm2/{id}",
+    "title": "Gets a single pm2 process",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pm2/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetPm2Process",
+    "group": "Pm2",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pm2/index.js",
+    "groupTitle": "Pm2"
+  },
+  {
+    "type": "get",
+    "url": "/api/pm2",
+    "title": "Gets pm2 processes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pm2 -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetPm2Processes",
+    "group": "Pm2",
+    "description": "<p>Motion returns the pm2 processes list.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pm2/index.js",
+    "groupTitle": "Pm2"
+  },
+  {
+    "type": "post",
+    "url": "/api/pm2",
+    "title": "Start a single pm2 process",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pm2 -d '{\"name\": \"process_name\", \"script\": \"/index.js\"}'\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "StartPm2Process",
+    "group": "Pm2",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "script",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pm2/index.js",
+    "groupTitle": "Pm2"
+  },
+  {
+    "type": "put",
+    "url": "/api/pm2/{id}",
+    "title": "Update an existing process",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/pm2/{id} -d '{\"status\": \"online\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "UpdatePm2Process",
+    "group": "Pm2",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/pm2/index.js",
+    "groupTitle": "Pm2"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/campaigns/",
+    "title": "Gets a list of campaigns",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/campaigns -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "Campaigns",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime campaigns parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/fax/accounts",
+    "title": "Gets a list of FaxAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/fax/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "FaxAccounts",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime fax account parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "put",
+    "url": "/api/rpc/agents/:id/capacity",
+    "title": "Sets agent capacity",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/agents/:id/capacity -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTAgentCapacity",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return the current agent capacity.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/agents",
+    "title": "Gets a list of RTAgents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/agents -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTAgents",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime agents parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/chat/queues",
+    "title": "Gets a list of RTChatQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/chat/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTChatQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime chat queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/fax/queues",
+    "title": "Gets a list of RTFaxQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/fax/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTFaxQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime fax queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/mail/accounts",
+    "title": "Gets a list of RTMailAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/mail/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTMailAccounts",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime mail account parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/mail/queues",
+    "title": "Gets a list of RTMailQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/mail/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTMailQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime mail queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/openchannel/queues",
+    "title": "Gets a list of RTOpenchannelQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/openchannel/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTOpenchannelQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime openchannel queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/outbound/channels",
+    "title": "Gets a list of RTOutboundChannels",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/outbound/channels -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTOutboundChannels",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime outbound channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/sms/queues",
+    "title": "Gets a list of RTSmsQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/sms/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTSmsQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime sms queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/telephones",
+    "title": "Gets a list of RTTelephones",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/telephones -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTTelephones",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of telephones parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/trunks",
+    "title": "Gets a list of RTTrunks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/trunks -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTTrunks",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime trunks parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/channels",
+    "title": "Gets a list of RTVoiceChannelMixMonitor",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/channels/{uniqueid}/mixmonitor -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceChannelMixMonitor",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime voice channel mixmonitor.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/channels",
+    "title": "Gets a list of RTVoiceChannelStopMixMonitor",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/channels/{uniqueid}/stopmixmonitor -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceChannelStopMixMonitor",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime voice channel stopmixmonitor.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/channels",
+    "title": "Gets a list of RTVoiceChannels",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/channels -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceChannels",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime voice channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/channels/{uniqueid}",
+    "title": "Gets a single RTVoiceQueueChannel",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueueChannel",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a specific realtime voice queue channel.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/channels/{uniqueid}/hangup",
+    "title": "Hangup a single RTVoiceQueueChannel",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid}/hangup -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueueChannelHangup",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will hangup a specific realtime voice queue channel.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/channels/{uniqueid}/redirect/{exten}",
+    "title": "Hangup a single RTVoiceQueueChannel",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/channels/{uniqueid}/redirect/{exten} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueueChannelRedirect",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will redirect a specific realtime voice queue channel to a specific extension.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/preview/{id}",
+    "title": "Gets a single preview contact",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/preview/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueuePreview",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a specific preview contact.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/outbound",
+    "title": "Gets a list of RTOutbound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/outbound -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime outbound parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues",
+    "title": "Gets a list of RTVoiceQueues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime voice queues parameters.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/channels",
+    "title": "Gets a list of RTVoiceQueuesChannels",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/channels -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RTVoiceQueuesChannels",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime voice queues channels.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/chat/queues/{id}",
+    "title": "Gets a single RTChatQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/chat/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTChatQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/fax/queues/{id}",
+    "title": "Gets a single RTFaxQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/fax/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTFaxQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/mail/queues/{id}",
+    "title": "Gets a single RTMailQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/mail/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTMailQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/openchannel/queues/{id}",
+    "title": "Gets a single RTOpenchannelQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/openchannel/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTOpenchannelQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/sms/queues/{id}",
+    "title": "Gets a single RTSmsQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/sms/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTSmsQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/voice/queues/{id}",
+    "title": "Gets a single RTVoiceQueue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/voice/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRTVoiceQueues",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/agents/:id/notify",
+    "title": "Notify message to a specific agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/agents/:id/notify -d '{\"messageId\": \"5080\", \"channel\": \"mail\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "agentNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific agent.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/chat/queues/:id/notify",
+    "title": "Notify message to a specific queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/chat/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "chatQueueNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/chat/queues/waitinginteractions",
+    "title": "Gets a list of chatQueuesWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/chat/queues/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "chatQueuesWaitingInteractions",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime waiting chat queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/fax/queues/:id/notify",
+    "title": "Notify message to a specific queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/fax/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "faxQueueNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/fax/queues/waitinginteractions",
+    "title": "Gets a list of faxQueuesWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/fax/queues/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "faxQueuesWaitingInteractions",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime waiting fax queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/mail/queues/:id/notify",
+    "title": "Notify message to a specific queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/mail/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "mailQueueNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/mail/queues/waitinginteractions",
+    "title": "Gets a list of mailQueuesWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/mail/queues/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "mailQueuesWaitingInteractions",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime waiting mail queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/openchannel/queues/:id/notify",
+    "title": "Notify message to a specific queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/openchannel/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "openchannelQueueNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/openchannel/queues/waitinginteractions",
+    "title": "Gets a list of openchannelQueuesWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/openchannel/queues/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "openchannelQueuesWaitingInteractions",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime waiting openchannel queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/rpc/sms/queues/:id/notify",
+    "title": "Notify message to a specific queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/sms/queues/:id/notify -d '{\"messageId\": \"5080\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "smsQueueNotify",
+    "group": "RPC_Realtime",
+    "description": "<p>Notify message to a specific queue.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "get",
+    "url": "/api/rpc/sms/queues/waitinginteractions",
+    "title": "Gets a list of smsQueuesWaitingInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/rpc/sms/queues/waitinginteractions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "smsQueuesWaitingInteractions",
+    "group": "RPC_Realtime",
+    "description": "<p>Motion will return a list of realtime waiting sms queues interctions.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/rpc/index.js",
+    "groupTitle": "RPC_Realtime"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/salesforce/accounts",
+    "title": "Creates a new Salesforce Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSalesforce_Accounts",
+    "group": "Salesforce_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientSecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "securityToken",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"integrationTab\"",
+              "\"newTab\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/salesforce/accounts/{id}",
+    "title": "Deletes a Salesforce Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSalesforce_Accounts",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/accounts",
+    "title": "Gets a list of Salesforce Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSalesforce_Accounts",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/accounts/{id}",
+    "title": "Gets a single Salesforce Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSalesforce_Accounts",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/salesforce/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/salesforce/accounts/{id}",
+    "title": "Update an existing Salesforce Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSalesforce_Accounts",
+    "group": "Salesforce_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceAccount/index.js",
+    "groupTitle": "Salesforce_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/salesforce/configurations",
+    "title": "Creates a new Salesforce Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSalesforce_Configurations",
+    "group": "Salesforce_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"Task\"",
+              "\"Case\""
+            ],
+            "optional": true,
+            "field": "ticketType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"contact_lead\"",
+              "\"contact\"",
+              "\"lead\""
+            ],
+            "optional": true,
+            "field": "moduleSearch",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"nothing\"",
+              "\"contact\"",
+              "\"lead\""
+            ],
+            "optional": true,
+            "field": "moduleCreate",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/salesforce/configurations/{id}",
+    "title": "Deletes a Salesforce Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSalesforce_Configurations",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/configurations",
+    "title": "Gets a list of Salesforce Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSalesforce_Configurations",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/configurations/{id}",
+    "title": "Gets a single Salesforce Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSalesforce_Configurations",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/salesforce/configurations/{id}",
+    "title": "Update an existing Salesforce Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSalesforce_Configurations",
+    "group": "Salesforce_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceConfiguration/index.js",
+    "groupTitle": "Salesforce_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/salesforce/fields",
+    "title": "Creates a new Salesforce Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSalesforce_Fields",
+    "group": "Salesforce_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceField/index.js",
+    "groupTitle": "Salesforce_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/salesforce/fields/{id}",
+    "title": "Deletes a Salesforce Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSalesforce_Fields",
+    "group": "Salesforce_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceField/index.js",
+    "groupTitle": "Salesforce_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/fields",
+    "title": "Gets a list of Salesforce Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSalesforce_Fields",
+    "group": "Salesforce_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/salesforce/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/salesforce/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/salesforce/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceField/index.js",
+    "groupTitle": "Salesforce_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/salesforce/fields/{id}",
+    "title": "Gets a single Salesforce Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSalesforce_Fields",
+    "group": "Salesforce_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceField/index.js",
+    "groupTitle": "Salesforce_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/salesforce/fields/{id}",
+    "title": "Update an existing Salesforce Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/salesforce/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSalesforce_Fields",
+    "group": "Salesforce_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSalesforceField/index.js",
+    "groupTitle": "Salesforce_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/schedules",
+    "title": "Creates a new Schedule",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSchedules",
+    "group": "Schedules",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": false,
+            "field": "active",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "cron",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "startAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "endAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "subtractNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"years\"",
+              "\"quarters\"",
+              "\"months\"",
+              "\"weeks\"",
+              "\"days\"",
+              "\"hours\"",
+              "\"minutes\""
+            ],
+            "optional": false,
+            "field": "subtractUnit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"csv\"",
+              "\"pdf\"",
+              "\"xlsx\""
+            ],
+            "optional": false,
+            "field": "output",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"custom\"",
+              "\"default\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "sendMail",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "cc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "bcc",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "sendIfEmpty",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "delete",
+    "url": "/api/schedules/{id}",
+    "title": "Deletes a Schedule",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSchedules",
+    "group": "Schedules",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "get",
+    "url": "/api/schedules",
+    "title": "Gets a list of Schedules",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSchedules",
+    "group": "Schedules",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/schedules?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/schedules?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/schedules?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/schedules?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/schedules?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "get",
+    "url": "/api/schedules/{id}",
+    "title": "Gets a single Schedule",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSchedules",
+    "group": "Schedules",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "get",
+    "url": "/api/schedules/{id}/run",
+    "title": "Run Scheduler",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules/{id}/run -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "run",
+    "group": "Schedules",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "put",
+    "url": "/api/schedules/{id}",
+    "title": "Update an existing Schedule",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/schedules/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSchedules",
+    "group": "Schedules",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/schedule/index.js",
+    "groupTitle": "Schedules"
+  },
+  {
+    "type": "post",
+    "url": "/api/screen/recordings",
+    "title": "Creates a new Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateRecordings",
+    "group": "Screen_Recordings",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "format",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interactionid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rating",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "duration",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "startedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "createdAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "updatedAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/screen/recordings/describe",
+    "title": "Gets table info about Recordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeRecordings",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/screen/recordings",
+    "title": "Gets a list of Recordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetRecordings",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/screen/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/screen/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/screen/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/screen/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/screen/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/screen/recordings/{id}",
+    "title": "Gets a single Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRecordings",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "delete",
+    "url": "/api/screen/recordings/{id}",
+    "title": "Delete screen recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroy",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/screen/recordings/{id}/download",
+    "title": "Download Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "put",
+    "url": "/api/screen/recordings/{id}",
+    "title": "Update an existing Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/screen/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateRecordings",
+    "group": "Screen_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/screenRecording/index.js",
+    "groupTitle": "Screen_Recordings"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/servicenow/accounts",
+    "title": "Creates a new Servicenow Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateServicenow_Accounts",
+    "group": "Servicenow_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/servicenow/accounts/{id}",
+    "title": "Deletes a Servicenow Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteServicenow_Accounts",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/accounts",
+    "title": "Gets a list of Servicenow Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetServicenow_Accounts",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/accounts/{id}",
+    "title": "Gets a single Servicenow Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowServicenow_Accounts",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/servicenow/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/servicenow/accounts/{id}",
+    "title": "Update an existing Servicenow Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateServicenow_Accounts",
+    "group": "Servicenow_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowAccount/index.js",
+    "groupTitle": "Servicenow_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/servicenow/configurations",
+    "title": "Creates a new Servicenow Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateServicenow_Configurations",
+    "group": "Servicenow_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/servicenow/configurations/{id}",
+    "title": "Deletes a Servicenow Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteServicenow_Configurations",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/configurations",
+    "title": "Gets a list of Servicenow Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetServicenow_Configurations",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/configurations/{id}",
+    "title": "Gets a single Servicenow Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowServicenow_Configurations",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/servicenow/configurations/{id}",
+    "title": "Update an existing Servicenow Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateServicenow_Configurations",
+    "group": "Servicenow_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowConfiguration/index.js",
+    "groupTitle": "Servicenow_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/servicenow/fields",
+    "title": "Creates a new Servicenow Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateServicenow_Fields",
+    "group": "Servicenow_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowField/index.js",
+    "groupTitle": "Servicenow_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/servicenow/fields/{id}",
+    "title": "Deletes a Servicenow Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteServicenow_Fields",
+    "group": "Servicenow_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowField/index.js",
+    "groupTitle": "Servicenow_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/fields",
+    "title": "Gets a list of Servicenow Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetServicenow_Fields",
+    "group": "Servicenow_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/servicenow/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/servicenow/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/servicenow/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowField/index.js",
+    "groupTitle": "Servicenow_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/servicenow/fields/{id}",
+    "title": "Gets a single Servicenow Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowServicenow_Fields",
+    "group": "Servicenow_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowField/index.js",
+    "groupTitle": "Servicenow_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/servicenow/fields/{id}",
+    "title": "Update an existing Servicenow Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/servicenow/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateServicenow_Fields",
+    "group": "Servicenow_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intServicenowField/index.js",
+    "groupTitle": "Servicenow_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings",
+    "title": "Gets a list of Settings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSettings",
+    "group": "Settings",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/settings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/settings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/settings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/settings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/settings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}",
+    "title": "Gets a single Setting",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSettings",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "post",
+    "url": "/api/settings/{id}/favicon",
+    "title": "Add Favicon",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/favicon -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addFavicon",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "post",
+    "url": "/api/settings/{id}/logo",
+    "title": "Add logo",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/logo -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addLogo",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "post",
+    "url": "/api/settings/{id}/logo_login",
+    "title": "Add logo login",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/logo_login -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addLogoLogin",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "post",
+    "url": "/api/settings/{id}/preferred",
+    "title": "Add Preferred",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/preferred -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addPreferred",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}/favicon",
+    "title": "Get Favicon",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/favicon -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFavicon",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}/gdpr",
+    "title": "Get gdpr settings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/gdpr -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getGdpr",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}/logo",
+    "title": "Get logo",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/logo -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getLogo",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}/logo_login",
+    "title": "Get logo login",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/logo_login -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getLogoLogin",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "get",
+    "url": "/api/settings/{id}/preferred",
+    "title": "Get Preferred",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id}/preferred -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getPreferred",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "put",
+    "url": "/api/settings/{id}",
+    "title": "Update an existing Setting",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/settings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSettings",
+    "group": "Settings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/setting/index.js",
+    "groupTitle": "Settings"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/users",
+    "title": "Add agents to a sms account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts",
+    "title": "Creates a new Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAccounts",
+    "group": "Sms_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "remote",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"twilio\"",
+              "\"skebby\"",
+              "\"connectel\"",
+              "\"clicksend\"",
+              "\"plivo\"",
+              "\"clickatell\"",
+              "\"csc\"",
+              "\"infobip\"",
+              "\"intelepeer\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountSid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "authId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "authToken",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"SI\"",
+              "\"TI\"",
+              "\"GP\""
+            ],
+            "optional": true,
+            "field": "smsMethod",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "apiKey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "senderString",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "deliveryReport",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notificationTemplate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationSound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationShake",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "waitForTheAssignedAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "queueTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "queueTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "agentTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "baseUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/accounts/{id}",
+    "title": "Deletes a Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAccounts",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/describe",
+    "title": "Gets table info about Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAccounts",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts",
+    "title": "Gets a list of Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAccounts",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/users",
+    "title": "Gets agents from sms account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/accounts/{id}/users",
+    "title": "Removes agents from a sms account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/accounts/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/accounts/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}",
+    "title": "Gets a single Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAccounts",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Sms_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Sms_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Sms_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/applications",
+    "title": "Gets account applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/interactions",
+    "title": "Gets Sms Account interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getInteractions",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/notify",
+    "title": "Notify new message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "notify",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new sms message to be sent to the system.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/send",
+    "title": "Send new sms message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/send -d '{from: '+39333123456', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "sendSms",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/messages/{id}/status",
+    "title": "Receive message status",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "statusMessage",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status as get request",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "statusMessage",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/accounts/{id}/status",
+    "title": "Receive message status",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id}/status -H 'Content-Type: application/json' -v -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "statusMessage",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/accounts/{id}",
+    "title": "Update an existing Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAccounts",
+    "group": "Sms_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsAccount/index.js",
+    "groupTitle": "Sms_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/applications",
+    "title": "Creates a new Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateApplications",
+    "group": "Sms_Applications",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsApplication/index.js",
+    "groupTitle": "Sms_Applications"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Sms_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsApplication/index.js",
+    "groupTitle": "Sms_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/applications",
+    "title": "Gets a list of Applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/applications -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetApplications",
+    "group": "Sms_Applications",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsApplication/index.js",
+    "groupTitle": "Sms_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Sms_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsApplication/index.js",
+    "groupTitle": "Sms_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Sms_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsApplication/index.js",
+    "groupTitle": "Sms_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Sms_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/interactions/{id}/messages",
+    "title": "Creates new messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Sms_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/interactions/{id}/download",
+    "title": "Gets interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Sms_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsInteraction/index.js",
+    "groupTitle": "Sms_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Sms_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Sms_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Sms_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Sms_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Sms_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Sms_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsMessage/index.js",
+    "groupTitle": "Sms_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/reports/queue",
+    "title": "Creates a new Sms Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/reports/queue/{id}",
+    "title": "Deletes a Sms Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/queue/describe",
+    "title": "Gets table info about Sms Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/queue",
+    "title": "Gets a list of Sms Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/queue/{id}",
+    "title": "Gets a single Sms Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/reports/queue/{id}",
+    "title": "Update an existing Sms Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSms_Queue_Reports",
+    "group": "Sms_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueueReport/index.js",
+    "groupTitle": "Sms_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Sms_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": true,
+            "field": "strategy",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Sms_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Sms_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/sms/reports/transfer",
+    "title": "Creates a new Sms Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/reports/transfer/{id}",
+    "title": "Deletes a Sms Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/transfer/describe",
+    "title": "Gets table info about Sms Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/transfer",
+    "title": "Gets a list of Sms Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sms/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sms/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sms/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sms/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sms/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sms/reports/transfer/{id}",
+    "title": "Gets a single Sms Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/sms/reports/transfer/{id}",
+    "title": "Update an existing Sms Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSms_Transfer_Reports",
+    "group": "Sms_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsTransferReport/index.js",
+    "groupTitle": "Sms_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/sounds",
+    "title": "Gets a list of Sounds",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSounds",
+    "group": "Sounds",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/sounds?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/sounds?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/sounds?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/sounds?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/sounds?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "get",
+    "url": "/api/sounds/{id}",
+    "title": "Gets a single Sound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSounds",
+    "group": "Sounds",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "post",
+    "url": "/api/sounds",
+    "title": "Create a new sound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addSound",
+    "group": "Sounds",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sounds/{id}",
+    "title": "Deletes a sound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroySound",
+    "group": "Sounds",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "get",
+    "url": "/api/sounds/{id}/download",
+    "title": "Download Sound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Sounds",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "put",
+    "url": "/api/sounds",
+    "title": "Update an existing new sound",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sounds -d '[\"name\": \"sound_name\", \"description\": \"sound_desc\"]' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSound",
+    "group": "Sounds",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/sound/index.js",
+    "groupTitle": "Sounds"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/details/reports",
+    "title": "Creates a new Square Detail Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "node",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "application",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "data",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "project_name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/details/reports/{id}",
+    "title": "Deletes a Square Detail Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/details/reports/describe",
+    "title": "Gets table info about Square Detail Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/details/reports",
+    "title": "Gets a list of Square Detail Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/details/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/details/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/details/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/details/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/details/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/details/reports/{id}",
+    "title": "Gets a single Square Detail Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/details/reports/{id}",
+    "title": "Update an existing Square Detail Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/details/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSquare_Detail_Reports",
+    "group": "Square_Details_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReportDetail/index.js",
+    "groupTitle": "Square_Details_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Square_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareMessage/index.js",
+    "groupTitle": "Square_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Square_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareMessage/index.js",
+    "groupTitle": "Square_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Square_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareMessage/index.js",
+    "groupTitle": "Square_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Square_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareMessage/index.js",
+    "groupTitle": "Square_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Square_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareMessage/index.js",
+    "groupTitle": "Square_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/odbc",
+    "title": "Creates a new ODBC",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateODBCs",
+    "group": "Square_ODBC",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dsn",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/odbc/{id}",
+    "title": "Deletes a ODBC",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteODBCs",
+    "group": "Square_ODBC",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/odbc",
+    "title": "Gets a list of ODBCs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetODBCs",
+    "group": "Square_ODBC",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/odbc?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/odbc?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/odbc?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/odbc?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/odbc?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/odbc/{id}",
+    "title": "Gets a single ODBC",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowODBCs",
+    "group": "Square_ODBC",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/odbc/{id}/test",
+    "title": "Test Odbc",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc/{id}/test -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "test",
+    "group": "Square_ODBC",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/odbc/{id}",
+    "title": "Update an existing ODBC",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/odbc/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateODBCs",
+    "group": "Square_ODBC",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareOdbc/index.js",
+    "groupTitle": "Square_ODBC"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/projects",
+    "title": "Creates a new Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateProjects",
+    "group": "Square_Projects",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notes",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Blob",
+            "optional": true,
+            "field": "preproduction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Blob",
+            "optional": true,
+            "field": "production",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/projects/{id}",
+    "title": "Deletes a Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteProjects",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/projects",
+    "title": "Gets a list of Projects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetProjects",
+    "group": "Square_Projects",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/projects?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/projects?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/projects?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/projects?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/projects?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/projects/{id}",
+    "title": "Gets a single Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowProjects",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/projects/{id}/users",
+    "title": "Adds user permissions to a Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addUsers",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/projects/{id}/users",
+    "title": "Gets users permissions from Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getUsers",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/projects/{id}/users",
+    "title": "Removes user permissions from a Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "removeUsers",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/projects/{id}",
+    "title": "Update an existing Project",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/projects/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateProjects",
+    "group": "Square_Projects",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareProject/index.js",
+    "groupTitle": "Square_Projects"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/recordings",
+    "title": "Creates a new Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateRecordings",
+    "group": "Square_Recordings",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "extension",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dnid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "projectName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "saveName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "filename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "savePath",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "format",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/recordings",
+    "title": "Gets a list of Recordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetRecordings",
+    "group": "Square_Recordings",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/recordings/{id}",
+    "title": "Gets a single Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRecordings",
+    "group": "Square_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/recordings/{id}/delete",
+    "title": "Delete recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings/{id}/delete -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroy",
+    "group": "Square_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/recordings/{id}/download",
+    "title": "Download Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Square_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/recordings/{id}",
+    "title": "Update an existing Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateRecordings",
+    "group": "Square_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareRecording/index.js",
+    "groupTitle": "Square_Recordings"
+  },
+  {
+    "type": "post",
+    "url": "/api/square/reports",
+    "title": "Creates a new Square Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSquare_Reports",
+    "group": "Square_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "network",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "network_script",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "request",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "language",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "version",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callingpres",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callingani2",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callington",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callingtns",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dnid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "rdnis",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "extension",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "enhanced",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "threadid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "project_name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "bot",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/square/reports/{id}",
+    "title": "Deletes a Square Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSquare_Reports",
+    "group": "Square_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/reports/describe",
+    "title": "Gets table info about Square Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeSquare_Reports",
+    "group": "Square_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/reports",
+    "title": "Gets a list of Square Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSquare_Reports",
+    "group": "Square_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/square/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/square/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/square/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/square/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/square/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/square/reports/{id}",
+    "title": "Gets a single Square Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSquare_Reports",
+    "group": "Square_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/square/reports/{id}",
+    "title": "Update an existing Square Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/square/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSquare_Reports",
+    "group": "Square_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/squareReport/index.js",
+    "groupTitle": "Square_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/sugarcrm/configurations",
+    "title": "Creates a new SugarCRM Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSugarCRM_Configurations",
+    "group": "SugarCRM_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "SugarCRM_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/sugarcrm/configurations/{id}",
+    "title": "Deletes a SugarCRM Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSugarCRM_Configurations",
+    "group": "SugarCRM_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "SugarCRM_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/configurations",
+    "title": "Gets a list of SugarCRM Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSugarCRM_Configurations",
+    "group": "SugarCRM_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "SugarCRM_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/configurations/{id}",
+    "title": "Gets a single SugarCRM Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSugarCRM_Configurations",
+    "group": "SugarCRM_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "SugarCRM_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/sugarcrm/configurations/{id}",
+    "title": "Update an existing SugarCRM Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSugarCRM_Configurations",
+    "group": "SugarCRM_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "SugarCRM_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/sugarcrm/accounts",
+    "title": "Creates a new Sugarcrm Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSugarcrm_Accounts",
+    "group": "Sugarcrm_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/sugarcrm/accounts/{id}",
+    "title": "Deletes a Sugarcrm Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSugarcrm_Accounts",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/accounts",
+    "title": "Gets a list of Sugarcrm Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSugarcrm_Accounts",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/accounts/{id}",
+    "title": "Gets a single Sugarcrm Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSugarcrm_Accounts",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/sugarcrm/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/sugarcrm/accounts/{id}",
+    "title": "Update an existing Sugarcrm Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSugarcrm_Accounts",
+    "group": "Sugarcrm_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmAccount/index.js",
+    "groupTitle": "Sugarcrm_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Sugarcrm_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "Sugarcrm_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Sugarcrm_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "Sugarcrm_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Sugarcrm_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmConfiguration/index.js",
+    "groupTitle": "Sugarcrm_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/sugarcrm/fields",
+    "title": "Creates a new Sugarcrm Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateSugarcrm_Fields",
+    "group": "Sugarcrm_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmField/index.js",
+    "groupTitle": "Sugarcrm_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/sugarcrm/fields/{id}",
+    "title": "Deletes a Sugarcrm Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteSugarcrm_Fields",
+    "group": "Sugarcrm_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmField/index.js",
+    "groupTitle": "Sugarcrm_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/fields",
+    "title": "Gets a list of Sugarcrm Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSugarcrm_Fields",
+    "group": "Sugarcrm_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/sugarcrm/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/sugarcrm/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/sugarcrm/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmField/index.js",
+    "groupTitle": "Sugarcrm_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/sugarcrm/fields/{id}",
+    "title": "Gets a single Sugarcrm Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowSugarcrm_Fields",
+    "group": "Sugarcrm_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmField/index.js",
+    "groupTitle": "Sugarcrm_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/sugarcrm/fields/{id}",
+    "title": "Update an existing Sugarcrm Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/sugarcrm/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateSugarcrm_Fields",
+    "group": "Sugarcrm_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intSugarcrmField/index.js",
+    "groupTitle": "Sugarcrm_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/system",
+    "title": "Gets system information",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/system -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSystemInformation",
+    "group": "System_Information",
+    "description": "<p>Motion returns the system information.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/system/index.js",
+    "groupTitle": "System_Information"
+  },
+  {
+    "type": "get",
+    "url": "/api/system/process",
+    "title": "Gets system information",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/system -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetSystemInformation",
+    "group": "System_Information",
+    "description": "<p>Motion returns the system information.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/system/index.js",
+    "groupTitle": "System_Information"
+  },
+  {
+    "type": "post",
+    "url": "/api/tags",
+    "title": "Creates a new Tag",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/tags -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateTags",
+    "group": "Tags",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "color",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/tag/index.js",
+    "groupTitle": "Tags"
+  },
+  {
+    "type": "delete",
+    "url": "/api/tags/{id}",
+    "title": "Deletes a Tag",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/tags/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteTags",
+    "group": "Tags",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/tag/index.js",
+    "groupTitle": "Tags"
+  },
+  {
+    "type": "get",
+    "url": "/api/tags",
+    "title": "Gets a list of Tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/tags -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTags",
+    "group": "Tags",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/tags?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/tags?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/tags?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/tags?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/tags?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/tag/index.js",
+    "groupTitle": "Tags"
+  },
+  {
+    "type": "get",
+    "url": "/api/tags/{id}",
+    "title": "Gets a single Tag",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/tags/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTags",
+    "group": "Tags",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/tag/index.js",
+    "groupTitle": "Tags"
+  },
+  {
+    "type": "put",
+    "url": "/api/tags/{id}",
+    "title": "Update an existing Tag",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/tags/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateTags",
+    "group": "Tags",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/tag/index.js",
+    "groupTitle": "Tags"
+  },
+  {
+    "type": "post",
+    "url": "/api/teams/{id}/queues",
+    "title": "Add queues to a team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/queues -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddQueues",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "post",
+    "url": "/api/teams",
+    "title": "Creates a new Team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateTeams",
+    "group": "Teams",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/teams/{id}",
+    "title": "Deletes a Team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "get",
+    "url": "/api/teams/{id}/users",
+    "title": "Gets agents from team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "get",
+    "url": "/api/teams/{id}/queues?channel={channel}",
+    "title": "Gets Queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/queues?channel={channel} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "get",
+    "url": "/api/teams",
+    "title": "Gets a list of Teams",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Teams",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/teams?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/teams?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/teams?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/teams?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/teams?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/teams/{id}/users",
+    "title": "Removes agents from a team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/teams/{id}/queues",
+    "title": "Remove queues to a team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/queues?channel=voice&ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveQueues",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/mail/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/mail/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/mailQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/openchannel/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/openchannel/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/openchannelQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/sms/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/sms/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/smsQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/chat/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/chat/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/chatQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "delete",
+    "url": "/api/fax/queues/{id}/teams",
+    "title": "Remove teams from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/fax/queues/{id}/teams -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/faxQueue/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "get",
+    "url": "/api/teams/{id}",
+    "title": "Gets a single Team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "post",
+    "url": "/api/teams/{id}/users",
+    "title": "Adds agents to a team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAgents",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "put",
+    "url": "/api/teams/{id}",
+    "title": "Update an existing Team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/teams/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateTeams",
+    "group": "Teams",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/team/index.js",
+    "groupTitle": "Teams"
+  },
+  {
+    "type": "post",
+    "url": "/api/templates",
+    "title": "Creates a new Template",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/templates -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateTemplates",
+    "group": "Templates",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "html",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/template/index.js",
+    "groupTitle": "Templates"
+  },
+  {
+    "type": "delete",
+    "url": "/api/templates/{id}",
+    "title": "Deletes a Template",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/templates/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteTemplates",
+    "group": "Templates",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/template/index.js",
+    "groupTitle": "Templates"
+  },
+  {
+    "type": "get",
+    "url": "/api/templates",
+    "title": "Gets a list of Templates",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/templates -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTemplates",
+    "group": "Templates",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/templates?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/templates?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/templates?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/templates?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/templates?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/template/index.js",
+    "groupTitle": "Templates"
+  },
+  {
+    "type": "get",
+    "url": "/api/templates/{id}",
+    "title": "Gets a single Template",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/templates/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTemplates",
+    "group": "Templates",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/template/index.js",
+    "groupTitle": "Templates"
+  },
+  {
+    "type": "put",
+    "url": "/api/templates/{id}",
+    "title": "Update an existing Template",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/templates/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateTemplates",
+    "group": "Templates",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/template/index.js",
+    "groupTitle": "Templates"
+  },
+  {
+    "type": "post",
+    "url": "/api/triggers",
+    "title": "Creates a new Trigger",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateTriggers",
+    "group": "Triggers",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "status",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "delete",
+    "url": "/api/triggers/{id}",
+    "title": "Deletes a Trigger",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteTriggers",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "get",
+    "url": "/api/triggers",
+    "title": "Gets a list of Triggers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTriggers",
+    "group": "Triggers",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/triggers?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/triggers?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/triggers?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/triggers?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/triggers?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "get",
+    "url": "/api/triggers/{id}",
+    "title": "Gets a single Trigger",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTriggers",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "post",
+    "url": "/api/triggers/{id}/actions",
+    "title": "Creates new actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/actions -d '{\"action\": \"contactManager\",\"data1\": \"1\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAction",
+    "group": "Triggers",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "action",
+            "description": "<p>Allowed values: contactManager, integration, motionbar, jscripty, urlForward, browser, bot, script</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data1",
+            "description": "<p>contactManager[ListId], integration[intName(zendesk)], motionbar[Popup(0),URL(1),WinApp(2)], urlForward[GET,POST], browser[TemplateId(0),URL(1)]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data2",
+            "description": "<p>integration[AccountId], motionbar[TemplateId,URL,WinAppPath], urlForward[URL]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data3",
+            "description": "<p>motionbar[NULL,NULL,WinAppArguments]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data4",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data5",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "data6",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "data7",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "post",
+    "url": "/api/triggers/{id}/all_conditions",
+    "title": "Creates a new \"AND\"condition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/all_conditions -d '{\"field\": \"name\", \"operator\": \"equal\", \"value\": \"John Doe\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAllCondition",
+    "group": "Triggers",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "field",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "operator",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "post",
+    "url": "/api/triggers/{id}/any_conditions",
+    "title": "Creates a new \"OR\"condition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/any_conditions -d '{\"field\": \"name\", \"operator\": \"equal\", \"value\": \"John Doe\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnyCondition",
+    "group": "Triggers",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "field",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "operator",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "get",
+    "url": "/api/triggers/{id}/actions",
+    "title": "Gets Trigger Actions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/actions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getActions",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "get",
+    "url": "/api/triggers/{id}/all_conditions",
+    "title": "Gets \"AND\" Trigger Conditions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/all_conditions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAllConditions",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "get",
+    "url": "/api/triggers/{id}/any_conditions",
+    "title": "Gets \"OR\" Trigger Conditions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id}/any_conditions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnyConditions",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "put",
+    "url": "/api/triggers/{id}",
+    "title": "Update an existing Trigger",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/triggers/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateTriggers",
+    "group": "Triggers",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trigger/index.js",
+    "groupTitle": "Triggers"
+  },
+  {
+    "type": "post",
+    "url": "/api/trunks/clone",
+    "title": "Clone an existing Trunk",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneTrunks",
+    "group": "Trunks",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "post",
+    "url": "/api/trunks",
+    "title": "Create a new trunk",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Trunks",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"friend\"",
+              "\"user\"",
+              "\"peer\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"ALLOWED_NOT_SCREENED\"",
+              "\"ALLOWED_PASSED_SCREEN\"",
+              "\"ALLOWED_FAILED_SCREEN\"",
+              "\"ALLOWED\"",
+              "\"PROHIB_NOT_SCREENED\"",
+              "\"PROHIB_PASSED_SCREEN\"",
+              "\"PROHIB_FAILED_SCREEN\"",
+              "\"PROHIB\""
+            ],
+            "optional": true,
+            "field": "callingpres",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "permit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "md5secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remotesecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transport",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;udp&quot;, &quot;tcp&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rfc2833\"",
+              "\"info\"",
+              "\"shortinfo\"",
+              "\"inband\"",
+              "\"auto\""
+            ],
+            "optional": true,
+            "field": "dtmfmode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"nonat\"",
+              "\"update\"",
+              "\"outgoing\""
+            ],
+            "optional": true,
+            "field": "directmedia",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "directrtpsetup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "directmediapermit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "directmediadeny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nat",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;force_rport&quot;, &quot;comedia&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "namedcallgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pickupgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "namedpickupgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "language",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tonezone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disallow",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "allow",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;ulaw&quot;, &quot;alaw&quot;, &quot;alaw&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "autoframing",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "insecure",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;port&quot;, &quot;invite&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "trustrpid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "trust_id_outbound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"never\""
+            ],
+            "optional": true,
+            "field": "progressinband",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "promiscredir",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "useclientcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "setvar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "amaflags",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "callcounter",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "busylevel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowoverlap",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowsubscribe",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowtransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "ignoresdpversion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "subscribecontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "template",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"always\""
+            ],
+            "optional": true,
+            "field": "videosupport",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "maxcallbitrate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "rfc2833compensate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"accept\"",
+              "\"refuse\"",
+              "\"originate\""
+            ],
+            "optional": true,
+            "field": "session_timers",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "session_expires",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "session_minse",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"uac\"",
+              "\"uas\""
+            ],
+            "optional": true,
+            "field": "session_refresher",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "t38pt_usertpsource",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "regexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fromdomain",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fromuser",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "port",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "qualify",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "keepalive",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultip",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultuser",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtptimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtpholdtimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtpkeepalive",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"pai\""
+            ],
+            "optional": true,
+            "field": "sendrpid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "outboundproxy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackextension",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timert1",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timerb",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "qualifyfreq",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactpermit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactdeny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactacl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "unsolicited_mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "use_q850_reason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "maxforwards",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "encryption",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "avpf",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "force_avp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "icesupport",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "dtlsenable",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"fingerprint\"",
+              "\"certificate\""
+            ],
+            "optional": true,
+            "field": "dtlsverify",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dtlsrekey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscertfile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlsprivatekey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscipher",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscafile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscapath",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"active\"",
+              "\"passive\"",
+              "\"actpass\""
+            ],
+            "optional": true,
+            "field": "dtlssetup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlsfingerprint",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "usereqphone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "recordonfeature",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "recordofffeature",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "call_limit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "registertrying",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "subscribemwi",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "vmexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mohinterpret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mohsuggest",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "parkinglot",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"nonat\"",
+              "\"update\"",
+              "\"update,nonat\""
+            ],
+            "optional": true,
+            "field": "canreinvite",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "registry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "otherFields",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": false,
+            "field": "active",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "t38pt_udptl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "delete",
+    "url": "/api/trunks/{id}",
+    "title": "Deletes a trunk",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "Delete",
+    "group": "Trunks",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "get",
+    "url": "/api/trunks",
+    "title": "Gets a list of Trunks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTrunks",
+    "group": "Trunks",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/trunks?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/trunks?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/trunks?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/trunks?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/trunks?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "get",
+    "url": "/api/trunks/{id}",
+    "title": "Gets a single Trunk",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTrunks",
+    "group": "Trunks",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "put",
+    "url": "/api/trunks/{id}",
+    "title": "Update an existing trunk",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/trunks/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Update",
+    "group": "Trunks",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/trunk/index.js",
+    "groupTitle": "Trunks"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfile/resources",
+    "title": "Creates a new User Profile Resource",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "resourceId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "type",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "delete",
+    "url": "/api/userProfile/resources/{id}",
+    "title": "Deletes a User Profile Resource",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/resources/describe",
+    "title": "Gets table info about User Profile Resources",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/resources",
+    "title": "Gets a list of User Profile Resources",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfile/resources?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfile/resources?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfile/resources?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfile/resources?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfile/resources?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/resources/{id}",
+    "title": "Gets a single User Profile Resource",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "put",
+    "url": "/api/userProfile/resources/{id}",
+    "title": "Update an existing User Profile Resource",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/resources/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateUser_Profile_Resources",
+    "group": "User_Profile_Resources",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileResource/index.js",
+    "groupTitle": "User_Profile_Resources"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfile/sections",
+    "title": "Creates a new User Profile Section",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "category",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "sectionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "enabled",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "autoAssociation",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "crudPermissions",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "delete",
+    "url": "/api/userProfile/sections/{id}",
+    "title": "Deletes a User Profile Section",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/sections/describe",
+    "title": "Gets table info about User Profile Sections",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/sections",
+    "title": "Gets a list of User Profile Sections",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfile/sections?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfile/sections?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfile/sections?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfile/sections?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfile/sections?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfile/sections/{id}",
+    "title": "Gets a single User Profile Section",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "put",
+    "url": "/api/userProfile/sections/{id}",
+    "title": "Update an existing User Profile Section",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfile/sections/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateUser_Profile_Sections",
+    "group": "User_Profile_Sections",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfileSection/index.js",
+    "groupTitle": "User_Profile_Sections"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfiles/{id}/resources",
+    "title": "Add resources' permissions to User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/resources -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddResources",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfiles/{id}/sections",
+    "title": "Add sections' permissions to User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/sections -d '[{\"sectionId\": \"name\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSections",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfiles/clone",
+    "title": "Clone an existing User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "post",
+    "url": "/api/userProfiles",
+    "title": "Creates a new User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateUser_Profiles",
+    "group": "User_Profiles",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "crudPermissions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "delete",
+    "url": "/api/userProfiles/{id}",
+    "title": "Deletes a User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfiles/describe",
+    "title": "Gets table info about User Profiles",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfiles/{id}/resources?section={section}",
+    "title": "Get Resources assigned to a Section",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/resources?section={section} -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetResources",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfiles/{id}/sections",
+    "title": "Get sections associated to a User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/sections -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetSections",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfiles",
+    "title": "Gets a list of User Profiles",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/userProfiles?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/userProfiles?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/userProfiles?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/userProfiles?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/userProfiles?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "delete",
+    "url": "/api/userProfiles/{id}/resources",
+    "title": "Removes resources' permissions from User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/resources?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveResources",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "delete",
+    "url": "/api/userProfiles/{id}/sections",
+    "title": "Removes sections' permissions from User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id}/sections?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSections",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "get",
+    "url": "/api/userProfiles/{id}",
+    "title": "Gets a single User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "put",
+    "url": "/api/userProfiles/{id}",
+    "title": "Update an existing User Profile",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/userProfiles/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateUser_Profiles",
+    "group": "User_Profiles",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/userProfile/index.js",
+    "groupTitle": "User_Profiles"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/chat_interactions",
+    "title": "Add chat interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddChatInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/chat_websites",
+    "title": "Add a Chat Website to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat_websites -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddChatWebsites",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/contacts",
+    "title": "Add contacts to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/contacts -d '{\"ids\": [1,2]}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddContacts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/fax_accounts",
+    "title": "Add a Fax Account to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddFaxAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/fax_interactions",
+    "title": "Add fax interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddFaxInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/mail_accounts",
+    "title": "Add a Mail Account to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddMailAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/mail_interactions",
+    "title": "Add mail interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddMailInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/openchannel_accounts",
+    "title": "Add a Open Channel Account to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddOpenchannelAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/openchannel_interactions",
+    "title": "Add openchannel interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddOpenchannelInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/queues",
+    "title": "Add queues to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/queues -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddQueues",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/sms_accounts",
+    "title": "Add a Sms Account to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSmsAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/sms_interactions",
+    "title": "Add sms interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSmsInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/square_projects",
+    "title": "Add a Square Project to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/square_projects -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSquareProjects",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/teams",
+    "title": "Add teams to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/whatsapp_accounts",
+    "title": "Add a Whatsapp Account to a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp_accounts -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddWhatsappAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/whatsapp_interactions",
+    "title": "Add Whatsapp interaction tabs to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp_interactions -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddWhatsappInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/create_many",
+    "title": "Creates many Users",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/create_many -d '[{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}]' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "BulkCreateUsers",
+    "group": "Users",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": "<p>The name of the user</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "fullname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "alias",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"admin\"",
+              "\"user\"",
+              "\"agent\"",
+              "\"telephone\""
+            ],
+            "optional": false,
+            "field": "role",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "provider",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "internal",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "salt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mobile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "address",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "zipcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "userpic",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "city",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "country",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "online",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastLoginAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "voicePause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "chatPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mailPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "faxPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "smsPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "whatsappPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "openchannelPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pauseType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastPauseAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "chatCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mailCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "faxCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "smsCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "whatsappCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "openchannelCapacity",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarAutoAnswer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableSettings",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "phoneBarListenPort",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "phoneBarExpires",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarRemoteControl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "phoneBarRemoteControlPort",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableRecording",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarRingInUse",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "chanspy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "ipaddr",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "port",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "regseconds",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fullcontact",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "regserver",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "useragent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "lastms",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"friend\"",
+              "\"user\"",
+              "\"peer\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"ALLOWED_NOT_SCREENED\"",
+              "\"ALLOWED_PASSED_SCREEN\"",
+              "\"ALLOWED_FAILED_SCREEN\"",
+              "\"ALLOWED\"",
+              "\"PROHIB_NOT_SCREENED\"",
+              "\"PROHIB_PASSED_SCREEN\"",
+              "\"PROHIB_FAILED_SCREEN\"",
+              "\"PROHIB\""
+            ],
+            "optional": true,
+            "field": "callingpres",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "deny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "permit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "md5secret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remotesecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transport",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;udp&quot;, &quot;tcp&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rfc2833\"",
+              "\"info\"",
+              "\"shortinfo\"",
+              "\"inband\"",
+              "\"auto\""
+            ],
+            "optional": true,
+            "field": "dtmfmode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"nonat\"",
+              "\"update\"",
+              "\"outgoing\""
+            ],
+            "optional": true,
+            "field": "directmedia",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "directrtpsetup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "directmediapermit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "directmediadeny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nat",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;force_rport&quot;, &quot;comedia&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "namedcallgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pickupgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "namedpickupgroup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "language",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tonezone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "disallow",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "allow",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;ulaw&quot;, &quot;alaw&quot;, &quot;gsm&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "autoframing",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "insecure",
+            "description": "<p>String is deprecated. Please use an Array as [&quot;port&quot;, &quot;invite&quot;]</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "trustrpid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "trust_id_outbound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"never\""
+            ],
+            "optional": true,
+            "field": "progressinband",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "promiscredir",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "useclientcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "setvar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "amaflags",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "callcounter",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "busylevel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowoverlap",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowsubscribe",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "allowtransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "ignoresdpversion",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "subscribecontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "template",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"always\""
+            ],
+            "optional": true,
+            "field": "videosupport",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "maxcallbitrate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "rfc2833compensate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"accept\"",
+              "\"refuse\"",
+              "\"originate\""
+            ],
+            "optional": true,
+            "field": "session_timers",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "session_expires",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "session_minse",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"uac\"",
+              "\"uas\""
+            ],
+            "optional": true,
+            "field": "session_refresher",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "t38pt_usertpsource",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "regexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fromdomain",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fromuser",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "qualify",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "keepalive",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultip",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultuser",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtptimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtpholdtimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rtpkeepalive",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "sendrpid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "outboundproxy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callbackextension",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timert1",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timerb",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "qualifyfreq",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactpermit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactdeny",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "contactacl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "unsolicited_mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "use_q850_reason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "maxforwards",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "encryption",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "avpf",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "force_avp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "icesupport",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "dtlsenable",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"fingerprint\"",
+              "\"certificate\""
+            ],
+            "optional": true,
+            "field": "dtlsverify",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dtlsrekey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscertfile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlsprivatekey",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscipher",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscafile",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlscapath",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"active\"",
+              "\"passive\"",
+              "\"actpass\""
+            ],
+            "optional": true,
+            "field": "dtlssetup",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dtlsfingerprint",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "usereqphone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "recordonfeature",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "recordofffeature",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "call_limit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "registertrying",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "subscribemwi",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "vmexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mohinterpret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mohsuggest",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "parkinglot",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"nonat\"",
+              "\"update\"",
+              "\"update,nonat\""
+            ],
+            "optional": true,
+            "field": "canreinvite",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "loginInPause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "resetPasswordToken",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "resetPasswordExpires",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "showWebBar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "permissions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phoneBarUnconditionalNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phoneBarNoReplyNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phoneBarBusyNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarUnconditional",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarNoReply",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarBusy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarDnd",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarUnansweredCallBadge",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableDtmfTone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "phoneBarAutoAnswerDelay",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "extensionMonitor",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "crudPermissions",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "rtcp_mux",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "allowmessenger",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phoneBarOutboundProxy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "passwordResetAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableJaws",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableScreenRecordingByAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "phoneBarEnableVideoRecording",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarEnableAutomaticScreenRecording",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "phoneBarPrefixRequired",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "hotdesk",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interface",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "privacyEnabled",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "apiKeyNonce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "apiKeyIat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "screenrecording",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "blocked",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "blockedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "loginAttempts",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "disabled",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "put",
+    "url": "/api/users/{id}/password",
+    "title": "Change user password",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/password -d '{\"oldPassword\": \"1234\", \"newPassword\": \"5678\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "ChangePwd",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users",
+    "title": "Create a new user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/api_key",
+    "title": "Create a new API access key for the user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/:id/api_key -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateApiKey",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}",
+    "title": "Deletes a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "Delete",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/describe",
+    "title": "Gets table info about Users",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeUsers",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/agents",
+    "title": "GetAgents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/agents -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/api_key",
+    "title": "Get the API access key for the user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/:id/api_key -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetApiKey",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/groups",
+    "title": "GetChatGroups",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/groups -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetChatGroups",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/chat/interactions",
+    "title": "GetChatInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetChatInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/chat_websites",
+    "title": "GetChatWebsites",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat_websites -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetChatWebsites",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/contacts",
+    "title": "GetContacts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/contacts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetContacts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/fax_accounts",
+    "title": "GetFaxAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax_accounts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetFaxAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/fax/interactions",
+    "title": "GetFaxInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetFaxInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/lists",
+    "title": "GetLists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/lists -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetLists",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/mail_accounts",
+    "title": "GetMailAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail_accounts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetMailAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/mail/interactions",
+    "title": "GetMailInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetMailInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/openchannel_accounts",
+    "title": "GetOpenchannelAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetOpenchannelAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/openchannel/interactions",
+    "title": "GetOpenchannelInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetOpenchannelInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/prefixes",
+    "title": "GetPrefixes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/prefixes -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetPrefixes",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/queues?channel={channel}",
+    "title": "Gets Queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/queues/?channel={channel} -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/recordings",
+    "title": "GetRecordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/recordings -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetRecordings",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/scheduled_calls",
+    "title": "GetScheduledCalls",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/scheduled_calls -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetScheduledCalls",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/screen_recordings",
+    "title": "GetScreenRecordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/screen_recordings -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetScreenRecordings",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/sms_accounts",
+    "title": "GetSmsAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms_accounts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetSmsAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/sms/interactions",
+    "title": "GetSmsInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetSmsInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/square_projects",
+    "title": "GetSquareProjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/square_projects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetSquareProjects",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/teams",
+    "title": "GetTeams",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/teams -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users",
+    "title": "Gets a list of Users",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetUsers",
+    "group": "Users",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/users?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/users?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/users?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/users?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/users?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/queues_rt",
+    "title": "GetVoiceQueuesRt",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/queues_rt -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetVoiceQueuesRt",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/whatsapp_accounts",
+    "title": "GetWhatsappAccounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp_accounts -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetWhatsappAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/whatsapp/interactions",
+    "title": "GetWhatsappInteractions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp/interactions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetWhatsappInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/login",
+    "title": "Login",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/login  -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Login",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/logout",
+    "title": "Logout",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/logout -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Logout",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/pause",
+    "title": "Pause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/pause -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Pause",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/api_key",
+    "title": "Remove API access key for the user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/:id/api_key -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveApiKey",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/chat_interactions",
+    "title": "Removes interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveChatInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/chat_websites",
+    "title": "Removes a Chat Website from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/chat_websites?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveChatWebsites",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/fax_accounts",
+    "title": "Removes a Fax Account from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveFaxAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/fax_interactions",
+    "title": "Removes interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/fax_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveFaxInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/mail_accounts",
+    "title": "Removes a Mail Account from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveMailAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/mail_interactions",
+    "title": "Removes interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/mail_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveMailInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/openchannel_accounts",
+    "title": "Removes a Open Channel Account from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveOpenchannelAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/openchannel_interactions",
+    "title": "Removes openchannel interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/openchannel_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveOpenchannelInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/queues",
+    "title": "Remove queues to an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/queues?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveQueues",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/sms_accounts",
+    "title": "Removes a Sms Account from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSmsAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/sms_interactions",
+    "title": "Removes interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/sms_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSmsInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/square_projects",
+    "title": "Removes a Square Project from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/square_projects?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSquareProjects",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/teams",
+    "title": "Removes teams from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/teams?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTeams",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/whatsapp_accounts",
+    "title": "Removes a Whatsapp Account from a user",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp_accounts?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveWhatsappAccounts",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "delete",
+    "url": "/api/users/{id}/whatsapp_interactions",
+    "title": "Removes Whatsapp interactions from an agent",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/whatsapp_interactions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveWhatsappInteractions",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}",
+    "title": "Gets a single User",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowUsers",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/unpause",
+    "title": "Unpause",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/unpause -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Unpause",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/whoami",
+    "title": "WhoAmI",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/whoami -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "WhoAmI",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/users/{id}/avatar",
+    "title": "Add avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/avatar -H 'Content-Type: multipart/form-data' -F 'file=@{filename}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAvatar",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "get",
+    "url": "/api/users/{id}/avatar",
+    "title": "Get avatar",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id}/avatar -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAvatar",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "put",
+    "url": "/api/users/{id}",
+    "title": "Update an existing User",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/users/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateUsers",
+    "group": "Users",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/user/index.js",
+    "groupTitle": "Users"
+  },
+  {
+    "type": "post",
+    "url": "/api/variables",
+    "title": "Creates a new Variable",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/variables -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateVariables",
+    "group": "Variables",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/variable/index.js",
+    "groupTitle": "Variables"
+  },
+  {
+    "type": "delete",
+    "url": "/api/variables/{id}",
+    "title": "Deletes a Variable",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/variables/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteVariables",
+    "group": "Variables",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/variable/index.js",
+    "groupTitle": "Variables"
+  },
+  {
+    "type": "get",
+    "url": "/api/variables",
+    "title": "Gets a list of Variables",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/variables -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVariables",
+    "group": "Variables",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/variables?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/variables?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/variables?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/variables?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/variables?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/variable/index.js",
+    "groupTitle": "Variables"
+  },
+  {
+    "type": "get",
+    "url": "/api/variables/{id}",
+    "title": "Gets a single Variable",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/variables/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowVariables",
+    "group": "Variables",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/variable/index.js",
+    "groupTitle": "Variables"
+  },
+  {
+    "type": "put",
+    "url": "/api/variables/{id}",
+    "title": "Update an existing Variable",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/variables/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateVariables",
+    "group": "Variables",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/variable/index.js",
+    "groupTitle": "Variables"
+  },
+  {
+    "type": "get",
+    "url": "/api/version/fetch",
+    "title": "Fetch git version",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version/fetch -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "FetchVersion",
+    "group": "Version",
+    "description": "<p>Motion run the following command: git fetch origin master</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/version",
+    "title": "Gets version",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVersion",
+    "group": "Version",
+    "description": "<p>Motion returns the current and latest motion version.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/version/migrations",
+    "title": "Launch database migrations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version/migrations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "MigrateVersion",
+    "group": "Version",
+    "description": "<p>Motion launch the database migrations, according to the application version</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/version/pull",
+    "title": "Pull git version",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version/pull -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "PullVersion",
+    "group": "Version",
+    "description": "<p>Motion run the following command: git pull</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/version/reset",
+    "title": "Reset git version",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version/reset -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ResetVersion",
+    "group": "Version",
+    "description": "<p>Motion run the following command: git reset --hard FETCH_HEAD</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/version/restart",
+    "title": "Restart motion2 after update",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/version/restart -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "RestartVersion",
+    "group": "Version",
+    "description": "<p>Motion run the following command: pm2 restart motion</p>",
+    "version": "0.0.0",
+    "filename": "server/api/version/index.js",
+    "groupTitle": "Version"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/agents/reports/describe",
+    "title": "Gets table info about Agent Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/agents/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAgent_Reports",
+    "group": "Voice_Agent_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceAgentReport/index.js",
+    "groupTitle": "Voice_Agent_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/agents/reports",
+    "title": "Gets a list of Agent Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/agents/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgent_Reports",
+    "group": "Voice_Agent_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/agents/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/agents/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/agents/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/agents/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/agents/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceAgentReport/index.js",
+    "groupTitle": "Voice_Agent_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/agents/reports/{id}",
+    "title": "Gets a single Agent Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/agents/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAgent_Reports",
+    "group": "Voice_Agent_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceAgentReport/index.js",
+    "groupTitle": "Voice_Agent_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/calls/reports/describe",
+    "title": "Gets table info about Call Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/calls/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeCall_Reports",
+    "group": "Voice_Call_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceCallReport/index.js",
+    "groupTitle": "Voice_Call_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/calls/reports",
+    "title": "Gets a list of Call Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/calls/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCall_Reports",
+    "group": "Voice_Call_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/calls/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/calls/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/calls/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/calls/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/calls/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceCallReport/index.js",
+    "groupTitle": "Voice_Call_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/calls/reports/{id}",
+    "title": "Gets a single Call Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/calls/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCall_Reports",
+    "group": "Voice_Call_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceCallReport/index.js",
+    "groupTitle": "Voice_Call_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/calls/reports/{id}",
+    "title": "Update a single cdr",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/calls/reports/{id} -d '{\"userDispositio\": \"OK\"}' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "Voice_Call_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceCallReport/index.js",
+    "groupTitle": "Voice_Call_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/chanspy",
+    "title": "Creates a new ChanSpy",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/chanspy -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateChanSpy",
+    "group": "Voice_ChanSpy",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "prefix",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "options",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "auth",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "record",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "recordingFormat",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceChanSpy/index.js",
+    "groupTitle": "Voice_ChanSpy"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/chanspy/{id}",
+    "title": "Deletes a ChanSpy",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/chanspy/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteChanSpy",
+    "group": "Voice_ChanSpy",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceChanSpy/index.js",
+    "groupTitle": "Voice_ChanSpy"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/chanspy",
+    "title": "Gets a list of ChanSpy",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/chanspy -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetChanSpy",
+    "group": "Voice_ChanSpy",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/chanspy?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/chanspy?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/chanspy?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/chanspy?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/chanspy?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceChanSpy/index.js",
+    "groupTitle": "Voice_ChanSpy"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/chanspy/{id}",
+    "title": "Gets a single ChanSpy",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/chanspy/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowChanSpy",
+    "group": "Voice_ChanSpy",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceChanSpy/index.js",
+    "groupTitle": "Voice_ChanSpy"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/chanspy/{id}",
+    "title": "Update an existing ChanSpy",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/chanspy/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateChanSpy",
+    "group": "Voice_ChanSpy",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceChanSpy/index.js",
+    "groupTitle": "Voice_ChanSpy"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/contexts",
+    "title": "Create a new context",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/contexts -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Create",
+    "group": "Voice_Contexts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "defaultEntry",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceContext/index.js",
+    "groupTitle": "Voice_Contexts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/contexts/{id}",
+    "title": "Deletes a context",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "Delete",
+    "group": "Voice_Contexts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceContext/index.js",
+    "groupTitle": "Voice_Contexts"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/contexts",
+    "title": "Gets a list of Contexts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/contexts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetContexts",
+    "group": "Voice_Contexts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/contexts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/contexts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/contexts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/contexts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/contexts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceContext/index.js",
+    "groupTitle": "Voice_Contexts"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/contexts/{id}",
+    "title": "Gets a single Context",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowContexts",
+    "group": "Voice_Contexts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceContext/index.js",
+    "groupTitle": "Voice_Contexts"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/contexts/{id}",
+    "title": "Update an existing context",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/contexts/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Update",
+    "group": "Voice_Contexts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceContext/index.js",
+    "groupTitle": "Voice_Contexts"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/dials/reports/describe",
+    "title": "Gets table info about Dial Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/dials/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeDial_Reports",
+    "group": "Voice_Dial_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceDialReport/index.js",
+    "groupTitle": "Voice_Dial_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/dials/reports",
+    "title": "Gets a list of Dial Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/dials/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetDial_Reports",
+    "group": "Voice_Dial_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/dials/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/dials/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/dials/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/dials/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/dials/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceDialReport/index.js",
+    "groupTitle": "Voice_Dial_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/dials/reports/{id}",
+    "title": "Gets a single Dial Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/dials/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowDial_Reports",
+    "group": "Voice_Dial_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceDialReport/index.js",
+    "groupTitle": "Voice_Dial_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/extensions/{id}",
+    "title": "Deletes a Extension",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteExtensions",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/extensions",
+    "title": "Gets a list of Extensions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetExtensions",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/extensions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/extensions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/extensions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/extensions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/extensions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/extensions/{id}",
+    "title": "Gets a single Extension",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowExtensions",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/extensions",
+    "title": "Create new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions/{id}/applications -d '[{\"app\": \"Set\", \"appdata\": \"CALLERDNID=${CALLER(dnid)}\"}]' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/extensions",
+    "title": "Create an extension",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions -d '{\"exten\": \"12345\", \"context\": \"from-custom\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "create",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/extensions/{id}",
+    "title": "Update an extension",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/extensions/{id} -d '{\"exten\": \"12345\", \"context\": \"from-custom\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "update",
+    "group": "Voice_Extensions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceExtension/index.js",
+    "groupTitle": "Voice_Extensions"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/mohs",
+    "title": "Create a new a new MOH",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs -d '{\"name\": \"xmas_musics\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddMoh",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/mohs/{id}/sounds",
+    "title": "Add sound to MOH",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds -d '{\"id\": 1}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddSound",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/mohs/{id}",
+    "title": "Deletes an MOH",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DestroyMoh",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mohs",
+    "title": "Gets a list of Music On Holds",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMusic_On_Holds",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mohs?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mohs?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mohs?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mohs?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mohs?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mohs/{id}/sounds",
+    "title": "Gets sounds from MOH",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "GetSounds",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/mohs/{id}/sounds/{id2}",
+    "title": "Remove sound from MOH",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id}/sounds/{id2} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveSound",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mohs/{id}",
+    "title": "Gets a single Music On Hold",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMusic_On_Holds",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/mohs/{id}",
+    "title": "Update an existing Music On Hold",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mohs/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMusic_On_Holds",
+    "group": "Voice_MOHs",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMusicOnHold/index.js",
+    "groupTitle": "Voice_MOHs"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/mails",
+    "title": "Creates a new Mail",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMails",
+    "group": "Voice_Mails",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "customer_id",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "mailbox",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "fullname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "email",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "pager",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tz",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "attach",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "saycid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callback",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "review",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "operator",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "envelope",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "sayduration",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "saydurationm",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "sendvoicemail",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "delete",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "nextaftercmd",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "forcename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "forcegreetings",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": false,
+            "field": "hidefromdir",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "stamp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "emailsubject",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "emailbody",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "maxsecs",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "maxmsg",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/mails/{id}",
+    "title": "Deletes a Mail",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMails",
+    "group": "Voice_Mails",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mails",
+    "title": "Gets a list of Mails",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMails",
+    "group": "Voice_Mails",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mails?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mails?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mails?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mails?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mails?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mails/{id}",
+    "title": "Gets a single Mail",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMails",
+    "group": "Voice_Mails",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mails/{id}/messages",
+    "title": "Gets voice mail messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Voice_Mails",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/mails/{id}",
+    "title": "Update an existing Mail",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMails",
+    "group": "Voice_Mails",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMail/index.js",
+    "groupTitle": "Voice_Mails"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/mails/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Voice_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "msgnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dir",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "macrocontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "callerid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "origtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "duration",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailboxuser",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "mailboxcontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Blob",
+            "optional": true,
+            "field": "recording",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "flag",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "msg_id",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "stamp",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/mails/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Voice_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mails/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Voice_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/mails/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/mails/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/mails/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/mails/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/mails/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/mails/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Voice_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "get",
+    "url": "voice/mails/messages/{id}/download",
+    "title": "Download Voice Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}voice/mails/messages/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Voice_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/mails/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/mails/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Voice_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceMailMessage/index.js",
+    "groupTitle": "Voice_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/prefixes/{id}/users",
+    "title": "Add agents to a prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/prefixes/{id}",
+    "title": "Deletes a Prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeletePrefixes",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes/describe",
+    "title": "Gets table info about Prefixes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribePrefixes",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes/{id}/users",
+    "title": "Gets agents from prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes",
+    "title": "Gets a list of Prefixes",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetPrefixes",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/prefixes?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/prefixes?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/prefixes?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/prefixes?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/prefixes?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/prefixes/{id}/users",
+    "title": "Removes agents from a prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/prefixes/{id}",
+    "title": "Gets a single Prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowPrefixes",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/prefixes/{id}",
+    "title": "Update an existing prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes/{id} -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "Update",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/prefixes",
+    "title": "Create a prefix",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/prefixes -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "create",
+    "group": "Voice_Prefixes",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voicePrefix/index.js",
+    "groupTitle": "Voice_Prefixes"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/reports/describe",
+    "title": "Gets table info about Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/reports/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueue_Reports",
+    "group": "Voice_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueueReport/index.js",
+    "groupTitle": "Voice_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/reports",
+    "title": "Gets a list of Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueue_Reports",
+    "group": "Voice_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/queues/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/queues/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/queues/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/queues/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/queues/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueueReport/index.js",
+    "groupTitle": "Voice_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/reports/{id}",
+    "title": "Gets a single Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueue_Reports",
+    "group": "Voice_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueueReport/index.js",
+    "groupTitle": "Voice_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/reports/index",
+    "title": "Get Voice Queues Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/reports/index -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getVoiceQueuesReport",
+    "group": "Voice_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueueReport/index.js",
+    "groupTitle": "Voice_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues/{id}/users",
+    "title": "Add agents to queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues/{id}/blacklists",
+    "title": "Add blacklists to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddBlackLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues/{id}/lists",
+    "title": "Add lists to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/lists -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues/{id}/teams",
+    "title": "Add teams to queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues/clone",
+    "title": "Clone an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/clone -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CloneQueues",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Voice_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"inbound\"",
+              "\"outbound\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "musiconhold",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "announce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rr\"",
+              "\"ringall\"",
+              "\"leastrecent\"",
+              "\"fewestcalls\"",
+              "\"random\"",
+              "\"rrmemory\"",
+              "\"linear\"",
+              "\"wrandom\"",
+              "\"rrordered\""
+            ],
+            "optional": false,
+            "field": "strategy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "servicelevel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "penaltymemberslimit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "retry",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "timeoutpriority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "weight",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "wrapuptime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "autofill",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"all\""
+            ],
+            "optional": true,
+            "field": "autopause",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "autopausedelay",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "autopausebusy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "autopauseunavail",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "maxlen",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "setinterfacevar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "setqueueentryvar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "setqueuevar",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "eventmemberstatus",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membermacro",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membergosub",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "announce_frequency",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "min_announce_frequency",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "periodic_announce_frequency",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "random_periodic_announce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "relative_periodic_announce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\"",
+              "\"once\""
+            ],
+            "optional": true,
+            "field": "announce_holdtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "announce_position",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "announce_to_first_user",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "announce_position_limit",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"0\"",
+              "\"5\"",
+              "\"10\"",
+              "\"15\"",
+              "\"20\"",
+              "\"30\""
+            ],
+            "optional": true,
+            "field": "announce_round_seconds",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "monitor_format",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "monitor_type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_youarenext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_thereare",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_callswaiting",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_holdtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_minute",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_minutes",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_seconds",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_thankyou",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_reporthold",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_quantity1",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_quantity2",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_periodic_announce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue_less_than",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "periodic_announce",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinempty",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leavewhenempty",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "reportholdtime",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "ringinuse",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "memberdelay",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"yes\"",
+              "\"no\""
+            ],
+            "optional": true,
+            "field": "timeoutrestart",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "defaultrule",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "acw",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "acwTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialActive",
+            "description": "<p>Active/Disactive Campaign</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"preview\"",
+              "\"progressive\"",
+              "\"power\"",
+              "\"predictive\"",
+              "\"booked\""
+            ],
+            "optional": true,
+            "field": "dialMethod",
+            "description": "<p>Dial Method.</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialLimitChannel",
+            "description": "<p>Max 9999 channels, 0 means unlimited.</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialLimitQueue",
+            "description": "<p>Max 9999 member in queue(min:1, max:9999), 0 means unlimited.</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "dialPowerLevel",
+            "description": "<p>Power Level: Calls for agents (min:1, max:10).</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"agentBusyFactor\"",
+              "\"dropRate\""
+            ],
+            "optional": true,
+            "field": "dialPredictiveOptimization",
+            "description": "<p>Only for predictive method.</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "dialPredictiveOptimizationPercentage",
+            "description": "<p>Predictive Optimization Percentage (min: 1, max: 95)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialPredictiveInterval",
+            "description": "<p>Interval Predictive Minutes (min:5 max:30)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialOriginateCallerIdName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialOriginateCallerIdNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialOriginateTimeout",
+            "description": "<p>Originate Timeout Seconds (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialQueueOptions",
+            "description": "<p>https://wiki.asterisk.org/wiki/display/AST/Asterisk+13+Application_Queue</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialQueueTimeout",
+            "description": "<p>Queue Timeout Seconds (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialQueueProject",
+            "description": "<p>AGI queue option (use: agi://127.0.0.1/square,&lt;project_name&gt;)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCongestionMaxRetry",
+            "description": "<p>#Congestion Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCongestionRetryFrequency",
+            "description": "<p>Congestion Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialBusyMaxRetry",
+            "description": "<p>#Busy Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialBusyRetryFrequency",
+            "description": "<p>Busy Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoAnswerMaxRetry",
+            "description": "<p>#NoAnswer Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoAnswerRetryFrequency",
+            "description": "<p>NoAnswer Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialGlobalMaxRetry",
+            "description": "<p>#Global Max Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialTimezone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialGlobalInterval",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialPrefix",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"always\"",
+              "\"never\"",
+              "\"onlyIfOpen\""
+            ],
+            "optional": true,
+            "field": "dialCheckDuplicateType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialAMDActive",
+            "description": "<p>Active/Disactive AMD</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDInitialSilence",
+            "description": "<p>#AMD Initial Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDGreeting",
+            "description": "<p>#AMD Greeting</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDAfterGreetingSilence",
+            "description": "<p>#AMD After Greeting Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDTotalAnalysisTime",
+            "description": "<p>#AMD Total Analysis Time</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMinWordLength",
+            "description": "<p>#AMD Min Word Length</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDBetweenWordsSilence",
+            "description": "<p>#AMD Between Words Silence</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMaximumNumberOfWords",
+            "description": "<p>#AMD Maximum Number Of Words</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDSilenceThreshold",
+            "description": "<p>#AMD Silence Threshold (min:0, max:32767)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAMDMaximumWordLength",
+            "description": "<p>#AMD Maximum Word Length</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialRecallMeTimeout",
+            "description": "<p>#RecallMe Timeout (min:1)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialRecallInQueue",
+            "description": "<p>Active/Disactive Recall In Queue</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"DESC\"",
+              "\"ASC\""
+            ],
+            "optional": true,
+            "field": "dialOrderByScheduledAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dialQueueProject2",
+            "description": "<p>AGI queue option (use: agi://127.0.0.1/square,&lt;project_name&gt;)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialAgiAfterHangupClient",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "dialAgiAfterHangupAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialRandomLastDigitCallerIdNumber",
+            "description": "<p>Random Last Digit (min:1, max:15)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialCutDigit",
+            "description": "<p>Cut Digit (min:1, max:15)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoSuchNumberMaxRetry",
+            "description": "<p>#NoSuchNumber Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialNoSuchNumberRetryFrequency",
+            "description": "<p>NoSuchNumber Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialDropMaxRetry",
+            "description": "<p>#Drop Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialDropRetryFrequency",
+            "description": "<p>Drop Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAbandonedMaxRetry",
+            "description": "<p>#Abandoned Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAbandonedRetryFrequency",
+            "description": "<p>Abandoned Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialMachineMaxRetry",
+            "description": "<p>#Machine Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialMachineRetryFrequency",
+            "description": "<p>Machine Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAgentRejectMaxRetry",
+            "description": "<p>#AgentReject Retry (min:1, max:999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialAgentRejectRetryFrequency",
+            "description": "<p>AgentReject Retry Frequency Minutes (min:1, max:99999)</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialPredictiveIntervalMaxThreshold",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "dialPredictiveIntervalMinThreshold",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/blacklists",
+    "title": "Get queue blacklists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetBlackLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/finals",
+    "title": "Gets queue hopper finals",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_finals -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperFinals",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/hopper_histories",
+    "title": "Gets queue hopper histories",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_histories -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHopperHistories",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/hoppers",
+    "title": "Gets queue hoppers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/hoppers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetHoppers",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/lists",
+    "title": "Get queue lists",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/lists -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/members",
+    "title": "Gets queue members",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/members -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/teams",
+    "title": "Gets queue team",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/teams -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/queues/{id}/blacklists",
+    "title": "Remove blacklists from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/blacklists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveBlackLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/queues/{id}/lists",
+    "title": "Remove lists from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/lists?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveLists",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/queues/{id}/blacks",
+    "title": "Gets queue hopper blacks",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id}/hopper_black -v -u {name}:{password}  -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getHopperBlacks",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Voice_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueue/index.js",
+    "groupTitle": "Voice_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/recordings",
+    "title": "Creates a new Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateRecordings",
+    "group": "Voice_Recordings",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "format",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "membername",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "calleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "connectedlinenum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "connectedlinename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "rating",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "queue",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "userDisposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "location",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transcribeName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transcribeStatus",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "fileUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "fileText",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "failureReason",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sentiment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "sPositive",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "sNegative",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "sNeutral",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Float",
+            "optional": true,
+            "field": "sMixed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "tempSentiment",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "createdAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "updatedAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings/describe",
+    "title": "Gets table info about Recordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeRecordings",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings",
+    "title": "Gets a list of Recordings",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetRecordings",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/recordings?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/recordings?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/recordings?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/recordings?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/recordings?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings/{id}",
+    "title": "Gets a single Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowRecordings",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/recordings/{id}",
+    "title": "Delete voice recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "destroy",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings/{id}/download",
+    "title": "Download Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings/{id}/downloads",
+    "title": "Download Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/downloads -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "downloads",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/recordings/{id}/transcribe",
+    "title": "Run Transcribe Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "transcribe",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/recordings/{id}/transcribe",
+    "title": "Run Transcribe Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id}/transcribe -d '{\"runSentiment\": \"true\"}' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "transcribe",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/recordings/{id}",
+    "title": "Update an existing Recording",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/recordings/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateRecordings",
+    "group": "Voice_Recordings",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceRecording/index.js",
+    "groupTitle": "Voice_Recordings"
+  },
+  {
+    "type": "post",
+    "url": "/api/voice/transfers/reports",
+    "title": "Creates a new Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateTransfer_Reports",
+    "group": "Voice_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"blind\"",
+              "\"attended\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "result",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfererchannel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transferercalleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transferercalleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfererconnectedlinenum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfererconnectedlinename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereraccountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transferercontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfererexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfererlinkedid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereechannel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereecalleridnum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereecalleridname",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereeconnectedlinenum",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereeconnectedlinename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereeaccountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereecontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereeexten",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transfereelinkedid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"Yes\"",
+              "\"No\""
+            ],
+            "optional": true,
+            "field": "isexternal",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "context",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "extension",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceTransferReport/index.js",
+    "groupTitle": "Voice_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voice/transfers/reports/{id}",
+    "title": "Deletes a Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteTransfer_Reports",
+    "group": "Voice_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceTransferReport/index.js",
+    "groupTitle": "Voice_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/transfers/reports",
+    "title": "Gets a list of Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTransfer_Reports",
+    "group": "Voice_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voice/transfers/reports?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voice/transfers/reports?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voice/transfers/reports?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voice/transfers/reports?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voice/transfers/reports?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceTransferReport/index.js",
+    "groupTitle": "Voice_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/voice/transfers/reports/{id}",
+    "title": "Gets a single Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowTransfer_Reports",
+    "group": "Voice_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceTransferReport/index.js",
+    "groupTitle": "Voice_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/voice/transfers/reports/{id}",
+    "title": "Update an existing Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voice/transfers/reports/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateTransfer_Reports",
+    "group": "Voice_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceTransferReport/index.js",
+    "groupTitle": "Voice_Transfer_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/vtiger/accounts",
+    "title": "Creates a new Vtiger Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateVtiger_Accounts",
+    "group": "Vtiger_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "moduleName",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "accessKey",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/vtiger/accounts/{id}",
+    "title": "Deletes a Vtiger Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteVtiger_Accounts",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/accounts",
+    "title": "Gets a list of Vtiger Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVtiger_Accounts",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/accounts/{id}",
+    "title": "Gets a single Vtiger Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowVtiger_Accounts",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/vtiger/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/vtiger/accounts/{id}",
+    "title": "Update an existing Vtiger Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateVtiger_Accounts",
+    "group": "Vtiger_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerAccount/index.js",
+    "groupTitle": "Vtiger_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/vtiger/configurations",
+    "title": "Creates a new Vtiger Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateVtiger_Configurations",
+    "group": "Vtiger_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/vtiger/configurations/{id}",
+    "title": "Deletes a Vtiger Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteVtiger_Configurations",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/configurations",
+    "title": "Gets a list of Vtiger Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVtiger_Configurations",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/configurations/{id}",
+    "title": "Gets a single Vtiger Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowVtiger_Configurations",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/vtiger/configurations/{id}",
+    "title": "Update an existing Vtiger Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateVtiger_Configurations",
+    "group": "Vtiger_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerConfiguration/index.js",
+    "groupTitle": "Vtiger_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/vtiger/fields",
+    "title": "Creates a new Vtiger Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateVtiger_Fields",
+    "group": "Vtiger_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerField/index.js",
+    "groupTitle": "Vtiger_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/vtiger/fields/{id}",
+    "title": "Deletes a Vtiger Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteVtiger_Fields",
+    "group": "Vtiger_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerField/index.js",
+    "groupTitle": "Vtiger_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/fields",
+    "title": "Gets a list of Vtiger Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVtiger_Fields",
+    "group": "Vtiger_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/vtiger/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/vtiger/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/vtiger/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerField/index.js",
+    "groupTitle": "Vtiger_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/vtiger/fields/{id}",
+    "title": "Gets a single Vtiger Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowVtiger_Fields",
+    "group": "Vtiger_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerField/index.js",
+    "groupTitle": "Vtiger_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/vtiger/fields/{id}",
+    "title": "Update an existing Vtiger Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/vtiger/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateVtiger_Fields",
+    "group": "Vtiger_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intVtigerField/index.js",
+    "groupTitle": "Vtiger_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/answer",
+    "title": "answer webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/answer -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_answer",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "sessionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/calls",
+    "title": "webrtc call list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/calls -d '{\"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_calls",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/hangup",
+    "title": "hangup webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/hangup -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_hangup",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "sessionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/hold",
+    "title": "hold webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/hold -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_hold",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sessionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/unhold",
+    "title": "unhold webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/unhold -d '{\"sessionId\": \"<sessionId>\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_hold",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "sessionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/originate",
+    "title": "Originate new webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/originate -d '{\"callNumber\": \"0119692844\", \"userId\": 54}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_originate",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "callNumber",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "callerId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "callbackUrl",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/webbar/transfer",
+    "title": "blind transfer webrtc call",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/webbar/transfer -d '{\"userId\": 54, \"sessionId\":\"<sessionId>\", \"transferNumber\":\"<transferNumber>\"}' \\\n -H \"Content-Type: application/json\" -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "Web_Bar_transfer",
+    "group": "WebBar",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "number",
+            "optional": false,
+            "field": "userId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "string",
+            "optional": false,
+            "field": "sessionId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "string",
+            "optional": false,
+            "field": "transferNumber",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/webbar/index.js",
+    "groupTitle": "WebBar"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/users",
+    "title": "Add agents to a whatsapp account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts",
+    "title": "Creates a new Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateAccounts",
+    "group": "Whatsapp_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "remote",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"twilio\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountSid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "authToken",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "notificationTemplate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationSound",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "notificationShake",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "waitForTheAssignedAgent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "queueTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "queueTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "agentTransfer",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "agentTransferTimeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "mandatoryDispositionPauseId",
+            "description": "<p>Status to put when mandatory disposition is enabled</p>"
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "mandatoryDisposition",
+            "description": "<p>Enabled/disables mandatory dispo on a queue</p>"
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/accounts/{id}",
+    "title": "Deletes a Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteAccounts",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/describe",
+    "title": "Gets table info about Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeAccounts",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts",
+    "title": "Gets a list of Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetAccounts",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/{id}/users",
+    "title": "Gets agents from whatsapp account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/accounts/{id}/users",
+    "title": "Removes agents from a whatsapp account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/accounts/{id}/canned_answers",
+    "title": "Removes canned answers from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAnswers",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/accounts/{id}/dispositions",
+    "title": "Removes dispositions from account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveDispositions",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/{id}",
+    "title": "Gets a single Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowAccounts",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/messages/{id}/accept",
+    "title": "Accepts message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id}/accept \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "acceptMessage",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/canned_answers",
+    "title": "Creates new canned answer",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers -d '{\"name\": \"vip\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addAnswer",
+    "group": "Whatsapp_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "value",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Virtual",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/applications",
+    "title": "Creates new applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/applications -d '[{\"app\": \"queue\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addApplications",
+    "group": "Whatsapp_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/dispositions",
+    "title": "Creates new disposition",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions -d '{\"name\": \"vip\"}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addDisposition",
+    "group": "Whatsapp_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "name",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/{id}/canned_answers",
+    "title": "Gets account canned answers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/canned_answers -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getAnswers",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/{id}/applications",
+    "title": "Gets account applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/applications -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getApplications",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/accounts/{id}/dispositions",
+    "title": "Gets account dispositions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/dispositions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDispositions",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/notify",
+    "title": "Notify new message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/notify -d '{\"body\": \"hello world\", \"...\": \"...\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "notify",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <p>This API is used to create a new whatsapp message to be sent to the system.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/messages/{id}/reject",
+    "title": "Rejects message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id}/reject \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "rejectMessage",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/accounts/{id}/send",
+    "title": "Send new whatsapp message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id}/send -d '{from: '+39333123456', body: 'This is a test'}' -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "sendWhatsapp",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/messages/{id}/status",
+    "title": "Receive message status",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id}/status \\ \n -H 'Content-Type: application/json' -v -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "statusMessage",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/accounts/{id}",
+    "title": "Update an existing Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateAccounts",
+    "group": "Whatsapp_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappAccount/index.js",
+    "groupTitle": "Whatsapp_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/applications",
+    "title": "Creates a new Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/applications -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateApplications",
+    "group": "Whatsapp_Applications",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "priority",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "app",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": true,
+            "field": "appdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "interval",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappApplication/index.js",
+    "groupTitle": "Whatsapp_Applications"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/applications/{id}",
+    "title": "Deletes a Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/applications/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteApplications",
+    "group": "Whatsapp_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappApplication/index.js",
+    "groupTitle": "Whatsapp_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/applications",
+    "title": "Gets a list of Applications",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/applications -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetApplications",
+    "group": "Whatsapp_Applications",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/applications?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/applications?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/applications?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/applications?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/applications?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappApplication/index.js",
+    "groupTitle": "Whatsapp_Applications"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/applications/{id}",
+    "title": "Gets a single Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/applications/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowApplications",
+    "group": "Whatsapp_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappApplication/index.js",
+    "groupTitle": "Whatsapp_Applications"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/applications/{id}",
+    "title": "Update an existing Application",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/applications/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateApplications",
+    "group": "Whatsapp_Applications",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappApplication/index.js",
+    "groupTitle": "Whatsapp_Applications"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/interactions/{id}/tags",
+    "title": "Add tags to the interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interaction/{id}/tags -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTags",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/interactions",
+    "title": "Creates a new Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateInteractions",
+    "group": "Whatsapp_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "closed",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "closedAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "note",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "read1stAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "firstMsgDirection",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastMsgAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "lastMsgDirection",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/interactions/{id}",
+    "title": "Deletes a Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteInteractions",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/interactions/describe",
+    "title": "Gets table info about Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeInteractions",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/interactions",
+    "title": "Gets a list of Interactions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetInteractions",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/interactions?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/interactions?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/interactions?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/interactions?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/interactions?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/interactions/{id}/tags",
+    "title": "Removes tags from interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/tags?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveTags",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/interactions/{id}",
+    "title": "Gets a single Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowInteractions",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/interactions/{id}/messages",
+    "title": "Creates new messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/messages -d '[{\"to\": \"+3901119886500\", \"...\": \"...\"}]' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addMessage",
+    "group": "Whatsapp_Interactions",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/interactions/{id}/download",
+    "title": "Gets interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/download -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "download",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/interactions/{id}/messages",
+    "title": "Gets interaction messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id}/messages -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getMessages",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/interactions/{id}",
+    "title": "Update an existing Interaction",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/interactions/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateInteractions",
+    "group": "Whatsapp_Interactions",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappInteraction/index.js",
+    "groupTitle": "Whatsapp_Interactions"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/messages",
+    "title": "Creates a new Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateMessages",
+    "group": "Whatsapp_Messages",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "Text",
+            "optional": false,
+            "field": "body",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "read",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"in\"",
+              "\"out\""
+            ],
+            "optional": false,
+            "field": "direction",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "messageId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "phone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "readAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "secret",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/messages/{id}",
+    "title": "Deletes a Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteMessages",
+    "group": "Whatsapp_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/messages/describe",
+    "title": "Gets table info about Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeMessages",
+    "group": "Whatsapp_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/messages",
+    "title": "Gets a list of Messages",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMessages",
+    "group": "Whatsapp_Messages",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/messages?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/messages?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/messages?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/messages?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/messages?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/messages/{id}",
+    "title": "Gets a single Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowMessages",
+    "group": "Whatsapp_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/messages/{id}",
+    "title": "Update an existing Message",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/messages/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateMessages",
+    "group": "Whatsapp_Messages",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappMessage/index.js",
+    "groupTitle": "Whatsapp_Messages"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/reports/queue",
+    "title": "Creates a new Whatsapp Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "from",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "joinAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "leaveAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "acceptAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "exitAt",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "reason",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/reports/queue/{id}",
+    "title": "Deletes a Whatsapp Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/queue/describe",
+    "title": "Gets table info about Whatsapp Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/queue",
+    "title": "Gets a list of Whatsapp Queue Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/reports/queue?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/reports/queue?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/reports/queue?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/queue/{id}",
+    "title": "Gets a single Whatsapp Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/reports/queue/{id}",
+    "title": "Update an existing Whatsapp Queue Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/queue/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateWhatsapp_Queue_Reports",
+    "group": "Whatsapp_Queue_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueueReport/index.js",
+    "groupTitle": "Whatsapp_Queue_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/queues/{id}/users",
+    "title": "Add agents to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users -d '{\"ids\": [1,2], \"penalty\": 2}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddAgents",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/queues/{id}/teams",
+    "title": "Add teams to a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -d '{\"ids\": [1,2]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "AddTeams",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/queues",
+    "title": "Creates a new Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateQueues",
+    "group": "Whatsapp_Queues",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": true,
+            "field": "timeout",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"rrmemory\"",
+              "\"beepall\"",
+              "\"roundrobin\""
+            ],
+            "optional": true,
+            "field": "strategy",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/queues/{id}",
+    "title": "Deletes a Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteQueues",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues/describe",
+    "title": "Gets table info about Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeQueues",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues/{id}/users",
+    "title": "Gets queue agents",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "GetAgents",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues/{id}/members",
+    "title": "GetMembers",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/members  -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetMembers",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues",
+    "title": "Gets a list of Queues",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetQueues",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/queues?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/queues?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/queues?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/queues?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/queues?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues/{id}/teams",
+    "title": "Gets queues list",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/teams -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetTeams",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/queues/{id}/users",
+    "title": "Removes agents from a queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id}/users?ids=1&ids=2 -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "RemoveAgents",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/queues/{id}",
+    "title": "Gets a single Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowQueues",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/queues/{id}",
+    "title": "Update an existing Queue",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/queues/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateQueues",
+    "group": "Whatsapp_Queues",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappQueue/index.js",
+    "groupTitle": "Whatsapp_Queues"
+  },
+  {
+    "type": "post",
+    "url": "/api/whatsapp/reports/transfer",
+    "title": "Creates a new Whatsapp Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"account\"",
+              "\"agent\"",
+              "\"queue\""
+            ],
+            "optional": false,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "transferredAt",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "delete",
+    "url": "/api/whatsapp/reports/transfer/{id}",
+    "title": "Deletes a Whatsapp Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/transfer/describe",
+    "title": "Gets table info about Whatsapp Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/transfer",
+    "title": "Gets a list of Whatsapp Transfer Reports",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/whatsapp/reports/transfer?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/whatsapp/reports/transfer?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/whatsapp/reports/transfer?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "get",
+    "url": "/api/whatsapp/reports/transfer/{id}",
+    "title": "Gets a single Whatsapp Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "put",
+    "url": "/api/whatsapp/reports/transfer/{id}",
+    "title": "Update an existing Whatsapp Transfer Report",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/whatsapp/reports/transfer/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateWhatsapp_Transfer_Reports",
+    "group": "Whatsapp_Transfer_Reports",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/whatsappTransferReport/index.js",
+    "groupTitle": "Whatsapp_Transfer_Reports"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zendesk/accounts",
+    "title": "Creates a new Zendesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZendesk_Accounts",
+    "group": "Zendesk_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "username",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "password",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "token",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "remoteUri",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"password\"",
+              "\"token\""
+            ],
+            "optional": true,
+            "field": "authType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"integrationTab\"",
+              "\"newTab\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zendesk/accounts/{id}",
+    "title": "Deletes a Zendesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZendesk_Accounts",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/accounts",
+    "title": "Gets a list of Zendesk Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZendesk_Accounts",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/accounts/{id}",
+    "title": "Gets a single Zendesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZendesk_Accounts",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zendesk/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zendesk/accounts/{id}",
+    "title": "Update an existing Zendesk Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZendesk_Accounts",
+    "group": "Zendesk_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskAccount/index.js",
+    "groupTitle": "Zendesk_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zendesk/configurations",
+    "title": "Creates a new Zendesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZendesk_Configurations",
+    "group": "Zendesk_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zendesk/configurations/{id}",
+    "title": "Deletes a Zendesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZendesk_Configurations",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations",
+    "title": "Gets a list of Zendesk Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZendesk_Configurations",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations/{id}",
+    "title": "Gets a single Zendesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZendesk_Configurations",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/configurations/{id}/tags",
+    "title": "Gets configurations tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/tags -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getTags",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zendesk/configurations/{id}/tags",
+    "title": "Sets new tags",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id}/tags -d '{\"ids\": [1,12]}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "setTags",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zendesk/configurations/{id}",
+    "title": "Update an existing Zendesk Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZendesk_Configurations",
+    "group": "Zendesk_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskConfiguration/index.js",
+    "groupTitle": "Zendesk_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zendesk/fields",
+    "title": "Creates a new Zendesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZendesk_Fields",
+    "group": "Zendesk_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskField/index.js",
+    "groupTitle": "Zendesk_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zendesk/fields/{id}",
+    "title": "Deletes a Zendesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZendesk_Fields",
+    "group": "Zendesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskField/index.js",
+    "groupTitle": "Zendesk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/fields",
+    "title": "Gets a list of Zendesk Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZendesk_Fields",
+    "group": "Zendesk_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zendesk/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zendesk/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zendesk/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskField/index.js",
+    "groupTitle": "Zendesk_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zendesk/fields/{id}",
+    "title": "Gets a single Zendesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZendesk_Fields",
+    "group": "Zendesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskField/index.js",
+    "groupTitle": "Zendesk_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zendesk/fields/{id}",
+    "title": "Update an existing Zendesk Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zendesk/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZendesk_Fields",
+    "group": "Zendesk_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZendeskField/index.js",
+    "groupTitle": "Zendesk_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zoho/accounts",
+    "title": "Creates a new Zoho Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZoho_Accounts",
+    "group": "Zoho_Accounts",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "host",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "zone",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientId",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clientSecret",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "serverUrl",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "code",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "refreshToken",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zoho/accounts/{id}",
+    "title": "Deletes a Zoho Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZoho_Accounts",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/accounts",
+    "title": "Gets a list of Zoho Accounts",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZoho_Accounts",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/accounts?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/accounts?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/accounts?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/accounts/{id}",
+    "title": "Gets a single Zoho Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZoho_Accounts",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zoho/accounts/{id}/configurations",
+    "title": "Creates new configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/configurations -d '{\"name\": \"conf1\"}' \\ \n -H 'Content-Type: application/json' -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "addConfiguration",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/accounts/{id}/configurations",
+    "title": "Gets account configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/configurations -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getConfigurations",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/accounts/{id}/fields",
+    "title": "Gets account fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zoho/accounts/{id}",
+    "title": "Update an existing Zoho Account",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/accounts/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZoho_Accounts",
+    "group": "Zoho_Accounts",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoAccount/index.js",
+    "groupTitle": "Zoho_Accounts"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zoho/configurations",
+    "title": "Creates a new Zoho Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZoho_Configurations",
+    "group": "Zoho_Configurations",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "name",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"lead\"",
+              "\"contact\"",
+              "\"nothing\""
+            ],
+            "optional": true,
+            "field": "moduleCreate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"contact_lead\"",
+              "\"contact\"",
+              "\"lead\""
+            ],
+            "optional": true,
+            "field": "moduleSearch",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "description",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zoho/configurations/{id}",
+    "title": "Deletes a Zoho Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZoho_Configurations",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations",
+    "title": "Gets a list of Zoho Configurations",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZoho_Configurations",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/configurations?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/configurations?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/configurations?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations/{id}",
+    "title": "Gets a single Zoho Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZoho_Configurations",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations/{id}/descriptions",
+    "title": "Gets configurations descriptions",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/descriptions -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getDescriptions",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations/{id}/fields",
+    "title": "Gets configurations fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/fields -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getFields",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/configurations/{id}/subjects",
+    "title": "Gets configurations subjects",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id}/subjects -v -u {name}:{password} -X GET",
+        "type": "json"
+      }
+    ],
+    "name": "getSubjects",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zoho/configurations/{id}",
+    "title": "Update an existing Zoho Configuration",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/configurations/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZoho_Configurations",
+    "group": "Zoho_Configurations",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoConfiguration/index.js",
+    "groupTitle": "Zoho_Configurations"
+  },
+  {
+    "type": "post",
+    "url": "/api/integrations/zoho/fields",
+    "title": "Creates a new Zoho Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/fields -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateZoho_Fields",
+    "group": "Zoho_Fields",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\"",
+              "\"keyValue\""
+            ],
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "content",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "key",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "allowedValues": [
+              "\"string\"",
+              "\"variable\"",
+              "\"customVariable\""
+            ],
+            "optional": true,
+            "field": "keyType",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "keyContent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "idField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "nameField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Boolean",
+            "optional": true,
+            "field": "customField",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "variableName",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoField/index.js",
+    "groupTitle": "Zoho_Fields"
+  },
+  {
+    "type": "delete",
+    "url": "/api/integrations/zoho/fields/{id}",
+    "title": "Deletes a Zoho Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteZoho_Fields",
+    "group": "Zoho_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoField/index.js",
+    "groupTitle": "Zoho_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/fields",
+    "title": "Gets a list of Zoho Fields",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/fields -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetZoho_Fields",
+    "group": "Zoho_Fields",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/integrations/zoho/fields?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/integrations/zoho/fields?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/integrations/zoho/fields?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/integrations/zoho/fields?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/integrations/zoho/fields?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoField/index.js",
+    "groupTitle": "Zoho_Fields"
+  },
+  {
+    "type": "get",
+    "url": "/api/integrations/zoho/fields/{id}",
+    "title": "Gets a single Zoho Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowZoho_Fields",
+    "group": "Zoho_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoField/index.js",
+    "groupTitle": "Zoho_Fields"
+  },
+  {
+    "type": "put",
+    "url": "/api/integrations/zoho/fields/{id}",
+    "title": "Update an existing Zoho Field",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/integrations/zoho/fields/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateZoho_Fields",
+    "group": "Zoho_Fields",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/intZohoField/index.js",
+    "groupTitle": "Zoho_Fields"
+  },
+  {
+    "type": "post",
+    "url": "/api/cdr",
+    "title": "Creates a new Cdr",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateCdrs",
+    "group": "cdr",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "calldate",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "clid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "src",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dst",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dcontext",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "channel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "dstchannel",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastapp",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "lastdata",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "duration",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "billsec",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "disposition",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "Integer",
+            "optional": false,
+            "field": "amaflags",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "accountcode",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "userfield",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "uniqueid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "linkedid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "sequence",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "peeraccount",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "type",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "tag",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "delete",
+    "url": "/api/cdr/{id}",
+    "title": "Deletes a Cdr",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteCdrs",
+    "group": "cdr",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "get",
+    "url": "/api/cdr/describe",
+    "title": "Gets table info about Cdrs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr/describe -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "DescribeCdrs",
+    "group": "cdr",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "get",
+    "url": "/api/cdr",
+    "title": "Gets a list of Cdrs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetCdrs",
+    "group": "cdr",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/cdr?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/cdr?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/cdr?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/cdr?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/cdr?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "get",
+    "url": "/api/cdr/{id}",
+    "title": "Gets a single Cdr",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowCdrs",
+    "group": "cdr",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "put",
+    "url": "/api/cdr/{id}",
+    "title": "Update an existing Cdr",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/cdr/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateCdrs",
+    "group": "cdr",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/cdr/index.js",
+    "groupTitle": "cdr"
+  },
+  {
+    "type": "post",
+    "url": "/api/voiceQueuesLog",
+    "title": "Creates a new VoiceQueuesLog",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voiceQueuesLog -d '{\"key1\": \"valu1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X POST",
+        "type": "json"
+      }
+    ],
+    "name": "CreateVoiceQueuesLogs",
+    "group": "voiceQueuesLog",
+    "parameter": {
+      "fields": {
+        "Body": [
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": true,
+            "field": "time",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "callid",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "queuename",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "agent",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "event",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data1",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data2",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data3",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data4",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "data5",
+            "description": ""
+          },
+          {
+            "group": "Body",
+            "type": "String",
+            "optional": false,
+            "field": "dtm",
+            "description": ""
+          }
+        ]
+      }
+    },
+    "description": "<p>Motion will return a HTTP status code <code>201</code> upon success.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueuesLog/index.js",
+    "groupTitle": "voiceQueuesLog"
+  },
+  {
+    "type": "delete",
+    "url": "/api/voiceQueuesLog/{id}",
+    "title": "Deletes a VoiceQueuesLog",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -v -u {name}:{password} -X DELETE",
+        "type": "json"
+      }
+    ],
+    "name": "DeleteVoiceQueuesLogs",
+    "group": "voiceQueuesLog",
+    "description": "<p>Motion will return a HTTP status code <code>204</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueuesLog/index.js",
+    "groupTitle": "voiceQueuesLog"
+  },
+  {
+    "type": "get",
+    "url": "/api/voiceQueuesLog",
+    "title": "Gets a list of VoiceQueuesLogs",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voiceQueuesLog -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "GetVoiceQueuesLogs",
+    "group": "voiceQueuesLog",
+    "description": "<p>Motion will always return paged results. Motion returns paging data in the <code>Content-Range</code> header in the form start - end / total.</p> <p>Upon success Motion will return a HTTP status code <code>200 OK</code> if the entire collection was returned otherwise it will return a HTTP status code <code>206</code> Partial Content.</p> <p>Motion renders the resulting JSON representation in the response body.</p> <h2>Retrieving Specific Fields</h2> <p>To return only specific fields for a result set you can utilize the <code>fields</code> parameter. This parameter accepts a comma-separated list.</p> <p>A call returning only <code>id</code> and <code>name</code> for a result set would look like this.</p> <p><code>GET /api/voiceQueuesLog?fields=id,name</code></p> <h2>Filtering</h2> <p>You can perform exact-match filtering on any of a model's fields by using the field name as the key and supplying it with a value. These parameters accept a comma-separated list.</p> <p>A call returning a result set for records with <code>name</code> of <code>john.doe</code> or <code>jane.miller</code>.</p> <p><code>GET /api/voiceQueuesLog?name=john.doe,jane.miller</code></p> <p>If you use the key <code>filter</code> the result will be filtered by the value you specify.</p> <p><code>GET /api/voiceQueuesLog?filter=john</code></p> <h2>Sorting</h2> <p>To sort a result set based on one or several fields you can utilize the <code>sort</code> parameter. This parameters accepts a comma-separated list.</p> <p>Results will be sorted in the order of the fields provided. The default sorting order for fields is ascending. Fields can be sorted in descending order by prefixing them with a dash (<code>-</code>).</p> <p>A call sorting a result by <code>id</code> ascending and then <code>name</code> descending would look like this.</p> <p><code>GET /api/voiceQueuesLog?sort=id,-name</code></p> <h2>Offset and Limit</h2> <p>Query results are always paged. Motion leverages the <code>offset</code> and <code>limit</code> parameters to facilitate this.</p> <p>When the neither of these parameters are explicitly supplied the handler will assume the a default <code>limit</code> of <code>100</code>.</p> <p><code>offset</code> is a number indicating the start position in the result set you want to return.</p> <p><code>limit</code> is a number indicating how many records past the start position you want returned.</p> <p>A call with a result set starting at <code>5</code> and returning no more than <code>25</code> records would look like this.</p> <p><code>GET /api/voiceQueuesLog?offset=5&amp;limit=25</code></p> <p>If there were <code>50</code> records in total, the returned <code>Content-Range</code> header would look like this.</p> <p><code>Content-Range: 5-30/50</code></p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueuesLog/index.js",
+    "groupTitle": "voiceQueuesLog"
+  },
+  {
+    "type": "get",
+    "url": "/api/voiceQueuesLog/{id}",
+    "title": "Gets a single VoiceQueuesLog",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -v -u {name}:{password}",
+        "type": "json"
+      }
+    ],
+    "name": "ShowVoiceQueuesLogs",
+    "group": "voiceQueuesLog",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueuesLog/index.js",
+    "groupTitle": "voiceQueuesLog"
+  },
+  {
+    "type": "put",
+    "url": "/api/voiceQueuesLog/{id}",
+    "title": "Update an existing VoiceQueuesLog",
+    "examples": [
+      {
+        "title": "Example usage:",
+        "content": "curl https://{domain}/api/voiceQueuesLog/{id} -d '{\"key1\": \"value1\", \"key2\": \"value2\", \"...\": \"...\"}' \\\n -H \"Content-Type: application/json\" -v -u {name}:{password} -X PUT",
+        "type": "json"
+      }
+    ],
+    "name": "updateVoiceQueuesLogs",
+    "group": "voiceQueuesLog",
+    "description": "<p>Motion will return a HTTP status code <code>200</code> upon success. Motion return a HTTP status code <code>404</code> if the corresponding record could not be located.</p> <p>Motion renders the resulting JSON representation in the response body.</p>",
+    "version": "0.0.0",
+    "filename": "server/api/voiceQueuesLog/index.js",
+    "groupTitle": "voiceQueuesLog"
+  }
+]
diff --git a/apidoc/api_project.js b/apidoc/api_project.js
index 204e3d9..5d618b0 100644
--- a/apidoc/api_project.js
+++ b/apidoc/api_project.js
@@ -1 +1,24 @@
-define({
  "name": "xCALLY Motion API",
  "version": "2.5.0",
  "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
  "title": "xCALLY MOTION API",
  "header": {
    "title": "Introduction",
    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at [email-masked].</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
  },
  "template": {
    "withGenerator": false,
    "withCompare": false,
    "forceLanguage": "en"
  },
  "sampleUrl": false,
  "defaultVersion": "0.0.0",
  "apidoc": "0.3.0",
  "generator": {
    "name": "apidoc",
    "time": "2020-08-27T16:29:25.594Z",
    "url": "http://apidocjs.com",
    "version": "0.19.0"
  }
});
+define({
+  "name": "xCALLY Motion API",
+  "version": "2.5.3",
+  "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
+  "title": "xCALLY MOTION API",
+  "header": {
+    "title": "Introduction",
+    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at [email-masked].</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
+  },
+  "template": {
+    "withGenerator": false,
+    "withCompare": false,
+    "forceLanguage": "en"
+  },
+  "sampleUrl": false,
+  "defaultVersion": "0.0.0",
+  "apidoc": "0.3.0",
+  "generator": {
+    "name": "apidoc",
+    "time": "2020-09-09T14:08:14.957Z",
+    "url": "http://apidocjs.com",
+    "version": "0.24.0"
+  }
+});
diff --git a/apidoc/api_project.json b/apidoc/api_project.json
index 14ca337..3291eb8 100644
--- a/apidoc/api_project.json
+++ b/apidoc/api_project.json
@@ -1 +1,24 @@
-{
  "name": "xCALLY Motion API",
  "version": "2.5.0",
  "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
  "title": "xCALLY MOTION API",
  "header": {
    "title": "Introduction",
    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at [email-masked].</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
  },
  "template": {
    "withGenerator": false,
    "withCompare": false,
    "forceLanguage": "en"
  },
  "sampleUrl": false,
  "defaultVersion": "0.0.0",
  "apidoc": "0.3.0",
  "generator": {
    "name": "apidoc",
    "time": "2020-08-27T16:29:25.594Z",
    "url": "http://apidocjs.com",
    "version": "0.19.0"
  }
}
+{
+  "name": "xCALLY Motion API",
+  "version": "2.5.3",
+  "description": "Thank you for choosing xCALLY MOTION, one of the first Omni Channel solution integrated with AsteriskTM and the most innovative real time solutions available on the market.",
+  "title": "xCALLY MOTION API",
+  "header": {
+    "title": "Introduction",
+    "content": "<h2>The API</h2>\n<p>This is the documentation for the xCALLY MOTION API.</p>\n<p>We make changes to the APIs from time to time. For more information, see <a href=\"https://wiki.xcallymotion.com/display/XMV/Motion+GUI\">Changelog</a>.</p>\n<p>The xCALLY MOTION API consists of several different APIs. Use the left sidebar menu to select one.</p>\n<p>The API is a JSON API. XML is not supported. To learn more, see [Working with JSON].</p>\n<p>Endpoints are documented with the HTTP method for the request and a partial resource identifier.\nExample:</p>\n<pre class=\"prettyprint lang-sh\">GET /api/users\n</pre>\n<p>Prepend your xCALLY URL to the resource identifier to get the full endpoint URL:</p>\n<pre class=\"prettyprint lang-sh\">https://motion.xcally.com/api/users\n</pre>\n<p>Curly braces, <code>{}</code>, indicate values you have to supply. Example:</p>\n<pre class=\"prettyprint lang-sh\">GET  /api/users/{id}\n</pre>\n<p>The examples in the docs are cURL statements. You can run the statements on a command line to try out different API requests. To learn more, see [Installing and using cURL]. In Windows, you'll need to modify some of the examples in the docs to make them work. See [Using cURL in Windows].</p>\n<p>The examples use basic authentication requiring a xCALLY username and password.</p>\n<h2>Security and Authentication</h2>\n<p>This is an SSL-only API, regardless of how your account is configured. You can authorize against the API using either basic authentication with your username and password or with an OAuth access token or API Key.</p>\n<p>Client-side CORS requests are supported if the request is authenticated with an OAuth access token. The requests are not supported if the request uses basic authentication or API Key.</p>\n<h3>Basic authentication</h3>\n<p>Use the following authentication format with your username and password:\n<code>{username}:{password}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -u admin:password https://motion.xcally.com/api/users\n</pre>\n<h3>OAuth access token</h3>\n<p>The xCALLY API supports OAuth authorization flows.</p>\n<p>OAuth access tokens also permit client-side API requests.</p>\n<p>In your requests, specify the access token in an Authorization header as follows:\n<code>Authorization: Bearer {token}</code></p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl -H \"Authorization: Bearer gErypPlm4dOVgGRvA1ZzMH5MQ3nLo8bo\" https://motion.xcally.com/api/users\n</pre>\n<h3>API Key</h3>\n<p>In your request, specify the API Key in apikey query parameter</p>\n<p>Example:</p>\n<pre class=\"prettyprint lang-sh\">curl https://motion.xcally.com/api/users?apikey=eyJhbGciOiJIUzUxMiIsInR5cC...\n</pre>\n<h2>Request Format</h2>\n<p>The xCALLY API is a JSON API. You must supply a <code>Content-Type: application/json</code> header in <code>PUT</code> and <code>POST</code> requests. You must set an <code>Accept: application/json</code> header on all requests. You may get a <code>text/plain</code> response in case of an error like a bad request. You should treat this as an error you need to fix.</p>\n<h2>Response Format</h2>\n<p>The xCALLY API responds to successful requests with HTTP status codes in the 200 or 300 range. When you create or update a resource, the API renders the resulting JSON representation in the response body.</p>\n<p>Responses may have the status codes described in the following sections.</p>\n<h3>200 range</h3>\n<p>The request was successful. The status is 200 for successful GET and PUT requests, 201 for most POST requests, and 204 for DELETE requests.</p>\n<h3>400 range</h3>\n<p>The request was not successful. The content type of the response may be <code>text/plain</code> for API-level error messages, such as when trying to call the API without SSL. The content type is <code>application/json</code> for business-level error messages because the response includes a JSON object with information about the error.</p>\n<p>If you see a response from a known endpoint that looks like plain text, you probably made a syntax error in your request. This type of response commonly occurs when making a request to a nonexistent xCALLY Support instance.</p>\n<h3>500 range</h3>\n<p>When building an API client, we recommend treating any 500 status codes as a warning or temporary state. However, if the status persists and we don't have a publicly announced maintenance or service disruption, contact us at [email-masked].</p>\n<p>If submitting a ticket to Support, provide the complete HTTP response. This helps the Support team track down the request in the logs more quickly.</p>\n<h2>Data Types</h2>\n<p>The API returns and accepts JSON values, which can be strings in double quotes, numbers, objects, arrays, true or false, or null. Most programming languages have tools to parse this data.</p>\n<h2>ID integers</h2>\n<p>Most xCALLY Support resources such as queues and users are identified by the integer specified by the id attribute of API responses.</p>\n<p>The default numeric type in JavaScript, Ruby, Python, and PHP is sufficient to represent xCALLY Support ID integers.</p>\n<h2>Time stamps</h2>\n<p>Time stamps use UTC time and are formatted as ISO 8601 strings. Example: <code>2017-04-16T09:14:57Z</code></p>\n"
+  },
+  "template": {
+    "withGenerator": false,
+    "withCompare": false,
+    "forceLanguage": "en"
+  },
+  "sampleUrl": false,
+  "defaultVersion": "0.0.0",
+  "apidoc": "0.3.0",
+  "generator": {
+    "name": "apidoc",
+    "time": "2020-09-09T14:08:14.957Z",
+    "url": "http://apidocjs.com",
+    "version": "0.24.0"
+  }
+}
diff --git a/apidoc/css/style.css b/apidoc/css/style.css
old mode 100755
new mode 100644
index 216a21e..3e8ff30
--- a/apidoc/css/style.css
+++ b/apidoc/css/style.css
@@ -11,6 +11,15 @@ body, p, a, div, th, td {
   font-size: 16px;
 }
 
+@media (min-width: 1200px) {
+  body.container-fluid {
+    padding-right: 0px;
+    padding-left: 0px;
+    margin-right: 0px;
+    margin-left: 0px;
+  }
+}
+
 td.code {
   font-size: 14px;
   font-family: "Source Code Pro", monospace;
@@ -162,34 +171,8 @@ td {
 }
 
 /* ------------------------------------------------------------------------------------------
- * pre / code
+ * Request type
  * ------------------------------------------------------------------------------------------ */
-pre {
-  background-color: #292b36;
-  color: #ffffff;
-  padding: 10px;
-  border-radius: 6px;
-  position: relative;
-  margin: 10px 0 20px 0;
-  overflow-x: auto;
-}
-
-pre.prettyprint {
-  width: 100%;
-}
-
-code.language-text {
-  word-wrap: break-word;
-}
-
-pre.language-json {
-  overflow: auto;
-}
-
-pre.language-html {
-  margin: 0 0 20px 0;
-}
-
 .type {
   font-family: "Source Sans Pro", sans-serif;
   font-weight: 600;
@@ -219,31 +202,6 @@ pre.language-html {
   background-color: #ed0039;
 }
 
-pre.language-api .str {
-  color: #ffffff;
-}
-
-pre.language-api .pln,
-pre.language-api .pun {
-  color: #65B042;
-}
-
-pre code {
-  display: block;
-  font-size: 14px;
-  font-family: "Source Code Pro", monospace;
-  font-style: normal;
-  font-weight: 400;
-  word-wrap: normal;
-  white-space: pre;
-}
-
-pre code.sample-request-response-json {
-  white-space: pre-wrap;
-  max-height: 500px;
-  overflow: auto;
-}
-
 /* ------------------------------------------------------------------------------------------
  * Sidenav
  * ------------------------------------------------------------------------------------------ */
diff --git a/apidoc/fonts/glyphicons-halflings-regular.svg b/apidoc/fonts/glyphicons-halflings-regular.svg
old mode 100755
new mode 100644
diff --git a/apidoc/index.html b/apidoc/index.html
old mode 100755
new mode 100644
index b32e412..82ac436
--- a/apidoc/index.html
+++ b/apidoc/index.html
@@ -6,7 +6,7 @@
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
   <link href="vendor/bootstrap.min.css" rel="stylesheet" media="screen">
-  <link href="vendor/prettify.css" rel="stylesheet" media="screen">
+  <link href="vendor/prism.css" rel="stylesheet" />
   <link href="css/style.css" rel="stylesheet" media="screen, print">
   <link href="img/favicon.ico" rel="icon" type="image/x-icon">
   <script src="vendor/polyfill.js"></script>
@@ -44,8 +44,8 @@
     <h1>{{name}}</h1>
     {{#if description}}<h2>{{{nl2br description}}}</h2>{{/if}}
   </div>
-  {{#if template.withCompare}}
   <div class="pull-right">
+    {{#if template.withCompare}}
     <div class="btn-group">
       <button id="version" class="btn btn-lg btn-default dropdown-toggle" data-toggle="dropdown">
         <strong>{{version}}</strong>&nbsp;<span class="caret"></span>
@@ -59,8 +59,12 @@
       {{/each}}
       </ul>
     </div>
+    {{else}}
+    <div id="version" class="well well-sm">
+      <strong>{{version}}</strong>
+    </div>
+    {{/if}}
   </div>
-  {{/if}}
   <div class="clearfix"></div>
 </script>
 
@@ -103,7 +107,7 @@
 <script id="template-article" type="text/x-handlebars-template">
   <article id="api-{{article.group}}-{{article.name}}-{{article.version}}" {{#if hidden}}class="hide"{{/if}} data-group="{{article.group}}" data-name="{{article.name}}" data-version="{{article.version}}">
     <div class="pull-left">
-      <h1>{{underscoreToSpace article.name}}{{#if article.title}} - {{article.title}}{{/if}}</h1>
+      <h1>{{underscoreToSpace article.groupTitle}}{{#if article.title}} - {{article.title}}{{/if}}</h1>
     </div>
     {{#if template.withCompare}}
     <div class="pull-right">
@@ -134,7 +138,7 @@
       <p>{{{nl2br article.description}}}</p>
     {{/if}}
     <span class="type type__{{toLowerCase article.type}}">{{toLowerCase article.type}}</span>
-    <pre class="prettyprint language-html" data-type="{{toLowerCase article.type}}"><code>{{article.url}}</code></pre>
+    <pre data-type="{{toLowerCase article.type}}"><code class="language-http">{{article.url}}</code></pre>
 
     {{#if article.permission}}
       <p>
@@ -150,6 +154,7 @@
       </p>
     {{/if}}
 
+    {{!-- CODE EXAMPLES IN TABS --}}
     {{#if_gt article.examples.length compare=0}}
       <ul class="nav nav-tabs nav-tabs-examples">
         {{#each article.examples}}
@@ -162,7 +167,7 @@
       <div class="tab-content">
       {{#each article.examples}}
         <div class="tab-pane{{#if_eq @index compare=0}} active{{/if_eq}}" id="examples-{{../id}}-{{@index}}">
-          <pre class="prettyprint language-{{type}}" data-type="{{type}}"><code>{{content}}</code></pre>
+          <pre data-type="{{type}}"><code class="language-{{type}}">{{content}}</code></pre>
         </div>
       {{/each}}
       </div>
@@ -226,7 +231,7 @@
       <div class="tab-content">
       {{#each params.examples}}
         <div class="tab-pane{{#if_eq @index compare=0}} active{{/if_eq}}" id="{{../section}}-examples-{{../id}}-{{@index}}">
-        <pre class="prettyprint language-{{type}}" data-type="{{type}}"><code>{{reformat content type}}</code></pre>
+        <pre data-type="{{type}}"><code class="language-{{type}}">{{reformat content type}}</code></pre>
         </div>
       {{/each}}
       </div>
@@ -291,7 +296,7 @@
               <div class="form-group">
                 <label class="col-md-3 control-label" for="sample-request-param-field-{{field}}">{{field}}</label>
                 <div class="input-group">
-                  <input id="sample-request-param-field-{{field}}" type="text" placeholder="{{field}}" class="form-control sample-request-param" data-sample-request-param-name="{{field}}" data-sample-request-param-group="sample-request-param-{{@../index}}" {{#if optional}}data-sample-request-param-optional="true"{{/if}}>
+                  <input id="sample-request-param-field-{{field}}" type="{{setInputType type}}" placeholder="{{field}}" class="form-control sample-request-param" data-sample-request-param-name="{{field}}" data-sample-request-param-group="sample-request-param-{{@../index}}" {{#if optional}}data-sample-request-param-optional="true"{{/if}}>
                   <div class="input-group-addon">{{{type}}}</div>
                 </div>
               </div>
@@ -311,7 +316,7 @@
               {{__ "Response"}}
               <button class="btn btn-default btn-xs pull-right sample-request-clear">X</button>
             </h3>
-            <pre class="prettyprint language-json" data-type="json"><code class="sample-request-response-json"></code></pre>
+            <pre data-type="json"><code class="language-json sample-request-response-json"></code></pre>
           </div>
         </fieldset>
       </form>
@@ -351,7 +356,7 @@
       {{/if}}
     {{/if}}
 
-    <pre class="prettyprint language-html" data-type="{{toLowerCase article.type}}"><code>{{{showDiff article.url compare.url}}}</code></pre>
+    <pre data-type="{{toLowerCase article.type}}"><code class="language-html">{{{showDiff article.url compare.url}}}</code></pre>
 
     {{subTemplate "article-compare-permission" article=article compare=compare}}
 
@@ -382,19 +387,19 @@
 
       {{#if typeSame}}
         <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="compare-examples-{{../../article.id}}-{{index}}">
-          <pre class="prettyprint language-{{source.type}}" data-type="{{source.type}}"><code>{{{showDiff source.content compare.content}}}</code></pre>
+          <pre data-type="{{source.type}}"><code class="language-{{source.type}}">{{{showDiff source.content compare.content}}}</code></pre>
         </div>
       {{/if}}
 
       {{#if typeIns}}
         <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="compare-examples-{{../../article.id}}-{{index}}">
-          <pre class="prettyprint language-{{source.type}}" data-type="{{source.type}}"><code>{{{source.content}}}</code></pre>
+          <pre data-type="{{source.type}}"><code class="language-{{source.type}}">{{{source.content}}}</code></pre>
         </div>
       {{/if}}
 
       {{#if typeDel}}
         <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="compare-examples-{{../../article.id}}-{{index}}">
-          <pre class="prettyprint language-{{source.type}}" data-type="{{compare.type}}"><code>{{{compare.content}}}</code></pre>
+          <pre data-type="{{compare.type}}"><code class="language-{{source.type}}">{{{compare.content}}}</code></pre>
         </div>
       {{/if}}
 
@@ -553,19 +558,19 @@
 
       {{#if typeSame}}
         <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="{{../../section}}-compare-examples-{{../../article.id}}-{{index}}">
-          <pre class="prettyprint language-{{source.type}}" data-type="{{source.type}}"><code>{{{showDiff source.content compare.content}}}</code></pre>
+          <pre data-type="{{source.type}}"><code class="language-{{source.type}}">{{{showDiff source.content compare.content}}}</code></pre>
         </div>
       {{/if}}
 
       {{#if typeIns}}
         <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="{{../../section}}-compare-examples-{{../../article.id}}-{{index}}">
-          <pre class="prettyprint language-{{source.type}}" data-type="{{source.type}}"><code>{{{source.content}}}</code></pre>
+          <pre data-type="{{source.type}}"><code class="language-{{source.type}}">{{{source.content}}}</code></pre>
         </div>
       {{/if}}
 
       {{#if typeDel}}
         <div class="tab-pane{{#if_eq index compare=0}} active{{/if_eq}}" id="{{../../section}}-compare-examples-{{../../article.id}}-{{index}}">
-          <pre class="prettyprint language-{{source.type}}" data-type="{{compare.type}}"><code>{{{compare.content}}}</code></pre>
+          <pre data-type="{{compare.type}}"><code class="language-{{source.type}}">{{{compare.content}}}</code></pre>
         </div>
       {{/if}}
     {{/each_compare_title}}
diff --git a/apidoc/locales/ca.js b/apidoc/locales/ca.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/cs.js b/apidoc/locales/cs.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/de.js b/apidoc/locales/de.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/es.js b/apidoc/locales/es.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/fr.js b/apidoc/locales/fr.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/it.js b/apidoc/locales/it.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/locale.js b/apidoc/locales/locale.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/nl.js b/apidoc/locales/nl.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/pl.js b/apidoc/locales/pl.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/pt_br.js b/apidoc/locales/pt_br.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/ro.js b/apidoc/locales/ro.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/ru.js b/apidoc/locales/ru.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/tr.js b/apidoc/locales/tr.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/vi.js b/apidoc/locales/vi.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/zh.js b/apidoc/locales/zh.js
old mode 100755
new mode 100644
diff --git a/apidoc/locales/zh_cn.js b/apidoc/locales/zh_cn.js
old mode 100755
new mode 100644
diff --git a/apidoc/main.js b/apidoc/main.js
old mode 100755
new mode 100644
index 8adc385..e2128f6
--- a/apidoc/main.js
+++ b/apidoc/main.js
@@ -8,11 +8,13 @@ require.config({
         locales: './locales/locale',
         lodash: './vendor/lodash.custom.min',
         pathToRegexp: './vendor/path-to-regexp/index',
-        prettify: './vendor/prettify/prettify',
+        prismjs: './vendor/prism',
         semver: './vendor/semver.min',
         utilsSampleRequest: './utils/send_sample_request',
         webfontloader: './vendor/webfontloader',
-        list: './vendor/list.min'
+        list: './vendor/list.min',
+        apiData: './api_data',
+        apiProject: './api_project',
     },
     shim: {
         bootstrap: {
@@ -28,12 +30,12 @@ require.config({
             deps: ['jquery', 'handlebars'],
             exports: 'Handlebars'
         },
-        prettify: {
-            exports: 'prettyPrint'
-        }
+        prismjs: {
+            exports: 'Prism'
+        },
     },
     urlArgs: 'v=' + (new Date()).getTime(),
-    waitSeconds: 15
+    waitSeconds: 150
 });
 
 require([
@@ -41,20 +43,34 @@ require([
     'lodash',
     'locales',
     'handlebarsExtended',
-    './api_project.js',
-    './api_data.js',
-    'prettify',
+    'apiProject',
+    'apiData',
+    'prismjs',
     'utilsSampleRequest',
     'semver',
     'webfontloader',
     'bootstrap',
     'pathToRegexp',
     'list'
-], function($, _, locale, Handlebars, apiProject, apiData, prettyPrint, sampleRequest, semver, WebFont) {
+], function($, _, locale, Handlebars, apiProject, apiData, Prism, sampleRequest, semver, WebFont) {
 
-    // load google web fonts
-    loadGoogleFontCss();
+    // Load google web fonts.
+    WebFont.load({
+        active: function() {
+            // Only init after fonts are loaded.
+            init($, _, locale, Handlebars, apiProject, apiData, Prism, sampleRequest, semver);
+        },
+        inactive: function() {
+            // Run init, even if loading fonts fails
+            init($, _, locale, Handlebars, apiProject, apiData, Prism, sampleRequest, semver);
+        },
+        google: {
+            families: ['Source Code Pro', 'Source Sans Pro:n4,n6,n7']
+        }
+    });
+});
 
+function init($, _, locale, Handlebars, apiProject, apiData, Prism, sampleRequest, semver) {
     var api = apiData.api;
 
     //
@@ -385,7 +401,7 @@ require([
     $('#sections').append( content );
 
     // Bootstrap Scrollspy
-    $(this).scrollspy({ target: '#scrollingNav', offset: 18 });
+    $(this).scrollspy({ target: '#scrollingNav' });
 
     // Content-Scroll on Navigation click.
     $('.sidenav').find('a').on('click', function(e) {
@@ -396,13 +412,6 @@ require([
         window.location.hash = $(this).attr('href');
     });
 
-    // Quickjump on Pageload to hash position.
-    if(window.location.hash) {
-        var id = window.location.hash;
-        if ($(id).length > 0)
-            $('html,body').animate({ scrollTop: parseInt($(id).offset().top) }, 0);
-    }
-
     /**
      * Check if Parameter (sub) List has a type Field.
      * Example: @apiSuccess          varname1 No type.
@@ -518,6 +527,7 @@ require([
 
         // init modules
         sampleRequest.initDynamic();
+        Prism.highlightAll()
     }
     initDynamic();
 
@@ -528,18 +538,17 @@ require([
         }
     }
 
-    // Pre- / Code-Format
-    prettyPrint();
-
     //
     // HTML-Template specific jQuery-Functions
     //
     // Change Main Version
-    $('#versions li.version a').on('click', function(e) {
-        e.preventDefault();
-
-        var selectedVersion = $(this).html();
-        $('#version strong').html(selectedVersion);
+    function setMainVersion(selectedVersion) {
+        if (typeof(selectedVersion) === 'undefined') {
+            selectedVersion = $('#version strong').html();
+        }
+        else {
+            $('#version strong').html(selectedVersion);
+        }
 
         // hide all
         $('article').addClass('hide');
@@ -575,6 +584,13 @@ require([
 
         initDynamic();
         return;
+    }
+    setMainVersion();
+
+    $('#versions li.version a').on('click', function(e) {
+        e.preventDefault();
+
+        setMainVersion($(this).html());
     });
 
     // compare all article with their predecessor
@@ -592,11 +608,17 @@ require([
     if ($.urlParam('compare')) {
         // URL Paramter ?compare=1 is set
         $('#compareAllWithPredecessor').trigger('click');
+    }
 
-        if (window.location.hash) {
-            var id = window.location.hash;
-            $('html,body').animate({ scrollTop: parseInt($(id).offset().top) - 18 }, 0);
-        }
+    // Quick jump on page load to hash position.
+    // Should happen after setting the main version
+    // and after triggering the click on the compare button,
+    // as these actions modify the content
+    // and would make it jump to the wrong position or not jump at all.
+    if (window.location.hash) {
+        var id = window.location.hash;
+        if ($(id).length > 0)
+            $('html,body').animate({ scrollTop: parseInt($(id).offset().top) }, 0);
     }
 
     /**
@@ -855,21 +877,6 @@ require([
     }
 
     /**
-     * Load google fonts.
-     */
-    function loadGoogleFontCss() {
-        WebFont.load({
-            active: function() {
-                // Update scrollspy
-                $(window).scrollspy('refresh')
-            },
-            google: {
-                families: ['Source Code Pro', 'Source Sans Pro:n4,n6,n7']
-            }
-        });
-    }
-
-    /**
      * Return ordered entries by custom order and append not defined entries to the end.
      * @param  {String[]} elements
      * @param  {String[]} order
@@ -899,5 +906,5 @@ require([
         });
         return results;
     }
-
-});
+    Prism.highlightAll()
+}
diff --git a/apidoc/utils/handlebars_helper.js b/apidoc/utils/handlebars_helper.js
old mode 100755
new mode 100644
index a5d5c4f..14a57fc
--- a/apidoc/utils/handlebars_helper.js
+++ b/apidoc/utils/handlebars_helper.js
@@ -22,6 +22,16 @@ define([
     });
 
     /**
+     * set paramater type.
+     */
+    Handlebars.registerHelper("setInputType", function(text) {
+          if (text === "File") {
+            return "file";
+          }
+          return "text";
+    });
+
+    /**
      * start/stop timer for simple performance check.
      */
     var timer;
@@ -242,7 +252,7 @@ define([
             if( ! compare)
                 return source;
 
-            var d = diffMatchPatch.diff_main(compare, source);
+            var d = diffMatchPatch.diff_main(stripHtml(compare), stripHtml(source));
             diffMatchPatch.diff_cleanupSemantic(d);
             ds = diffMatchPatch.diff_prettyHtml(d);
             ds = ds.replace(/&para;/gm, '');
@@ -352,6 +362,15 @@ define([
       return html.join('');
     };
 
+    /**
+     * Fixes html after comparison (#506, #538, #616, #825)
+     */
+    function stripHtml(html){
+      var div = document.createElement("div");
+      div.innerHTML = html;
+      return div.textContent || div.innerText || "";
+    }
+
     // Exports
     return Handlebars;
 });
diff --git a/apidoc/utils/send_sample_request.js b/apidoc/utils/send_sample_request.js
index 714e6b8..4d695d1 100755
--- a/apidoc/utils/send_sample_request.js
+++ b/apidoc/utils/send_sample_request.js
@@ -1,7 +1,8 @@
 define([
     'jquery',
-    'lodash'
-], function($, _) {
+    'lodash',
+    './utils/send_sample_request_utils'
+], function($, _, utils) {
 
     var initDynamic = function() {
         // Button send
@@ -52,8 +53,7 @@ define([
         // create JSON dictionary of parameters
         var param = {};
         var paramType = {};
-        var bodyFormData = {};
-        var bodyFormDataType = {};
+        var bodyFormData = new FormData();
         var bodyJson = '';
         $root.find(".sample-request-param:checked").each(function(i, element) {
             var group = $(element).data("sample-request-param-group-id");
@@ -78,8 +78,10 @@ define([
                     }
                     if (contentType == "body-form-data"){
                         header['Content-Type'] = 'multipart/form-data'
-                        bodyFormData[key] = value;
-                        bodyFormDataType[key] = $(element).next().text();
+                        if (element.type == "file") {
+                        value = element.files[0];
+                      }
+                      bodyFormData.append(key,value);
                     }else {
                         param[key] = value;
                         paramType[key] = $(element).next().text();
@@ -92,26 +94,48 @@ define([
         var url = $root.find(".sample-request-url").val();
 
         //Convert {param} form to :param
-        url = url.replace(/{/,':').replace(/}/,'');
+        url = utils.convertPathParams(url);
 
         // Insert url parameter
         var pattern = pathToRegexp(url, null);
         var matches = pattern.exec(url);
         for (var i = 1; i < matches.length; i++) {
             var key = matches[i].substr(1);
+            var optional = false
+            if (key[key.length - 1] === '?') {
+                optional = true;
+                key = key.substr(0, key.length - 1);
+            }
             if (param[key] !== undefined) {
                 url = url.replace(matches[i], encodeURIComponent(param[key]));
 
                 // remove URL parameters from list
                 delete param[key];
+            } else if (optional) {
+                // if parameter is optional denoted by ending '?' in param (:param?)
+                // and no parameter is given, replace parameter with empty string instead
+                url = url.replace(matches[i], '');
+                delete param[key];
             }
         } // for
 
+        //handle nested objects and parsing fields
+        param = utils.handleNestedAndParsingFields(param, paramType);
 
         //add url search parameter
-        if (header['Content-Type'] == 'application/json' ){
-            url = url + encodeSearchParams(param);
-            param = bodyJson;
+        if (header['Content-Type'] == 'application/json') {
+            if (bodyJson) {
+                // bodyJson is set to value if request body: 'body/json' was selected and manual json was input
+                // in this case, use the given bodyJson and add other params in query string
+                url = url + encodeSearchParams(param);
+                param = bodyJson;
+            } else {
+                // bodyJson not set, but Content-Type: application/json header was set. In this case, send parameters
+                // as JSON body. First, try parsing fields of object with given paramType definition so that the json
+                // is valid against the parameter spec (e.g. Boolean params are boolean instead of strings in final json)
+                param = utils.tryParsingWithTypes(param, paramType);
+                param = JSON.stringify(param);
+            }
         }else if (header['Content-Type'] == 'multipart/form-data'){
             url = url + encodeSearchParams(param);
             param = bodyFormData;
@@ -131,6 +155,11 @@ define([
             error      : displayError
         };
 
+        if(header['Content-Type'] == 'multipart/form-data'){
+            delete ajaxRequest.headers['Content-Type'];
+            ajaxRequest.contentType=false;
+            ajaxRequest.processData=false;
+        }
         $.ajax(ajaxRequest);

diff --git a/apidoc/utils/send_sample_request_utils.js b/apidoc/utils/send_sample_request_utils.js
new file mode 100755
index 0000000..b7bd361
--- /dev/null
+++ b/apidoc/utils/send_sample_request_utils.js
@@ -0,0 +1,86 @@
+//this block is used to make this module works with Node (CommonJS module format)
+if (typeof define !== 'function') {
+    var define = require('amdefine')(module)
+}
+
+define(['lodash'], function (_) {
+
+    function handleNestedFields(object, key, params, paramType) {
+        var attributes = key.split('.');
+        var field = attributes[0];
+        params.push(field);
+        if (attributes.length > 1 && paramType[params.join('.')] == 'Object') {
+            var nestedField = attributes.slice(1).join('.');
+            if (!object[field])
+                object[field] = {};
+            if (typeof object[field] == 'object') {
+                object[field][nestedField] = object[key];
+                delete object[key];
+                handleNestedFields(object[field], nestedField, params, paramType);
+            }
+        }
+    }
+
+    function handleNestedFieldsForAllParams(param, paramType) {
+        var result = Object.assign({}, param);
+        Object.keys(result).forEach(function (key) {
+            handleNestedFields(result, key, [], paramType);
+        });
+        return result
+    }
+
+    function handleArraysAndObjectFields(param, paramType) {
+        var result = Object.assign({}, param);
+        Object.keys(paramType).forEach(function (key) {
+            if (result[key] && (paramType[key].endsWith('[]') || paramType[key] === 'Object')) {
+                try {
+                    result[key] = JSON.parse(result[key]);
+                } catch (e) {;}
+            }
+        });
+        return result
+    }
+
+    function tryParsingAsType(object, path, type) {
+        var val = _.get(object, path);
+        if (val !== undefined) {
+            if (type === 'Boolean') {
+                if (val === 'true') {
+                    _.set(object, path, true);
+                } else if (val === 'false') {
+                    _.set(object, path, false);
+                } else {
+                    console.warn('Failed to parse object value at path [' + path + ']. Value: (' + val + '). Type: (' + type + ')');
+                }
+            } else if (type === 'Number') {
+                var parsedInt = parseInt(val, 10);
+                if (!_.isNaN(parsedInt)) {
+                    _.set(object, path, parsedInt);
+                } else {
+                    console.warn('Failed to parse object value at path [' + path + ']. Value: (' + val + '). Type: (' + type + ')');
+                }
+            }
+        }
+    }
+
+    function handleNestedAndParsingFields(param, paramType) {
+        var result = handleArraysAndObjectFields(param, paramType);
+        result = handleNestedFieldsForAllParams(result, paramType);
+        return result;
+    }
+
+    function tryParsingWithTypes(param, paramType) {
+        var result = Object.assign({}, param);
+        Object.keys(paramType).forEach(function (key) {
+            tryParsingAsType(result, key, paramType[key]);
+        });
+        return result;
+    }
+
+    // Converts path params in the {param} format to the accepted :param format, used before inserting the URL params.
+    function convertPathParams(url) {
+        return url.replace(/{(.+?)}/g, ':$1');
+    }
+
+    return {handleNestedAndParsingFields,convertPathParams,tryParsingWithTypes};
+});
diff --git a/apidoc/vendor/bootstrap.min.css b/apidoc/vendor/bootstrap.min.css
old mode 100755
new mode 100644
diff --git a/apidoc/vendor/bootstrap.min.js b/apidoc/vendor/bootstrap.min.js
old mode 100755
new mode 100644
diff --git a/apidoc/vendor/diff_match_patch.min.js b/apidoc/vendor/diff_match_patch.min.js
old mode 100755
new mode 100644
diff --git a/apidoc/vendor/handlebars.min.js b/apidoc/vendor/handlebars.min.js
old mode 100755
new mode 100644
index 4e2aa8f..21b1550
--- a/apidoc/vendor/handlebars.min.js
+++ b/apidoc/vendor/handlebars.min.js
@@ -1,8 +1,9 @@
-/*!
+/**!
 
- handlebars v4.0.5
+ @license
+ handlebars v4.7.6
 
-Copyright (C) 2011-2015 by Yehuda Katz
+Copyright (C) 2011-2019 by Yehuda Katz
 
 Permission is hereby granted, free of charge, to any person obtaining a copy
 of this software and associated documentation files (the "Software"), to deal
@@ -22,8 +23,7 @@ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
 OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
 THE SOFTWARE.
 
-@license
 */
\ No newline at end of file
\ No newline at end of file
diff --git a/apidoc/vendor/jquery.min.js b/apidoc/vendor/jquery.min.js
old mode 100755
new mode 100644
diff --git a/apidoc/vendor/list.min.js b/apidoc/vendor/list.min.js
old mode 100755
new mode 100644
diff --git a/apidoc/vendor/lodash.custom.min.js b/apidoc/vendor/lodash.custom.min.js
old mode 100755
new mode 100644
index 398b009..c9717c3
--- a/apidoc/vendor/lodash.custom.min.js
+++ b/apidoc/vendor/lodash.custom.min.js
@@ -1,41 +1,41 @@
 /**
  * @license
  * Lodash (Custom Build) lodash.com/license | Underscore.js 1.8.3 underscorejs.org/LICENSE
- * Build: `lodash -p -o template/vendor/lodash.custom.min.js include="groupBy,each,extend,some" exports="amd"`
+ * Build: `lodash -p -o template/vendor/lodash.custom.min.js include="get,set,groupBy,each,extend,some,isNaN" exports="amd"`
  */
-l.some=function(t,e,r){var n=Je(t)?c:V;return r&&ct(t,e,r)&&(e=Mt),n(t,Y(e,3))},l.toString=At,l.each=bt,l.VERSION="4.17.5",typeof define=="function"&&typeof define.amd=="object"&&define.amd&& define(function(){return l})}).call(this);
\ No newline at end of file
+l.isArguments=Je,l.isArray=Ke,l.isArrayLike=yt,l.isBuffer=Qe,l.isFunction=jt,l.isLength=_t,l.isMap=Xe,l.isNaN=function(t){return dt(t)&&t!=+t},l.isNumber=dt,l.isObject=vt,l.isObjectLike=gt,l.isSet=Ye,l.isSymbol=At,l.isTypedArray=Ze,l.stubArray=It,l.stubFalse=Mt,l.some=function(t,e,r){var n=Ke(t)?c:P;return r&&ct(t,e,r)&&(e=Ut),n(t,Y(e,3))},l.toString=wt,l.each=bt,l.VERSION="4.17.5",typeof define=="function"&&typeof define.amd=="object"&&define.amd&& define(function(){return l})}).call(this);
\ No newline at end of file
diff --git a/apidoc/vendor/path-to-regexp/LICENSE b/apidoc/vendor/path-to-regexp/LICENSE
old mode 100755
new mode 100644
diff --git a/apidoc/vendor/path-to-regexp/index.js b/apidoc/vendor/path-to-regexp/index.js
old mode 100755
new mode 100644
diff --git a/apidoc/vendor/polyfill.js b/apidoc/vendor/polyfill.js
old mode 100755
new mode 100644
diff --git a/apidoc/vendor/prettify.css b/apidoc/vendor/prettify.css
deleted file mode 100755
index c54bf6b..0000000
--- a/apidoc/vendor/prettify.css
+++ /dev/null
@@ -1,51 +0,0 @@
-/* Pretty printing styles. Used with prettify.js. */
-/* Vim sunburst theme by David Leibovic */
-
-pre .str, code .str { color: #65B042; } /* string  - green */
-pre .kwd, code .kwd { color: #E28964; } /* keyword - dark pink */
-pre .com, code .com { color: #AEAEAE; font-style: italic; } /* comment - gray */
-pre .typ, code .typ { color: #89bdff; } /* type - light blue */
-pre .lit, code .lit { color: #3387CC; } /* literal - blue */
-pre .pun, code .pun { color: #fff; } /* punctuation - white */
-pre .pln, code .pln { color: #fff; } /* plaintext - white */
-pre .tag, code .tag { color: #89bdff; } /* html/xml tag    - light blue */
-pre .atn, code .atn { color: #bdb76b; } /* html/xml attribute name  - khaki */
-pre .atv, code .atv { color: #65B042; } /* html/xml attribute value - green */
-pre .dec, code .dec { color: #3387CC; } /* decimal - blue */
-
-pre.prettyprint, code.prettyprint {
-  background-color: #000;
-  -moz-border-radius: 8px;
-  -webkit-border-radius: 8px;
-  -o-border-radius: 8px;
-  -ms-border-radius: 8px;
-  -khtml-border-radius: 8px;
-  border-radius: 8px;
-}
-
-pre.prettyprint {
-  width: 95%;
-  margin: 1em auto;
-  padding: 1em;
-  white-space: pre-wrap;
-}
-
-
-/* Specify class=linenums on a pre to get line numbering */
-ol.linenums { margin-top: 0; margin-bottom: 0; color: #AEAEAE; } /* IE indents via margin-left */
-li.L0,li.L1,li.L2,li.L3,li.L5,li.L6,li.L7,li.L8 { list-style-type: none }
-/* Alternate shading for lines */
-li.L1,li.L3,li.L5,li.L7,li.L9 { }
-
-@media print {
-  pre .str, code .str { color: #060; }
-  pre .kwd, code .kwd { color: #006; font-weight: bold; }
-  pre .com, code .com { color: #600; font-style: italic; }
-  pre .typ, code .typ { color: #404; font-weight: bold; }
-  pre .lit, code .lit { color: #044; }
-  pre .pun, code .pun { color: #440; }
-  pre .pln, code .pln { color: #000; }
-  pre .tag, code .tag { color: #006; font-weight: bold; }
-  pre .atn, code .atn { color: #404; }
-  pre .atv, code .atv { color: #060; }
-}
diff --git a/apidoc/vendor/prettify/lang-Splus.js b/apidoc/vendor/prettify/lang-Splus.js
deleted file mode 100755
index 6ce16e8..0000000
--- a/apidoc/vendor/prettify/lang-Splus.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2012 Jeffrey B. Arnold
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["pun",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\*|\+|\^|\/|!|%.*?%|=|~|\$|@|:{1,3}|[\[\](){};,?])/],["pln",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\.[a-zA-Z_][0-9a-zA-Z\._]*)(?![A-Za-z0-9_.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
diff --git a/apidoc/vendor/prettify/lang-aea.js b/apidoc/vendor/prettify/lang-aea.js
deleted file mode 100755
index 784ebb2..0000000
--- a/apidoc/vendor/prettify/lang-aea.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2009 Onno Hommes.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]);
diff --git a/apidoc/vendor/prettify/lang-agc.js b/apidoc/vendor/prettify/lang-agc.js
deleted file mode 100755
index 784ebb2..0000000
--- a/apidoc/vendor/prettify/lang-agc.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2009 Onno Hommes.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]);
diff --git a/apidoc/vendor/prettify/lang-apollo.js b/apidoc/vendor/prettify/lang-apollo.js
deleted file mode 100755
index 784ebb2..0000000
--- a/apidoc/vendor/prettify/lang-apollo.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2009 Onno Hommes.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-null],["typ",/^(?:-?GENADR|=MINUS|2BCADR|VN|BOF|MM|-?2CADR|-?[1-6]DNADR|ADRES|BBCON|[SE]?BANK\=?|BLOCK|BNKSUM|E?CADR|COUNT\*?|2?DEC\*?|-?DNCHAN|-?DNPTR|EQUALS|ERASE|MEMORY|2?OCT|REMADR|SETLOC|SUBRO|ORG|BSS|BES|SYN|EQU|DEFINE|END)\s/,null],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[!-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["apollo","agc","aea"]);
diff --git a/apidoc/vendor/prettify/lang-basic.js b/apidoc/vendor/prettify/lang-basic.js
deleted file mode 100755
index 2d6151d..0000000
--- a/apidoc/vendor/prettify/lang-basic.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2013 Peter Kofler
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:"(?:[^\\"\r\n]|\\.)*(?:"|$))/,null,'"'],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["com",/^REM[^\r\n]*/,null],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,null],["pln",/^[A-Z][A-Z0-9]?(?:\$|%)?/i,null],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?/i,
-null,"0123456789"],["pun",/^.[^\s\w\.$%"]*/,null]]),["basic","cbm"]);
diff --git a/apidoc/vendor/prettify/lang-cbm.js b/apidoc/vendor/prettify/lang-cbm.js
deleted file mode 100755
index 2d6151d..0000000
--- a/apidoc/vendor/prettify/lang-cbm.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2013 Peter Kofler
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:"(?:[^\\"\r\n]|\\.)*(?:"|$))/,null,'"'],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["com",/^REM[^\r\n]*/,null],["kwd",/^\b(?:AND|CLOSE|CLR|CMD|CONT|DATA|DEF ?FN|DIM|END|FOR|GET|GOSUB|GOTO|IF|INPUT|LET|LIST|LOAD|NEW|NEXT|NOT|ON|OPEN|OR|POKE|PRINT|READ|RESTORE|RETURN|RUN|SAVE|STEP|STOP|SYS|THEN|TO|VERIFY|WAIT)\b/,null],["pln",/^[A-Z][A-Z0-9]?(?:\$|%)?/i,null],["lit",/^(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?/i,
-null,"0123456789"],["pun",/^.[^\s\w\.$%"]*/,null]]),["basic","cbm"]);
diff --git a/apidoc/vendor/prettify/lang-cl.js b/apidoc/vendor/prettify/lang-cl.js
deleted file mode 100755
index 2f18c96..0000000
--- a/apidoc/vendor/prettify/lang-cl.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
-null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/apidoc/vendor/prettify/lang-clj.js b/apidoc/vendor/prettify/lang-clj.js
deleted file mode 100755
index d1173b1..0000000
--- a/apidoc/vendor/prettify/lang-clj.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
- Copyright (C) 2011 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-null],["typ",/^:[0-9a-zA-Z\-]+/]]),["clj"]);
diff --git a/apidoc/vendor/prettify/lang-css.js b/apidoc/vendor/prettify/lang-css.js
deleted file mode 100755
index 90d175d..0000000
--- a/apidoc/vendor/prettify/lang-css.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[ \t\r\n\f]+/,null," \t\r\n\f"]],[["str",/^\"(?:[^\n\r\f\\\"]|\\(?:\r\n?|\n|\f)|\\[\s\S])*\"/,null],["str",/^\'(?:[^\n\r\f\\\']|\\(?:\r\n?|\n|\f)|\\[\s\S])*\'/,null],["lang-css-str",/^url\(([^\)\"\']+)\)/i],["kwd",/^(?:url|rgb|\!important|@import|@page|@media|@charset|inherit)(?=[^\-\w]|$)/i,null],["lang-css-kw",/^(-?(?:[_a-z]|(?:\\[0-9a-f]+ ?))(?:[_a-z0-9\-]|\\(?:\\[0-9a-f]+ ?))*)\s*:/i],["com",/^\/\*[^*]*\*+(?:[^\/*][^*]*\*+)*\//],
-["com",/^(?:\x3c!--|--\x3e)/],["lit",/^(?:\d+|\d*\.\d+)(?:%|[a-z]+)?/i],["lit",/^#(?:[0-9a-f]{3}){1,2}\b/i],["pln",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i],["pun",/^[^\s\w\'\"]+/]]),["css"]);PR.registerLangHandler(PR.createSimpleLexer([],[["kwd",/^-?(?:[_a-z]|(?:\\[\da-f]+ ?))(?:[_a-z\d\-]|\\(?:\\[\da-f]+ ?))*/i]]),["css-kw"]);PR.registerLangHandler(PR.createSimpleLexer([],[["str",/^[^\)\"\']+/]]),["css-str"]);
diff --git a/apidoc/vendor/prettify/lang-dart.js b/apidoc/vendor/prettify/lang-dart.js
deleted file mode 100755
index da142a4..0000000
--- a/apidoc/vendor/prettify/lang-dart.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2013 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["typ",/^\b(?:bool|double|Dynamic|int|num|Object|String|void)\b/i],["kwd",/^\b(?:false|null|true)\b/i],["str",/^r?[\']{3}[\s|\S]*?[^\\][\']{3}/],["str",/^r?[\"]{3}[\s|\S]*?[^\\][\"]{3}/],["str",/^r?\'(\'|(?:[^\n\r\f])*?[^\\]\')/],["str",/^r?\"(\"|(?:[^\n\r\f])*?[^\\]\")/],["typ",/^[A-Z]\w*/],["pln",/^[a-z_$][a-z0-9_]*/i],["pun",/^[~!%^&*+=|?:<>/-]/],["lit",/^\b0x[0-9a-f]+/i],["lit",/^\b\d+(?:\.\d*)?(?:e[+-]?\d+)?/i],["lit",
-/^\b\.\d+(?:e[+-]?\d+)?/i],["pun",/^[(){}\[\],.;]/]]),["dart"]);
diff --git a/apidoc/vendor/prettify/lang-el.js b/apidoc/vendor/prettify/lang-el.js
deleted file mode 100755
index 2f18c96..0000000
--- a/apidoc/vendor/prettify/lang-el.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
-null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/apidoc/vendor/prettify/lang-erl.js b/apidoc/vendor/prettify/lang-erl.js
deleted file mode 100755
index e7da9b0..0000000
--- a/apidoc/vendor/prettify/lang-erl.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2013 Andrew Allen
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["kwd",/^-[a-z_]+/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;]/]]),["erlang","erl"]);
diff --git a/apidoc/vendor/prettify/lang-erlang.js b/apidoc/vendor/prettify/lang-erlang.js
deleted file mode 100755
index e7da9b0..0000000
--- a/apidoc/vendor/prettify/lang-erlang.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2013 Andrew Allen
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["kwd",/^-[a-z_]+/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;]/]]),["erlang","erl"]);
diff --git a/apidoc/vendor/prettify/lang-fs.js b/apidoc/vendor/prettify/lang-fs.js
deleted file mode 100755
index c012a3f..0000000
--- a/apidoc/vendor/prettify/lang-fs.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["lit",/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^(?:[a-z_][\w']*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],["pun",/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]);
diff --git a/apidoc/vendor/prettify/lang-go.js b/apidoc/vendor/prettify/lang-go.js
deleted file mode 100755
index 1f6934a..0000000
--- a/apidoc/vendor/prettify/lang-go.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
- Copyright (C) 2010 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["pln",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])+(?:\'|$)|`[^`]*(?:`|$))/,null,"\"'"]],[["com",/^(?:\/\/[^\r\n]*|\/\*[\s\S]*?\*\/)/],["pln",/^(?:[^\/\"\'`]|\/(?![\/\*]))+/i]]),["go"]);
diff --git a/apidoc/vendor/prettify/lang-hs.js b/apidoc/vendor/prettify/lang-hs.js
deleted file mode 100755
index 2002221..0000000
--- a/apidoc/vendor/prettify/lang-hs.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-null],["pln",/^(?:[A-Z][\w\']*\.)*[a-zA-Z][\w\']*/],["pun",/^[^\t\n\x0B\x0C\r a-zA-Z0-9\'\"]+/]]),["hs"]);
diff --git a/apidoc/vendor/prettify/lang-lasso.js b/apidoc/vendor/prettify/lang-lasso.js
deleted file mode 100755
index 415ca67..0000000
--- a/apidoc/vendor/prettify/lang-lasso.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2013 Eric Knibbe
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\`[^\`]*(?:\`|$)/,null,"`"],["lit",/^0x[\da-f]+|\d+/i,null,"0123456789"],["atn",/^#\d+|[#$][a-z_][\w.]*|#![ \S]+lasso9\b/i,null,"#$"]],[["tag",/^[[\]]|<\?(?:lasso(?:script)?|=)|\?>|noprocess\b|no_square_brackets\b/i],["com",/^\/\/[^\r\n]*|\/\*[\s\S]*?\*\//],
-["typ",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\b|^\.\.?/i],["pln",/^[a-z_][\w.]*(?:=\s*(?=\())?/i],["pun",/^:=|[-+*\/%=<>&|!?\\]/]]),["lasso","ls","lassoscript"]);
diff --git a/apidoc/vendor/prettify/lang-lassoscript.js b/apidoc/vendor/prettify/lang-lassoscript.js
deleted file mode 100755
index 415ca67..0000000
--- a/apidoc/vendor/prettify/lang-lassoscript.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2013 Eric Knibbe
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\`[^\`]*(?:\`|$)/,null,"`"],["lit",/^0x[\da-f]+|\d+/i,null,"0123456789"],["atn",/^#\d+|[#$][a-z_][\w.]*|#![ \S]+lasso9\b/i,null,"#$"]],[["tag",/^[[\]]|<\?(?:lasso(?:script)?|=)|\?>|noprocess\b|no_square_brackets\b/i],["com",/^\/\/[^\r\n]*|\/\*[\s\S]*?\*\//],
-["typ",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\b|^\.\.?/i],["pln",/^[a-z_][\w.]*(?:=\s*(?=\())?/i],["pun",/^:=|[-+*\/%=<>&|!?\\]/]]),["lasso","ls","lassoscript"]);
diff --git a/apidoc/vendor/prettify/lang-latex.js b/apidoc/vendor/prettify/lang-latex.js
deleted file mode 100755
index efc758c..0000000
--- a/apidoc/vendor/prettify/lang-latex.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
- Copyright (C) 2011 Martin S.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\r\n]*/,null,"%"]],[["kwd",/^\\[a-zA-Z@]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[{}()\[\]=]+/]]),["latex","tex"]);
diff --git a/apidoc/vendor/prettify/lang-lgt.js b/apidoc/vendor/prettify/lang-lgt.js
deleted file mode 100755
index 2959d75..0000000
--- a/apidoc/vendor/prettify/lang-lgt.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2014 Paulo Moura
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["kwd",/^\s*:-\s(e(lse|nd(if|_(category|object|protocol)))|built_in|dynamic|synchronized|threaded)/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;{}:^<>=\\/+*?#!-]/]]),["logtalk","lgt"]);
diff --git a/apidoc/vendor/prettify/lang-lisp.js b/apidoc/vendor/prettify/lang-lisp.js
deleted file mode 100755
index 2f18c96..0000000
--- a/apidoc/vendor/prettify/lang-lisp.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
-null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/apidoc/vendor/prettify/lang-ll.js b/apidoc/vendor/prettify/lang-ll.js
deleted file mode 100755
index 7604d96..0000000
--- a/apidoc/vendor/prettify/lang-ll.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
- Copyright (C) 2013 Nikhil Dabas
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^!?\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["com",/^;[^\r\n]*/,null,";"]],[["pln",/^[%@!](?:[-a-zA-Z$._][-a-zA-Z$._0-9]*|\d+)/],["kwd",/^[A-Za-z_][0-9A-Za-z_]*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[xX][a-fA-F0-9]+)/],["pun",/^[()\[\]{},=*<>:]|\.\.\.$/]]),["llvm","ll"]);
diff --git a/apidoc/vendor/prettify/lang-llvm.js b/apidoc/vendor/prettify/lang-llvm.js
deleted file mode 100755
index 7604d96..0000000
--- a/apidoc/vendor/prettify/lang-llvm.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
- Copyright (C) 2013 Nikhil Dabas
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^!?\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["com",/^;[^\r\n]*/,null,";"]],[["pln",/^[%@!](?:[-a-zA-Z$._][-a-zA-Z$._0-9]*|\d+)/],["kwd",/^[A-Za-z_][0-9A-Za-z_]*/,null],["lit",/^\d+\.\d+/],["lit",/^(?:\d+|0[xX][a-fA-F0-9]+)/],["pun",/^[()\[\]{},=*<>:]|\.\.\.$/]]),["llvm","ll"]);
diff --git a/apidoc/vendor/prettify/lang-logtalk.js b/apidoc/vendor/prettify/lang-logtalk.js
deleted file mode 100755
index 2959d75..0000000
--- a/apidoc/vendor/prettify/lang-logtalk.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2014 Paulo Moura
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["kwd",/^\s*:-\s(e(lse|nd(if|_(category|object|protocol)))|built_in|dynamic|synchronized|threaded)/],["typ",/^[A-Z_][a-zA-Z0-9_]*/],["pun",/^[.,;{}:^<>=\\/+*?#!-]/]]),["logtalk","lgt"]);
diff --git a/apidoc/vendor/prettify/lang-ls.js b/apidoc/vendor/prettify/lang-ls.js
deleted file mode 100755
index 415ca67..0000000
--- a/apidoc/vendor/prettify/lang-ls.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2013 Eric Knibbe
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\'(?:[^\'\\]|\\[\s\S])*(?:\'|$)/,null,"'"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"'],["str",/^\`[^\`]*(?:\`|$)/,null,"`"],["lit",/^0x[\da-f]+|\d+/i,null,"0123456789"],["atn",/^#\d+|[#$][a-z_][\w.]*|#![ \S]+lasso9\b/i,null,"#$"]],[["tag",/^[[\]]|<\?(?:lasso(?:script)?|=)|\?>|noprocess\b|no_square_brackets\b/i],["com",/^\/\/[^\r\n]*|\/\*[\s\S]*?\*\//],
-["typ",/^(?:array|date|decimal|duration|integer|map|pair|string|tag|xml|null|boolean|bytes|keyword|list|locale|queue|set|stack|staticarray|local|var|variable|global|data|self|inherited|currentcapture|givenblock)\b|^\.\.?/i],["pln",/^[a-z_][\w.]*(?:=\s*(?=\())?/i],["pun",/^:=|[-+*\/%=<>&|!?\\]/]]),["lasso","ls","lassoscript"]);
diff --git a/apidoc/vendor/prettify/lang-lsp.js b/apidoc/vendor/prettify/lang-lsp.js
deleted file mode 100755
index 2f18c96..0000000
--- a/apidoc/vendor/prettify/lang-lsp.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
-null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/apidoc/vendor/prettify/lang-lua.js b/apidoc/vendor/prettify/lang-lua.js
deleted file mode 100755
index afb2901..0000000
--- a/apidoc/vendor/prettify/lang-lua.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^(?:\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)|\'(?:[^\'\\]|\\[\s\S])*(?:\'|$))/,null,"\"'"]],[["com",/^--(?:\[(=*)\[[\s\S]*?(?:\]\1\]|$)|[^\r\n]*)/],["str",/^\[(=*)\[[\s\S]*?(?:\]\1\]|$)/],["kwd",/^(?:and|break|do|else|elseif|end|false|for|function|if|in|local|nil|not|or|repeat|return|then|true|until|while)\b/,null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],
-["pln",/^[a-z_]\w*/i],["pun",/^[^\w\t\n\r \xA0][^\w\t\n\r \xA0\"\'\-\+=]*/]]),["lua"]);
diff --git a/apidoc/vendor/prettify/lang-matlab.js b/apidoc/vendor/prettify/lang-matlab.js
deleted file mode 100755
index a0522a5..0000000
--- a/apidoc/vendor/prettify/lang-matlab.js
+++ /dev/null
@@ -1,29 +0,0 @@
-/*
-
- Copyright (c) 2013 by Amro <[email-masked]>
-
- Permission is hereby granted, free of charge, to any person obtaining a copy
- of this software and associated documentation files (the "Software"), to deal
- in the Software without restriction, including without limitation the rights
- to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
- copies of the Software, and to permit persons to whom the Software is
- furnished to do so, subject to the following conditions:
-
- The above copyright notice and this permission notice shall be included in
- all copies or substantial portions of the Software.
-
- THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
- IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
- FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
- AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
- LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
- OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
- THE SOFTWARE.
-*/
-/^'/,null]];
-a.registerLangHandler(a.createSimpleLexer([],[[a.PR_KEYWORD,/^\b(?:break|case|catch|classdef|continue|else|elseif|end|for|function|global|if|otherwise|parfor|persistent|return|spmd|switch|try|while)\b/,null],["const",/^\b(?:true|false|inf|Inf|nan|NaN|eps|pi|ans|nargin|nargout|varargin|varargout)\b/,null],[a.PR_TYPE,/^\b(?:cell|struct|char|double|single|logical|u?int(?:8|16|32|64)|sparse)\b/,null],["fun",/^\b(?:abs|accumarray|acos(?:d|h)?|acot(?:d|h)?|acsc(?:d|h)?|actxcontrol(?:list|select)?|actxGetRunningServer|actxserver|addlistener|addpath|addpref|addtodate|airy|align|alim|all|allchild|alpha|alphamap|amd|ancestor|and|angle|annotation|any|area|arrayfun|asec(?:d|h)?|asin(?:d|h)?|assert|assignin|atan(?:2|d|h)?|audiodevinfo|audioplayer|audiorecorder|aufinfo|auread|autumn|auwrite|avifile|aviinfo|aviread|axes|axis|balance|bar(?:3|3h|h)?|base2dec|beep|BeginInvoke|bench|bessel(?:h|i|j|k|y)|beta|betainc|betaincinv|betaln|bicg|bicgstab|bicgstabl|bin2dec|bitand|bitcmp|bitget|bitmax|bitnot|bitor|bitset|bitshift|bitxor|blanks|blkdiag|bone|box|brighten|brush|bsxfun|builddocsearchdb|builtin|bvp4c|bvp5c|bvpget|bvpinit|bvpset|bvpxtend|calendar|calllib|callSoapService|camdolly|cameratoolbar|camlight|camlookat|camorbit|campan|campos|camproj|camroll|camtarget|camup|camva|camzoom|cart2pol|cart2sph|cast|cat|caxis|cd|cdf2rdf|cdfepoch|cdfinfo|cdflib(?:.(?:close|closeVar|computeEpoch|computeEpoch16|create|createAttr|createVar|delete|deleteAttr|deleteAttrEntry|deleteAttrgEntry|deleteVar|deleteVarRecords|epoch16Breakdown|epochBreakdown|getAttrEntry|getAttrgEntry|getAttrMaxEntry|getAttrMaxgEntry|getAttrName|getAttrNum|getAttrScope|getCacheSize|getChecksum|getCompression|getCompressionCacheSize|getConstantNames|getConstantValue|getCopyright|getFileBackward|getFormat|getLibraryCopyright|getLibraryVersion|getMajority|getName|getNumAttrEntries|getNumAttrgEntries|getNumAttributes|getNumgAttributes|getReadOnlyMode|getStageCacheSize|getValidate|getVarAllocRecords|getVarBlockingFactor|getVarCacheSize|getVarCompression|getVarData|getVarMaxAllocRecNum|getVarMaxWrittenRecNum|getVarName|getVarNum|getVarNumRecsWritten|getVarPadValue|getVarRecordData|getVarReservePercent|getVarsMaxWrittenRecNum|getVarSparseRecords|getVersion|hyperGetVarData|hyperPutVarData|inquire|inquireAttr|inquireAttrEntry|inquireAttrgEntry|inquireVar|open|putAttrEntry|putAttrgEntry|putVarData|putVarRecordData|renameAttr|renameVar|setCacheSize|setChecksum|setCompression|setCompressionCacheSize|setFileBackward|setFormat|setMajority|setReadOnlyMode|setStageCacheSize|setValidate|setVarAllocBlockRecords|setVarBlockingFactor|setVarCacheSize|setVarCompression|setVarInitialRecs|setVarPadValue|SetVarReservePercent|setVarsCacheSize|setVarSparseRecords))?|cdfread|cdfwrite|ceil|cell2mat|cell2struct|celldisp|cellfun|cellplot|cellstr|cgs|checkcode|checkin|checkout|chol|cholinc|cholupdate|circshift|cla|clabel|class|clc|clear|clearvars|clf|clipboard|clock|close|closereq|cmopts|cmpermute|cmunique|colamd|colon|colorbar|colordef|colormap|colormapeditor|colperm|Combine|comet|comet3|commandhistory|commandwindow|compan|compass|complex|computer|cond|condeig|condest|coneplot|conj|containers.Map|contour(?:3|c|f|slice)?|contrast|conv|conv2|convhull|convhulln|convn|cool|copper|copyfile|copyobj|corrcoef|cos(?:d|h)?|cot(?:d|h)?|cov|cplxpair|cputime|createClassFromWsdl|createSoapMessage|cross|csc(?:d|h)?|csvread|csvwrite|ctranspose|cumprod|cumsum|cumtrapz|curl|customverctrl|cylinder|daqread|daspect|datacursormode|datatipinfo|date|datenum|datestr|datetick|datevec|dbclear|dbcont|dbdown|dblquad|dbmex|dbquit|dbstack|dbstatus|dbstep|dbstop|dbtype|dbup|dde23|ddeget|ddesd|ddeset|deal|deblank|dec2base|dec2bin|dec2hex|decic|deconv|del2|delaunay|delaunay3|delaunayn|DelaunayTri|delete|demo|depdir|depfun|det|detrend|deval|diag|dialog|diary|diff|diffuse|dir|disp|display|dither|divergence|dlmread|dlmwrite|dmperm|doc|docsearch|dos|dot|dragrect|drawnow|dsearch|dsearchn|dynamicprops|echo|echodemo|edit|eig|eigs|ellipj|ellipke|ellipsoid|empty|enableNETfromNetworkDrive|enableservice|EndInvoke|enumeration|eomday|eq|erf|erfc|erfcinv|erfcx|erfinv|error|errorbar|errordlg|etime|etree|etreeplot|eval|evalc|evalin|event.(?:EventData|listener|PropertyEvent|proplistener)|exifread|exist|exit|exp|expint|expm|expm1|export2wsdlg|eye|ezcontour|ezcontourf|ezmesh|ezmeshc|ezplot|ezplot3|ezpolar|ezsurf|ezsurfc|factor|factorial|fclose|feather|feature|feof|ferror|feval|fft|fft2|fftn|fftshift|fftw|fgetl|fgets|fieldnames|figure|figurepalette|fileattrib|filebrowser|filemarker|fileparts|fileread|filesep|fill|fill3|filter|filter2|find|findall|findfigs|findobj|findstr|finish|fitsdisp|fitsinfo|fitsread|fitswrite|fix|flag|flipdim|fliplr|flipud|floor|flow|fminbnd|fminsearch|fopen|format|fplot|fprintf|frame2im|fread|freqspace|frewind|fscanf|fseek|ftell|FTP|full|fullfile|func2str|functions|funm|fwrite|fzero|gallery|gamma|gammainc|gammaincinv|gammaln|gca|gcbf|gcbo|gcd|gcf|gco|ge|genpath|genvarname|get|getappdata|getenv|getfield|getframe|getpixelposition|getpref|ginput|gmres|gplot|grabcode|gradient|gray|graymon|grid|griddata(?:3|n)?|griddedInterpolant|gsvd|gt|gtext|guidata|guide|guihandles|gunzip|gzip|h5create|h5disp|h5info|h5read|h5readatt|h5write|h5writeatt|hadamard|handle|hankel|hdf|hdf5|hdf5info|hdf5read|hdf5write|hdfinfo|hdfread|hdftool|help|helpbrowser|helpdesk|helpdlg|helpwin|hess|hex2dec|hex2num|hgexport|hggroup|hgload|hgsave|hgsetget|hgtransform|hidden|hilb|hist|histc|hold|home|horzcat|hostid|hot|hsv|hsv2rgb|hypot|ichol|idivide|ifft|ifft2|ifftn|ifftshift|ilu|im2frame|im2java|imag|image|imagesc|imapprox|imfinfo|imformats|import|importdata|imread|imwrite|ind2rgb|ind2sub|inferiorto|info|inline|inmem|inpolygon|input|inputdlg|inputname|inputParser|inspect|instrcallback|instrfind|instrfindall|int2str|integral(?:2|3)?|interp(?:1|1q|2|3|ft|n)|interpstreamspeed|intersect|intmax|intmin|inv|invhilb|ipermute|isa|isappdata|iscell|iscellstr|ischar|iscolumn|isdir|isempty|isequal|isequaln|isequalwithequalnans|isfield|isfinite|isfloat|isglobal|ishandle|ishghandle|ishold|isinf|isinteger|isjava|iskeyword|isletter|islogical|ismac|ismatrix|ismember|ismethod|isnan|isnumeric|isobject|isocaps|isocolors|isonormals|isosurface|ispc|ispref|isprime|isprop|isreal|isrow|isscalar|issorted|isspace|issparse|isstr|isstrprop|isstruct|isstudent|isunix|isvarname|isvector|javaaddpath|javaArray|javachk|javaclasspath|javacomponent|javaMethod|javaMethodEDT|javaObject|javaObjectEDT|javarmpath|jet|keyboard|kron|lasterr|lasterror|lastwarn|lcm|ldivide|ldl|le|legend|legendre|length|libfunctions|libfunctionsview|libisloaded|libpointer|libstruct|license|light|lightangle|lighting|lin2mu|line|lines|linkaxes|linkdata|linkprop|linsolve|linspace|listdlg|listfonts|load|loadlibrary|loadobj|log|log10|log1p|log2|loglog|logm|logspace|lookfor|lower|ls|lscov|lsqnonneg|lsqr|lt|lu|luinc|magic|makehgtform|mat2cell|mat2str|material|matfile|matlab.io.MatFile|matlab.mixin.(?:Copyable|Heterogeneous(?:.getDefaultScalarElement)?)|matlabrc|matlabroot|max|maxNumCompThreads|mean|median|membrane|memmapfile|memory|menu|mesh|meshc|meshgrid|meshz|meta.(?:class(?:.fromName)?|DynamicProperty|EnumeratedValue|event|MetaData|method|package(?:.(?:fromName|getAllPackages))?|property)|metaclass|methods|methodsview|mex(?:.getCompilerConfigurations)?|MException|mexext|mfilename|min|minres|minus|mislocked|mkdir|mkpp|mldivide|mlint|mlintrpt|mlock|mmfileinfo|mmreader|mod|mode|more|move|movefile|movegui|movie|movie2avi|mpower|mrdivide|msgbox|mtimes|mu2lin|multibandread|multibandwrite|munlock|namelengthmax|nargchk|narginchk|nargoutchk|native2unicode|nccreate|ncdisp|nchoosek|ncinfo|ncread|ncreadatt|ncwrite|ncwriteatt|ncwriteschema|ndgrid|ndims|ne|NET(?:.(?:addAssembly|Assembly|convertArray|createArray|createGeneric|disableAutoRelease|enableAutoRelease|GenericClass|invokeGenericMethod|NetException|setStaticProperty))?|netcdf.(?:abort|close|copyAtt|create|defDim|defGrp|defVar|defVarChunking|defVarDeflate|defVarFill|defVarFletcher32|delAtt|endDef|getAtt|getChunkCache|getConstant|getConstantNames|getVar|inq|inqAtt|inqAttID|inqAttName|inqDim|inqDimID|inqDimIDs|inqFormat|inqGrpName|inqGrpNameFull|inqGrpParent|inqGrps|inqLibVers|inqNcid|inqUnlimDims|inqVar|inqVarChunking|inqVarDeflate|inqVarFill|inqVarFletcher32|inqVarID|inqVarIDs|open|putAtt|putVar|reDef|renameAtt|renameDim|renameVar|setChunkCache|setDefaultFormat|setFill|sync)|newplot|nextpow2|nnz|noanimate|nonzeros|norm|normest|not|notebook|now|nthroot|null|num2cell|num2hex|num2str|numel|nzmax|ode(?:113|15i|15s|23|23s|23t|23tb|45)|odeget|odeset|odextend|onCleanup|ones|open|openfig|opengl|openvar|optimget|optimset|or|ordeig|orderfields|ordqz|ordschur|orient|orth|pack|padecoef|pagesetupdlg|pan|pareto|parseSoapResponse|pascal|patch|path|path2rc|pathsep|pathtool|pause|pbaspect|pcg|pchip|pcode|pcolor|pdepe|pdeval|peaks|perl|perms|permute|pie|pink|pinv|planerot|playshow|plot|plot3|plotbrowser|plotedit|plotmatrix|plottools|plotyy|plus|pol2cart|polar|poly|polyarea|polyder|polyeig|polyfit|polyint|polyval|polyvalm|pow2|power|ppval|prefdir|preferences|primes|print|printdlg|printopt|printpreview|prod|profile|profsave|propedit|propertyeditor|psi|publish|PutCharArray|PutFullMatrix|PutWorkspaceData|pwd|qhull|qmr|qr|qrdelete|qrinsert|qrupdate|quad|quad2d|quadgk|quadl|quadv|questdlg|quit|quiver|quiver3|qz|rand|randi|randn|randperm|RandStream(?:.(?:create|getDefaultStream|getGlobalStream|list|setDefaultStream|setGlobalStream))?|rank|rat|rats|rbbox|rcond|rdivide|readasync|real|reallog|realmax|realmin|realpow|realsqrt|record|rectangle|rectint|recycle|reducepatch|reducevolume|refresh|refreshdata|regexp|regexpi|regexprep|regexptranslate|rehash|rem|Remove|RemoveAll|repmat|reset|reshape|residue|restoredefaultpath|rethrow|rgb2hsv|rgb2ind|rgbplot|ribbon|rmappdata|rmdir|rmfield|rmpath|rmpref|rng|roots|rose|rosser|rot90|rotate|rotate3d|round|rref|rsf2csf|run|save|saveas|saveobj|savepath|scatter|scatter3|schur|sec|secd|sech|selectmoveresize|semilogx|semilogy|sendmail|serial|set|setappdata|setdiff|setenv|setfield|setpixelposition|setpref|setstr|setxor|shading|shg|shiftdim|showplottool|shrinkfaces|sign|sin(?:d|h)?|size|slice|smooth3|snapnow|sort|sortrows|sound|soundsc|spalloc|spaugment|spconvert|spdiags|specular|speye|spfun|sph2cart|sphere|spinmap|spline|spones|spparms|sprand|sprandn|sprandsym|sprank|spring|sprintf|spy|sqrt|sqrtm|squeeze|ss2tf|sscanf|stairs|startup|std|stem|stem3|stopasync|str2double|str2func|str2mat|str2num|strcat|strcmp|strcmpi|stream2|stream3|streamline|streamparticles|streamribbon|streamslice|streamtube|strfind|strjust|strmatch|strncmp|strncmpi|strread|strrep|strtok|strtrim|struct2cell|structfun|strvcat|sub2ind|subplot|subsasgn|subsindex|subspace|subsref|substruct|subvolume|sum|summer|superclasses|superiorto|support|surf|surf2patch|surface|surfc|surfl|surfnorm|svd|svds|swapbytes|symamd|symbfact|symmlq|symrcm|symvar|system|tan(?:d|h)?|tar|tempdir|tempname|tetramesh|texlabel|text|textread|textscan|textwrap|tfqmr|throw|tic|Tiff(?:.(?:getTagNames|getVersion))?|timer|timerfind|timerfindall|times|timeseries|title|toc|todatenum|toeplitz|toolboxdir|trace|transpose|trapz|treelayout|treeplot|tril|trimesh|triplequad|triplot|TriRep|TriScatteredInterp|trisurf|triu|tscollection|tsearch|tsearchn|tstool|type|typecast|uibuttongroup|uicontextmenu|uicontrol|uigetdir|uigetfile|uigetpref|uiimport|uimenu|uiopen|uipanel|uipushtool|uiputfile|uiresume|uisave|uisetcolor|uisetfont|uisetpref|uistack|uitable|uitoggletool|uitoolbar|uiwait|uminus|undocheckout|unicode2native|union|unique|unix|unloadlibrary|unmesh|unmkpp|untar|unwrap|unzip|uplus|upper|urlread|urlwrite|usejava|userpath|validateattributes|validatestring|vander|var|vectorize|ver|verctrl|verLessThan|version|vertcat|VideoReader(?:.isPlatformSupported)?|VideoWriter(?:.getProfiles)?|view|viewmtx|visdiff|volumebounds|voronoi|voronoin|wait|waitbar|waitfor|waitforbuttonpress|warndlg|warning|waterfall|wavfinfo|wavplay|wavread|wavrecord|wavwrite|web|weekday|what|whatsnew|which|whitebg|who|whos|wilkinson|winopen|winqueryreg|winter|wk1finfo|wk1read|wk1write|workspace|xlabel|xlim|xlsfinfo|xlsread|xlswrite|xmlread|xmlwrite|xor|xslt|ylabel|ylim|zeros|zip|zlabel|zlim|zoom)\b/,null],
-null],["fun_tbx",/^\b(?:adapthisteq|analyze75info|analyze75read|applycform|applylut|axes2pix|bestblk|blockproc|bwarea|bwareaopen|bwboundaries|bwconncomp|bwconvhull|bwdist|bwdistgeodesic|bweuler|bwhitmiss|bwlabel|bwlabeln|bwmorph|bwpack|bwperim|bwselect|bwtraceboundary|bwulterode|bwunpack|checkerboard|col2im|colfilt|conndef|convmtx2|corner|cornermetric|corr2|cp2tform|cpcorr|cpselect|cpstruct2pairs|dct2|dctmtx|deconvblind|deconvlucy|deconvreg|deconvwnr|decorrstretch|demosaic|dicom(?:anon|dict|info|lookup|read|uid|write)|edge|edgetaper|entropy|entropyfilt|fan2para|fanbeam|findbounds|fliptform|freqz2|fsamp2|fspecial|ftrans2|fwind1|fwind2|getheight|getimage|getimagemodel|getline|getneighbors|getnhood|getpts|getrangefromclass|getrect|getsequence|gray2ind|graycomatrix|graycoprops|graydist|grayslice|graythresh|hdrread|hdrwrite|histeq|hough|houghlines|houghpeaks|iccfind|iccread|iccroot|iccwrite|idct2|ifanbeam|im2bw|im2col|im2double|im2int16|im2java2d|im2single|im2uint16|im2uint8|imabsdiff|imadd|imadjust|ImageAdapter|imageinfo|imagemodel|imapplymatrix|imattributes|imbothat|imclearborder|imclose|imcolormaptool|imcomplement|imcontour|imcontrast|imcrop|imdilate|imdisplayrange|imdistline|imdivide|imellipse|imerode|imextendedmax|imextendedmin|imfill|imfilter|imfindcircles|imfreehand|imfuse|imgca|imgcf|imgetfile|imhandles|imhist|imhmax|imhmin|imimposemin|imlincomb|imline|immagbox|immovie|immultiply|imnoise|imopen|imoverview|imoverviewpanel|impixel|impixelinfo|impixelinfoval|impixelregion|impixelregionpanel|implay|impoint|impoly|impositionrect|improfile|imputfile|impyramid|imreconstruct|imrect|imregconfig|imregionalmax|imregionalmin|imregister|imresize|imroi|imrotate|imsave|imscrollpanel|imshow|imshowpair|imsubtract|imtool|imtophat|imtransform|imview|ind2gray|ind2rgb|interfileinfo|interfileread|intlut|ippl|iptaddcallback|iptcheckconn|iptcheckhandle|iptcheckinput|iptcheckmap|iptchecknargin|iptcheckstrs|iptdemos|iptgetapi|iptGetPointerBehavior|iptgetpref|ipticondir|iptnum2ordinal|iptPointerManager|iptprefs|iptremovecallback|iptSetPointerBehavior|iptsetpref|iptwindowalign|iradon|isbw|isflat|isgray|isicc|isind|isnitf|isrgb|isrset|lab2double|lab2uint16|lab2uint8|label2rgb|labelmatrix|makecform|makeConstrainToRectFcn|makehdr|makelut|makeresampler|maketform|mat2gray|mean2|medfilt2|montage|nitfinfo|nitfread|nlfilter|normxcorr2|ntsc2rgb|openrset|ordfilt2|otf2psf|padarray|para2fan|phantom|poly2mask|psf2otf|qtdecomp|qtgetblk|qtsetblk|radon|rangefilt|reflect|regionprops|registration.metric.(?:MattesMutualInformation|MeanSquares)|registration.optimizer.(?:OnePlusOneEvolutionary|RegularStepGradientDescent)|rgb2gray|rgb2ntsc|rgb2ycbcr|roicolor|roifill|roifilt2|roipoly|rsetwrite|std2|stdfilt|strel|stretchlim|subimage|tformarray|tformfwd|tforminv|tonemap|translate|truesize|uintlut|viscircles|warp|watershed|whitepoint|wiener2|xyz2double|xyz2uint16|ycbcr2rgb)\b/,
-null],["fun_tbx",/^\b(?:bintprog|color|fgoalattain|fminbnd|fmincon|fminimax|fminsearch|fminunc|fseminf|fsolve|fzero|fzmult|gangstr|ktrlink|linprog|lsqcurvefit|lsqlin|lsqnonlin|lsqnonneg|optimget|optimset|optimtool|quadprog)\b/,null],["ident",/^[a-zA-Z][a-zA-Z0-9_]*(?:\.[a-zA-Z][a-zA-Z0-9_]*)*/,null]]),["matlab-identifiers"]);a.registerLangHandler(a.createSimpleLexer([],d),["matlab-operators"]);a.registerLangHandler(a.createSimpleLexer(b,c),["matlab"]);
diff --git a/apidoc/vendor/prettify/lang-ml.js b/apidoc/vendor/prettify/lang-ml.js
deleted file mode 100755
index c012a3f..0000000
--- a/apidoc/vendor/prettify/lang-ml.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["lit",/^[+\-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^(?:[a-z_][\w']*[!?#]?|``[^\r\n\t`]*(?:``|$))/i],["pun",/^[^\t\n\r \xA0\"\'\w]+/]]),["fs","ml"]);
diff --git a/apidoc/vendor/prettify/lang-mumps.js b/apidoc/vendor/prettify/lang-mumps.js
deleted file mode 100755
index 6d51258..0000000
--- a/apidoc/vendor/prettify/lang-mumps.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2011 Kitware Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-null],["kwd",/^(?:[^\$]B|BREAK|C|CLOSE|D|DO|E|ELSE|F|FOR|G|GOTO|H|HALT|H|HANG|I|IF|J|JOB|K|KILL|L|LOCK|M|MERGE|N|NEW|O|OPEN|Q|QUIT|R|READ|S|SET|TC|TCOMMIT|TRE|TRESTART|TRO|TROLLBACK|TS|TSTART|U|USE|V|VIEW|W|WRITE|X|XECUTE)\b/i,null],["lit",/^[+-]?(?:(?:\.\d+|\d+(?:\.\d*)?)(?:E[+\-]?\d+)?)/i],["pln",/^[a-z][a-zA-Z0-9]*/i],["pun",/^[^\w\t\n\r\xA0\"\$;%\^]|_/]]),["mumps"]);
diff --git a/apidoc/vendor/prettify/lang-n.js b/apidoc/vendor/prettify/lang-n.js
deleted file mode 100755
index 9b3910c..0000000
--- a/apidoc/vendor/prettify/lang-n.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2011 Zimin A.V.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*\'|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["str",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null],["str",/^<#(?:[^#>])*(?:#>|$)/,null],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null],["com",/^\/\/[^\r\n]*/,
-null],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,null],["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^@[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],["pln",/^'?[A-Za-z_$][a-z_$@0-9]*/i,null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pun",/^.[^\s\w\.$@\'\"\`\/\#]*/,null]]),["n","nemerle"]);
diff --git a/apidoc/vendor/prettify/lang-nemerle.js b/apidoc/vendor/prettify/lang-nemerle.js
deleted file mode 100755
index 9b3910c..0000000
--- a/apidoc/vendor/prettify/lang-nemerle.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2011 Zimin A.V.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["str",/^(?:\'(?:[^\\\'\r\n]|\\.)*\'|\"(?:[^\\\"\r\n]|\\.)*(?:\"|$))/,null,'"'],["com",/^#(?:(?:define|elif|else|endif|error|ifdef|include|ifndef|line|pragma|undef|warning)\b|[^\r\n]*)/,null,"#"],["pln",/^\s+/,null," \r\n\t\u00a0"]],[["str",/^@\"(?:[^\"]|\"\")*(?:\"|$)/,null],["str",/^<#(?:[^#>])*(?:#>|$)/,null],["str",/^<(?:(?:(?:\.\.\/)*|\/?)(?:[\w-]+(?:\/[\w-]+)+)?[\w-]+\.h|[a-z]\w*)>/,null],["com",/^\/\/[^\r\n]*/,
-null],["typ",/^(?:array|bool|byte|char|decimal|double|float|int|list|long|object|sbyte|short|string|ulong|uint|ufloat|ulong|ushort|void)\b/,null],["lit",/^@[a-z_$][a-z_$@0-9]*/i,null],["typ",/^@[A-Z]+[a-z][A-Za-z_$@0-9]*/,null],["pln",/^'?[A-Za-z_$][a-z_$@0-9]*/i,null],["lit",/^(?:0x[a-f0-9]+|(?:\d(?:_\d+)*\d*(?:\.\d*)?|\.\d\+)(?:e[+\-]?\d+)?)[a-z]*/i,null,"0123456789"],["pun",/^.[^\s\w\.$@\'\"\`\/\#]*/,null]]),["n","nemerle"]);
diff --git a/apidoc/vendor/prettify/lang-pascal.js b/apidoc/vendor/prettify/lang-pascal.js
deleted file mode 100755
index c76a11c..0000000
--- a/apidoc/vendor/prettify/lang-pascal.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2013 Peter Kofler
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-null],["lit",/^(?:true|false|self|nil)/i,null],["pln",/^[a-z][a-z0-9]*/i,null],["lit",/^(?:\$[a-f0-9]+|(?:\d+(?:\.\d*)?|\.\d+)(?:e[+\-]?\d+)?)/i,null,"0123456789"],["pun",/^.[^\s\w\.$@\'\/]*/,null]]),["pascal"]);
diff --git a/apidoc/vendor/prettify/lang-proto.js b/apidoc/vendor/prettify/lang-proto.js
deleted file mode 100755
index 3215ff6..0000000
--- a/apidoc/vendor/prettify/lang-proto.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
- Copyright (C) 2006 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.sourceDecorator({keywords:"bytes,default,double,enum,extend,extensions,false,group,import,max,message,option,optional,package,repeated,required,returns,rpc,service,syntax,to,true",types:/^(bool|(double|s?fixed|[su]?int)(32|64)|float|string)\b/,cStyleComments:!0}),["proto"]);
diff --git a/apidoc/vendor/prettify/lang-r.js b/apidoc/vendor/prettify/lang-r.js
deleted file mode 100755
index 6ce16e8..0000000
--- a/apidoc/vendor/prettify/lang-r.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2012 Jeffrey B. Arnold
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["pun",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\*|\+|\^|\/|!|%.*?%|=|~|\$|@|:{1,3}|[\[\](){};,?])/],["pln",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\.[a-zA-Z_][0-9a-zA-Z\._]*)(?![A-Za-z0-9_.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
diff --git a/apidoc/vendor/prettify/lang-rd.js b/apidoc/vendor/prettify/lang-rd.js
deleted file mode 100755
index 113141c..0000000
--- a/apidoc/vendor/prettify/lang-rd.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
- Copyright (C) 2012 Jeffrey Arnold
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\r\n]*/,null,"%"]],[["lit",/^\\(?:cr|l?dots|R|tab)\b/],["kwd",/^\\[a-zA-Z@]+/],["kwd",/^#(?:ifn?def|endif)/],["pln",/^\\[{}]/],["pun",/^[{}()\[\]]+/]]),["Rd","rd"]);
diff --git a/apidoc/vendor/prettify/lang-rkt.js b/apidoc/vendor/prettify/lang-rkt.js
deleted file mode 100755
index 2f18c96..0000000
--- a/apidoc/vendor/prettify/lang-rkt.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
-null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/apidoc/vendor/prettify/lang-rust.js b/apidoc/vendor/prettify/lang-rust.js
deleted file mode 100755
index 4385677..0000000
--- a/apidoc/vendor/prettify/lang-rust.js
+++ /dev/null
@@ -1,20 +0,0 @@
-/*
-
- Copyright (C) 2015 Chris Morgan
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["kwd",/^(?:alignof|become|do|offsetof|priv|pure|sizeof|typeof|unsized|yield|abstract|virtual|final|override|macro)\b/],["typ",/^(?:[iu](8|16|32|64|size)|char|bool|f32|f64|str|Self)\b/],["typ",/^(?:Copy|Send|Sized|Sync|Drop|Fn|FnMut|FnOnce|Box|ToOwned|Clone|PartialEq|PartialOrd|Eq|Ord|AsRef|AsMut|Into|From|Default|Iterator|Extend|IntoIterator|DoubleEndedIterator|ExactSizeIterator|Option|Some|None|Result|Ok|Err|SliceConcatExt|String|ToString|Vec)\b/],["lit",/^(self|true|false|null)\b/],
-["lit",/^\d[0-9_]*(?:[iu](?:size|8|16|32|64))?/],["lit",/^0x[a-fA-F0-9_]+(?:[iu](?:size|8|16|32|64))?/],["lit",/^0o[0-7_]+(?:[iu](?:size|8|16|32|64))?/],["lit",/^0b[01_]+(?:[iu](?:size|8|16|32|64))?/],["lit",/^\d[0-9_]*\.(?![^\s\d.])/],["lit",/^\d[0-9_]*(?:\.\d[0-9_]*)(?:[eE][+-]?[0-9_]+)?(?:f32|f64)?/],["lit",/^\d[0-9_]*(?:\.\d[0-9_]*)?(?:[eE][+-]?[0-9_]+)(?:f32|f64)?/],["lit",/^\d[0-9_]*(?:\.\d[0-9_]*)?(?:[eE][+-]?[0-9_]+)?(?:f32|f64)/],
-["atn",/^[a-z_]\w*!/i],["pln",/^[a-z_]\w*/i],["atv",/^#!?\[[\s\S]*?\]/],["pun",/^[+\-/*=^&|!<>%[\](){}?:.,;]/],["pln",/./]]),["rust"]);
diff --git a/apidoc/vendor/prettify/lang-s.js b/apidoc/vendor/prettify/lang-s.js
deleted file mode 100755
index 6ce16e8..0000000
--- a/apidoc/vendor/prettify/lang-s.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2012 Jeffrey B. Arnold
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["pun",/^(?:<<?-|->>?|-|==|<=|>=|<|>|&&?|!=|\|\|?|\*|\+|\^|\/|!|%.*?%|=|~|\$|@|:{1,3}|[\[\](){};,?])/],["pln",/^(?:[A-Za-z]+[A-Za-z0-9_.]*|\.[a-zA-Z_][0-9a-zA-Z\._]*)(?![A-Za-z0-9_.])/],["str",/^`.+`/]]),["r","s","R","S","Splus"]);
diff --git a/apidoc/vendor/prettify/lang-scala.js b/apidoc/vendor/prettify/lang-scala.js
deleted file mode 100755
index 3347dd6..0000000
--- a/apidoc/vendor/prettify/lang-scala.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2010 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["lit",/^(?:true|false|null|this)\b/],["lit",/^(?:(?:0(?:[0-7]+|X[0-9A-F]+))L?|(?:(?:0|[1-9][0-9]*)(?:(?:\.[0-9]+)?(?:E[+\-]?[0-9]+)?F?|L?))|\\.[0-9]+(?:E[+\-]?[0-9]+)?F?)/i],["typ",/^[$_]*[A-Z][_$A-Z0-9]*[a-z][\w$]*/],["pln",/^[$a-zA-Z_][\w$]*/],["com",/^\/(?:\/.*|\*(?:\/|\**[^*/])*(?:\*+\/?)?)/],["pun",/^(?:\.+|\/)/]]),["scala"]);
diff --git a/apidoc/vendor/prettify/lang-scm.js b/apidoc/vendor/prettify/lang-scm.js
deleted file mode 100755
index 2f18c96..0000000
--- a/apidoc/vendor/prettify/lang-scm.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
-null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/apidoc/vendor/prettify/lang-sql.js b/apidoc/vendor/prettify/lang-sql.js
deleted file mode 100755
index a7d292c..0000000
--- a/apidoc/vendor/prettify/lang-sql.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-null],["lit",/^[+-]?(?:0x[\da-f]+|(?:(?:\.\d+|\d+(?:\.\d*)?)(?:e[+\-]?\d+)?))/i],["pln",/^[a-z_][\w-]*/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0+\-\"\']*/]]),["sql"]);
diff --git a/apidoc/vendor/prettify/lang-ss.js b/apidoc/vendor/prettify/lang-ss.js
deleted file mode 100755
index 2f18c96..0000000
--- a/apidoc/vendor/prettify/lang-ss.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2008 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\(+/,null,"("],["clo",/^\)+/,null,")"],["com",/^;[^\r\n]*/,null,";"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:block|c[ad]+r|catch|con[ds]|def(?:ine|un)|do|eq|eql|equal|equalp|eval-when|flet|format|go|if|labels|lambda|let|load-time-value|locally|macrolet|multiple-value-call|nil|progn|progv|quote|require|return-from|setq|symbol-macrolet|t|tagbody|the|throw|unwind)\b/,
-null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),"cl el lisp lsp scm ss rkt".split(" "));
diff --git a/apidoc/vendor/prettify/lang-swift.js b/apidoc/vendor/prettify/lang-swift.js
deleted file mode 100755
index 5442fa7..0000000
--- a/apidoc/vendor/prettify/lang-swift.js
+++ /dev/null
@@ -1,16 +0,0 @@
-/*
-
- Copyright (C) 2015 Google Inc.
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-null],["com",/^\/\/.*?[\n\r]/,null],["com",/^\/\*[\s\S]*?(?:\*\/|$)/,null],["pun",/^<<=|<=|<<|>>=|>=|>>|===|==|\.\.\.|&&=|\.\.<|!==|!=|&=|~=|~|\(|\)|\[|\]|{|}|@|#|;|\.|,|:|\|\|=|\?\?|\|\||&&|&\*|&\+|&-|&=|\+=|-=|\/=|\*=|\^=|%=|\|=|->|`|==|\+\+|--|\/|\+|!|\*|%|<|>|&|\||\^|\?|=|-|_/,null],["typ",/^\b(?:[@_]?[A-Z]+[a-z][A-Za-z_$@0-9]*|\w+_t\b)/,null]]),["swift"]);
diff --git a/apidoc/vendor/prettify/lang-tcl.js b/apidoc/vendor/prettify/lang-tcl.js
deleted file mode 100755
index 1d75c3f..0000000
--- a/apidoc/vendor/prettify/lang-tcl.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2012 Pyrios
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["opn",/^\{+/,null,"{"],["clo",/^\}+/,null,"}"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["str",/^\"(?:[^\"\\]|\\[\s\S])*(?:\"|$)/,null,'"']],[["kwd",/^(?:after|append|apply|array|break|case|catch|continue|error|eval|exec|exit|expr|for|foreach|if|incr|info|proc|return|set|switch|trace|uplevel|upvar|while)\b/,null],["lit",/^[+\-]?(?:[0#]x[0-9a-f]+|\d+\/\d+|(?:\.\d+|\d+(?:\.\d*)?)(?:[ed][+\-]?\d+)?)/i],
-["lit",/^\'(?:-*(?:\w|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?)?/],["pln",/^-*(?:[a-z_]|\\[\x21-\x7e])(?:[\w-]*|\\[\x21-\x7e])[=!?]?/i],["pun",/^[^\w\t\n\r \xA0()\"\\\';]+/]]),["tcl"]);
diff --git a/apidoc/vendor/prettify/lang-tex.js b/apidoc/vendor/prettify/lang-tex.js
deleted file mode 100755
index efc758c..0000000
--- a/apidoc/vendor/prettify/lang-tex.js
+++ /dev/null
@@ -1,17 +0,0 @@
-/*
-
- Copyright (C) 2011 Martin S.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t\n\r \xA0]+/,null,"\t\n\r \u00a0"],["com",/^%[^\r\n]*/,null,"%"]],[["kwd",/^\\[a-zA-Z@]+/],["kwd",/^\\./],["typ",/^[$&]/],["lit",/[+-]?(?:\.\d+|\d+(?:\.\d*)?)(cm|em|ex|in|pc|pt|bp|mm)/i],["pun",/^[{}()\[\]=]+/]]),["latex","tex"]);
diff --git a/apidoc/vendor/prettify/lang-vb.js b/apidoc/vendor/prettify/lang-vb.js
deleted file mode 100755
index e34086f..0000000
--- a/apidoc/vendor/prettify/lang-vb.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-null],["com",/^REM\b[^\r\n\u2028\u2029]*/i],["lit",/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*(?:\[[%&@!#]+\])?|\[(?:[a-z]|_\w)\w*\])/i],["pun",/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],["pun",/^(?:\[|\])/]]),["vb",
-"vbs"]);
diff --git a/apidoc/vendor/prettify/lang-vbs.js b/apidoc/vendor/prettify/lang-vbs.js
deleted file mode 100755
index e34086f..0000000
--- a/apidoc/vendor/prettify/lang-vbs.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-null],["com",/^REM\b[^\r\n\u2028\u2029]*/i],["lit",/^(?:True\b|False\b|Nothing\b|\d+(?:E[+\-]?\d+[FRD]?|[FRDSIL])?|(?:&H[0-9A-F]+|&O[0-7]+)[SIL]?|\d*\.\d+(?:E[+\-]?\d+)?[FRD]?|#\s+(?:\d+[\-\/]\d+[\-\/]\d+(?:\s+\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)?|\d+:\d+(?::\d+)?(\s*(?:AM|PM))?)\s+#)/i],["pln",/^(?:(?:[a-z]|_\w)\w*(?:\[[%&@!#]+\])?|\[(?:[a-z]|_\w)\w*\])/i],["pun",/^[^\w\t\n\r \"\'\[\]\xA0\u2018\u2019\u201C\u201D\u2028\u2029]+/],["pun",/^(?:\[|\])/]]),["vb",
-"vbs"]);
diff --git a/apidoc/vendor/prettify/lang-vhd.js b/apidoc/vendor/prettify/lang-vhd.js
deleted file mode 100755
index f67a4a3..0000000
--- a/apidoc/vendor/prettify/lang-vhd.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2010 [email-masked]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]]),["vhdl","vhd"]);
diff --git a/apidoc/vendor/prettify/lang-vhdl.js b/apidoc/vendor/prettify/lang-vhdl.js
deleted file mode 100755
index f67a4a3..0000000
--- a/apidoc/vendor/prettify/lang-vhdl.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2010 [email-masked]
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["pln",/^(?:[a-z]\w*|\\[^\\]*\\)/i],["pun",/^[^\w\t\n\r \xA0\"\'][^\w\t\n\r \xA0\-\"\']*/]]),["vhdl","vhd"]);
diff --git a/apidoc/vendor/prettify/lang-wiki.js b/apidoc/vendor/prettify/lang-wiki.js
deleted file mode 100755
index d03fccd..0000000
--- a/apidoc/vendor/prettify/lang-wiki.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2009 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pln",/^[\t \xA0a-gi-z0-9]+/,null,"\t \u00a0abcdefgijklmnopqrstuvwxyz0123456789"],["pun",/^[=*~\^\[\]]+/,null,"=*~^[]"]],[["lang-wiki.meta",/(?:^^|\r\n?|\n)(#[a-z]+)\b/],["lit",/^(?:[A-Z][a-z][a-z0-9]+[A-Z][a-z][a-zA-Z0-9]+)\b/],["lang-",/^\{\{\{([\s\S]+?)\}\}\}/],["lang-",/^`([^\r\n`]+)`/],["str",/^https?:\/\/[^\/?#\s]*(?:\/[^?#\s]*)?(?:\?[^#\s]*)?(?:#\S*)?/i],["pln",/^(?:\r\n|[\s\S])[^#=*~^A-Zh\{`\[\r\n]*/]]),["wiki"]);
-PR.registerLangHandler(PR.createSimpleLexer([["kwd",/^#[a-z]+/i,null,"#"]],[]),["wiki.meta"]);
diff --git a/apidoc/vendor/prettify/lang-xq.js b/apidoc/vendor/prettify/lang-xq.js
deleted file mode 100755
index a6d8537..0000000
--- a/apidoc/vendor/prettify/lang-xq.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2011 Patrick Wied
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["pln",/^[A-Za-z0-9_\-\:]+/],["pln",/^[\t\n\r \xA0]+/]]),["xq","xquery"]);
diff --git a/apidoc/vendor/prettify/lang-xquery.js b/apidoc/vendor/prettify/lang-xquery.js
deleted file mode 100755
index a6d8537..0000000
--- a/apidoc/vendor/prettify/lang-xquery.js
+++ /dev/null
@@ -1,19 +0,0 @@
-/*
-
- Copyright (C) 2011 Patrick Wied
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-["pln",/^[A-Za-z0-9_\-\:]+/],["pln",/^[\t\n\r \xA0]+/]]),["xq","xquery"]);
diff --git a/apidoc/vendor/prettify/lang-yaml.js b/apidoc/vendor/prettify/lang-yaml.js
deleted file mode 100755
index a2b4b07..0000000
--- a/apidoc/vendor/prettify/lang-yaml.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2015 ribrdb @ code.google.com
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:|>?]+/,null,":|>?"],["dec",/^%(?:YAML|TAG)[^#\r\n]+/,null,"%"],["typ",/^[&]\S+/,null,"&"],["typ",/^!\S*/,null,"!"],["str",/^"(?:[^\\"]|\\.)*(?:"|$)/,null,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,null,"'"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^\s+/,null," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\r\n]|$)/],["pun",/^-/],["kwd",/^[\w-]+:[ \r\n]/],["pln",
-/^\w+/]]),["yaml","yml"]);
diff --git a/apidoc/vendor/prettify/lang-yml.js b/apidoc/vendor/prettify/lang-yml.js
deleted file mode 100755
index a2b4b07..0000000
--- a/apidoc/vendor/prettify/lang-yml.js
+++ /dev/null
@@ -1,18 +0,0 @@
-/*
-
- Copyright (C) 2015 ribrdb @ code.google.com
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-    http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-PR.registerLangHandler(PR.createSimpleLexer([["pun",/^[:|>?]+/,null,":|>?"],["dec",/^%(?:YAML|TAG)[^#\r\n]+/,null,"%"],["typ",/^[&]\S+/,null,"&"],["typ",/^!\S*/,null,"!"],["str",/^"(?:[^\\"]|\\.)*(?:"|$)/,null,'"'],["str",/^'(?:[^']|'')*(?:'|$)/,null,"'"],["com",/^#[^\r\n]*/,null,"#"],["pln",/^\s+/,null," \t\r\n"]],[["dec",/^(?:---|\.\.\.)(?:[\r\n]|$)/],["pun",/^-/],["kwd",/^[\w-]+:[ \r\n]/],["pln",
-/^\w+/]]),["yaml","yml"]);
diff --git a/apidoc/vendor/prettify/prettify.css b/apidoc/vendor/prettify/prettify.css
deleted file mode 100755
index d44b3a2..0000000
--- a/apidoc/vendor/prettify/prettify.css
+++ /dev/null
@@ -1 +0,0 @@
\ No newline at end of file
diff --git a/apidoc/vendor/prettify/prettify.js b/apidoc/vendor/prettify/prettify.js
deleted file mode 100755
index 0a2b435..0000000
--- a/apidoc/vendor/prettify/prettify.js
+++ /dev/null
@@ -1,46 +0,0 @@
-!function(){/*
-
- Copyright (C) 2006 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-window.PR_SHOULD_USE_CONTINUATION=!0;
-q=/^(?:pre|code|xmp)$/i,g={};f()}},H=E.define;"function"===typeof H&&H.amd&&H("google-code-prettify",[],function(){return Y})})();}()
diff --git a/apidoc/vendor/prettify/run_prettify.js b/apidoc/vendor/prettify/run_prettify.js
deleted file mode 100755
index a9691da..0000000
--- a/apidoc/vendor/prettify/run_prettify.js
+++ /dev/null
@@ -1,63 +0,0 @@
-!function(){/*
-
- Copyright (C) 2013 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-
- Copyright (C) 2006 Google Inc.
-
- Licensed under the Apache License, Version 2.0 (the "License");
- you may not use this file except in compliance with the License.
- You may obtain a copy of the License at
-
-      http://www.apache.org/licenses/LICENSE-2.0
-
- Unless required by applicable law or agreed to in writing, software
- distributed under the License is distributed on an "AS IS" BASIS,
- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
- See the License for the specific language governing permissions and
- limitations under the License.
-*/
-S=R.define;"function"===typeof S&&S.amd&&S("google-code-prettify",[],function(){return V})})();return g}();T||t.setTimeout(U,0)})();}()
diff --git a/apidoc/vendor/prism.css b/apidoc/vendor/prism.css
new file mode 100644
index 0000000..ad0d350
--- /dev/null
+++ b/apidoc/vendor/prism.css
@@ -0,0 +1,125 @@
+/* PrismJS 1.20.0
+https://prismjs.com/download.html#themes=prism-tomorrow&languages=clike+javascript+bash+c+csharp+cpp+clojure+elixir+erlang+go+http+json+jsonp+json5+lua+perl+python+rust */
+/**
+ * prism.js tomorrow night eighties for JavaScript, CoffeeScript, CSS and HTML
+ * Based on https://github.com/chriskempson/tomorrow-theme
+ * @author Rose Pritchard
+ */
+
+code[class*="language-"],
+pre[class*="language-"] {
+	color: #ccc;
+	background: none;
+	font-family: Consolas, Monaco, 'Andale Mono', 'Ubuntu Mono', monospace;
+	font-size: 1em;
+	text-align: left;
+	white-space: pre;
+	word-spacing: normal;
+	word-break: normal;
+	word-wrap: normal;
+	line-height: 1.5;
+
+	-moz-tab-size: 4;
+	-o-tab-size: 4;
+	tab-size: 4;
+
+	-webkit-hyphens: none;
+	-moz-hyphens: none;
+	-ms-hyphens: none;
+	hyphens: none;
+
+}
+
+/* Code blocks */
+pre[class*="language-"] {
+	padding: 1em;
+	margin: .5em 0;
+	overflow: auto;
+}
+
+:not(pre) > code[class*="language-"],
+pre[class*="language-"] {
+	background: #2d2d2d;
+}
+
+/* Inline code */
+:not(pre) > code[class*="language-"] {
+	padding: .1em;
+	border-radius: .3em;
+	white-space: normal;
+}
+
+.token.comment,
+.token.block-comment,
+.token.prolog,
+.token.doctype,
+.token.cdata {
+	color: #999;
+}
+
+.token.punctuation {
+	color: #ccc;
+}
+
+.token.tag,
+.token.attr-name,
+.token.namespace,
+.token.deleted {
+	color: #e2777a;
+}
+
+.token.function-name {
+	color: #6196cc;
+}
+
+.token.boolean,
+.token.number,
+.token.function {
+	color: #f08d49;
+}
+
+.token.property,
+.token.class-name,
+.token.constant,
+.token.symbol {
+	color: #f8c555;
+}
+
+.token.selector,
+.token.important,
+.token.atrule,
+.token.keyword,
+.token.builtin {
+	color: #cc99cd;
+}
+
+.token.string,
+.token.char,
+.token.attr-value,
+.token.regex,
+.token.variable {
+	color: #7ec699;
+}
+
+.token.operator,
+.token.entity,
+.token.url {
+	color: #67cdcc;
+}
+
+.token.important,
+.token.bold {
+	font-weight: bold;
+}
+.token.italic {
+	font-style: italic;
+}
+
+.token.entity {
+	cursor: help;
+}
+
+.token.inserted {
+	color: green;
+}
+
diff --git a/apidoc/vendor/prism.js b/apidoc/vendor/prism.js
new file mode 100644
index 0000000..371cd8a
--- /dev/null
+++ b/apidoc/vendor/prism.js
@@ -0,0 +1,21 @@
+/* PrismJS 1.20.0
+https://prismjs.com/download.html#themes=prism-tomorrow&languages=clike+javascript+bash+c+csharp+cpp+clojure+elixir+erlang+go+http+json+jsonp+json5+lua+perl+python+rust */
+Prism.languages.json={property:{pattern:/"(?:\\.|[^\\"\r\n])*"(?=\s*:)/,greedy:!0},string:{pattern:/"(?:\\.|[^\\"\r\n])*"(?!\s*:)/,greedy:!0},comment:/\/\/.*|\/\*[\s\S]*?(?:\*\/|$)/,number:/-?\d+\.?\d*(?:e[+-]?\d+)?/i,punctuation:/[{}[\],]/,operator:/:/,boolean:/\b(?:true|false)\b/,null:{pattern:/\bnull\b/,alias:"keyword"}},Prism.languages.webmanifest=Prism.languages.json;
+Prism.languages.jsonp=Prism.languages.extend("json",{punctuation:/[{}[\]();,.]/}),Prism.languages.insertBefore("jsonp","punctuation",{function:/[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*\()/});
+!function(n){var e=/("|')(?:\\(?:\r\n?|\n|.)|(?!\1)[^\\\r\n])*\1/;n.languages.json5=n.languages.extend("json",{property:[{pattern:RegExp(e.source+"(?=\\s*:)"),greedy:!0},{pattern:/[_$a-zA-Z\xA0-\uFFFF][$\w\xA0-\uFFFF]*(?=\s*:)/,alias:"unquoted"}],string:{pattern:e,greedy:!0},number:/[+-]?(?:NaN|Infinity|0x[a-fA-F\d]+|(?:\d+\.?\d*|\.\d+)(?:[eE][+-]?\d+)?)/})}(Prism);
diff --git a/apidoc/vendor/require.min.js b/apidoc/vendor/require.min.js
old mode 100755
new mode 100644
diff --git a/apidoc/vendor/semver.min.js b/apidoc/vendor/semver.min.js
old mode 100755
new mode 100644
diff --git a/apidoc/vendor/webfontloader.js b/apidoc/vendor/webfontloader.js
old mode 100755
new mode 100644
diff --git a/package.json b/package.json
index 2b9e89e..2a76fec 100644
--- a/package.json
+++ b/package.json
@@ -1,6 +1,6 @@
 {
   "name": "motion",
-  "version": "2.5.0",
+  "version": "2.5.3",
   "description": "xCALLY Motion is the new Realtime asynchronous solution for your multichannel contact center over Asterisk.",
   "main": "server/app.js",
   "engines": {
@@ -22,7 +22,10 @@
     "Donatella Soldi <[email-masked]>",
     "Afnan Imtiaz <[email-masked]>",
     "Cristian Di Sclafani <[email-masked]>",
-    "Marco Giraldi <[email-masked]>"
+    "Marco Giraldi <[email-masked]>",
+    "Giulia Trombin <[email-masked]>",
+    "Cristopher Fasolin <[email-masked]>",
+    "Marco Messina <[email-masked]>"
   ],
   "private": true,
   "license": "EULA",
@@ -32,120 +35,120 @@
   },
   "dependencies": {
     "apiai-promise": "github:gcareri/apiai-promise",
-    "archiver": "^2.1.1",
-    "asterisk-manager": "^0.1.15",
-    "aws-sdk": "^2.133.0",
-    "bimedia-machine-uuid": "^1.0.0",
-    "bluebird": "^3.4.6",
-    "body-parser": "^1.15.2",
-    "compare-versions": "^3.5.1",
-    "composable-middleware": "^0.3.0",
-    "connect-timeout": "^1.9.0",
-    "cookie-parser": "^1.4.3",
-    "cors": "^2.8.4",
+    "archiver": "2.1.1",
+    "asterisk-manager": "0.1.16",
+    "aws-sdk": "2.610.0",
+    "bimedia-machine-uuid": "1.0.1",
+    "bluebird": "3.7.2",
+    "body-parser": "1.19.0",
+    "compare-versions": "3.6.0",
+    "composable-middleware": "0.3.0",
+    "connect-timeout": "1.9.0",
+    "cookie-parser": "1.4.5",
+    "cors": "2.8.5",
     "crypto-js": "3.1.9-1",
-    "cron-job-manager": "^1.0.7",
-    "desk.js": "^0.1.3",
-    "ejs": "^2.5.2",
-    "eml-format": "^0.5.0",
-    "entities": "^1.1.1",
-    "errorhandler": "^1.4.3",
-    "express": "^4.14.0",
-    "express-jwt": "^5.1.0",
-    "express-winston": "^2.5.1",
-    "extract-zip": "^1.6.7",
-    "fast-json-patch": "^1.1.0",
+    "cron-job-manager": "1.0.7",
+    "desk.js": "0.1.4",
+    "ejs": "2.7.4",
+    "eml-format": "0.5.0",
+    "entities": "1.1.2",
+    "errorhandler": "1.5.1",
+    "express": "4.17.1",
+    "express-jwt": "5.3.3",
+    "express-winston": "2.6.0",
+    "extract-zip": "1.7.0",
+    "fast-json-patch": "1.2.2",
     "google-tts-api": "github:xmdevelop/google-tts",
-    "html-pdf": "^2.2.0",
-    "html-to-text": "^4.0.0",
+    "html-pdf": "2.2.0",
+    "html-to-text": "4.0.0",
     "iconv": "2.3.5",
     "imap": "0.8.19",
-    "ioredis": "^4.10.0",
-    "ipaddr.js": "^1.5.4",
-    "jayson": "^2.0.2",
-    "jsforce": "^1.7.1",
+    "ioredis": "4.17.3",
+    "ipaddr.js": "1.9.1",
+    "jayson": "2.1.2",
+    "jsforce": "1.9.3",
     "json2xls": "github:xmdevelop/json2xls",
-    "jsonwebtoken": "^7.1.9",
-    "jstz": "^1.0.9",
-    "kue": "^0.11.5",
-    "lodash": "^4.15.0",
-    "lusca": "^1.4.1",
+    "jsonwebtoken": "7.4.3",
+    "jstz": "1.0.11",
+    "kue": "0.11.6",
+    "lodash": "4.17.20",
+    "lusca": "1.6.1",
     "mailparser": "2.7.5",
-    "md5": "^2.2.1",
-    "method-override": "^2.3.6",
-    "moment": "^2.15.1",
-    "morgan": "^1.7.0",
-    "multer": "^1.2.0",
+    "md5": "2.3.0",
+    "method-override": "2.3.10",
+    "moment": "2.27.0",
+    "morgan": "1.10.0",
+    "multer": "1.4.2",
     "mustache": "4.0.1",
-    "mysql": "^2.11.1",
-    "node-tnef": "^1.3.0",
-    "nodemailer": "^4.0.1",
-    "nodemailer-plugin-inline-base64": "^2.1.1",
+    "mysql": "2.18.1",
+    "node-tnef": "1.3.3",
+    "nodemailer": "4.7.0",
+    "nodemailer-plugin-inline-base64": "2.1.1",
     "odbc": "github:mckay-software/node-odbc",
-    "papaparse": "^4.3.7",
-    "passport": "^0.3.2",
+    "papaparse": "4.6.3",
+    "passport": "0.3.2",
     "passport-google-oauth20": "2.0.0",
-    "passport-local": "^1.0.0",
-    "pdfmake": "^0.1.18",
-    "pkginfo": "^0.4.0",
-    "pm2": "^2.2.3",
-    "randomstring": "^1.1.5",
-    "request-promise": "^4.1.1",
-    "rimraf": "^2.6.2",
-    "rr": "^0.1.0",
+    "passport-local": "1.0.0",
+    "pdfmake": "0.1.68",
+    "pkginfo": "0.4.1",
+    "pm2": "2.10.4",
+    "randomstring": "1.1.5",
+    "request-promise": "4.2.6",
+    "rimraf": "2.7.1",
+    "rr": "0.1.0",
     "seq-queue": "0.0.5",
-    "sequelize": "^3.24.3",
-    "serve-favicon": "^2.3.0",
-    "simple-git": "^1.73.0",
+    "sequelize": "3.35.1",
+    "serve-favicon": "2.5.0",
+    "simple-git": "1.132.0",
     "socket.io": "2.2.0",
     "socket.io-emitter": "3.1.1",
     "socket.io-redis": "5.2.0",
     "socketio-jwt": "4.5.0",
     "sox": "github:gcareri/node-sox",
-    "squel": "^5.5.0",
-    "sticky-session": "^1.1.2",
-    "syncho": "^0.2.5",
-    "systeminformation": "^3.13.0",
-    "tiff2pdf": "^1.0.2",
-    "to-csv": "^0.1.1",
-    "twilio": "^3.9.0",
-    "umzug": "^2.0.1",
-    "user-agent-parser": "^0.6.0",
-    "validate": "^3.0.1",
-    "winston": "^2.2.0",
+    "squel": "5.13.0",
+    "sticky-session": "1.1.2",
+    "syncho": "0.2.5",
+    "systeminformation": "3.54.0",
+    "tiff2pdf": "1.0.2",
+    "to-csv": "0.1.1",
+    "twilio": "3.48.2",
+    "umzug": "2.3.0",
+    "user-agent-parser": "0.6.0",
+    "uuid": "3.3.2",
+    "validate": "3.1.0",
+    "winston": "2.4.5",
     "ws": "4.1.0",
-    "xml2json": "^0.11.0",
-    "zip-dir": "^1.0.2"
+    "xml2json": "0.11.2",
+    "zip-dir": "1.0.2"
   },
   "devDependencies": {
-    "chai": "^3.5.0",
-    "chai-http": "^3.0.0",
+    "apidoc": "0.24.0",
+    "chai": "3.5.0",
+    "chai-http": "3.0.0",
     "grunt": "1.0.4",
-    "grunt-angular-templates": "^1.1.0",
-    "grunt-apidoc": "^0.11.0",
-    "grunt-autoprefixer": "^3.0.4",
-    "grunt-build-control": "^0.7.1",
-    "grunt-contrib-clean": "^1.1.0",
-    "grunt-contrib-concat": "^1.0.1",
-    "grunt-contrib-copy": "^1.0.0",
-    "grunt-contrib-cssmin": "^2.2.0",
-    "grunt-contrib-jshint": "^1.0.0",
-    "grunt-contrib-obfuscator": "^4.0.0",
-    "grunt-contrib-uglify": "^3.0.1",
-    "grunt-contrib-watch": "^1.0.0",
-    "grunt-express-server": "^0.5.3",
-    "grunt-filerev": "^2.3.1",
-    "grunt-injector": "^1.1.0",
-    "grunt-jsbeautifier": "^0.2.13",
-    "grunt-jsonlint": "^1.1.0",
-    "grunt-ng-annotate": "^3.0.0",
-    "grunt-nodemailer": "^1.1.0",
-    "grunt-sass": "^1.2.1",
-    "grunt-usemin": "^3.1.1",
-    "grunt-version": "^1.1.1",
-    "js-obfuscator": "0.1.2",
-    "load-grunt-config": "^0.19.2",
-    "mocha": "^3.1.0",
-    "time-grunt": "^1.4.0"
+    "grunt-angular-templates": "1.2.0",
+    "grunt-apidoc": "0.11.0",
+    "grunt-autoprefixer": "3.0.4",
+    "grunt-build-control": "0.7.1",
+    "grunt-contrib-clean": "1.1.0",
+    "grunt-contrib-concat": "1.0.1",
+    "grunt-contrib-copy": "1.0.0",
+    "grunt-contrib-cssmin": "2.2.1",
+    "grunt-contrib-jshint": "1.1.0",
+    "grunt-contrib-obfuscator": "4.0.0",
+    "grunt-contrib-watch": "1.1.0",
+    "grunt-express-server": "0.5.4",
+    "grunt-filerev": "2.3.1",
+    "grunt-injector": "1.1.0",
+    "grunt-jsonlint": "1.1.0",
+    "grunt-ng-annotate": "3.0.0",
+    "grunt-nodemailer": "1.1.0",
+    "grunt-sass": "1.2.1",
+    "grunt-terser": "^1.0.0",
+    "grunt-usemin": "3.1.1",
+    "grunt-version": "1.3.2",
+    "load-grunt-config": "0.19.2",
+    "mocha": "3.5.3",
+    "time-grunt": "1.4.0"
   }
-}
\ No newline at end of file
+}
diff --git a/public/app/errors/404/i18n/ru.json b/public/app/errors/404/i18n/ru.json
index eb345c7..f31d84c 100644
--- a/public/app/errors/404/i18n/ru.json
+++ b/public/app/errors/404/i18n/ru.json
@@ -1,8 +1,8 @@
 {
 	"ERROR404": {
 		"CODE": "404",
-		"MESSAGE": "Извините, мы не смогли найти страницу, которую Вы ищете",
-		"SEARCH": "Выполнить поиск",
-		"GO_BACK": "Вернуться на главную страницу"
+		"MESSAGE": "К сожалению, нам не удалось найти страницу вы ищете",
+		"SEARCH": "Для поиска ничего",
+		"GO_BACK": "Вернуться к приборной панели"
 	}
 }
\ No newline at end of file
diff --git a/public/app/errors/500/i18n/ru.json b/public/app/errors/500/i18n/ru.json
index 76de852..8e7169c 100644
--- a/public/app/errors/500/i18n/ru.json
+++ b/public/app/errors/500/i18n/ru.json
@@ -1,11 +1,11 @@
 {
 	"ERROR500": {
 		"CODE": "500",
-		"MESSAGE": "Вот так так ‒ Вы сломали интернет!",
-		"SUBMESSAGE": "Шутка. Похоже, у нас внутренняя проблема. Через несколько минут попробуйте еще раз.",
-		"REPORT": "Сообщить о проблеме",
-		"JIRA_MESSAGE": "Ваш запрос получен и будет обработан в ближайшее время.",
-		"JIRA_SUBMESSAGE": "Приносим извинения за доставленные неудобства. Если у Вас возникнут какие-либо вопросы или проблемы, пожалуйста, обращайтесь к нам.",
-		"GO_BACK": "Вернуться на главную страницу"
+		"MESSAGE": "А также вы ворвались в интернет!",
+		"SUBMESSAGE": "Просто шучу, выглядит мы является внутренним вопросом, повторите попытку в пару минут",
+		"REPORT": "Доклад этой проблемы",
+		"JIRA_MESSAGE": "Ваш запрос получен и будет обработан в ближайшее время.",
+		"JIRA_SUBMESSAGE": "Приносим извинения за причиненные неудобства. Если у Вас возникнут любые вопросы или проблемы, пожалуйста, не обращайтесь к нам.",
+		"GO_BACK": "Вернуться к приборной панели"
 	}
 }
\ No newline at end of file
diff --git a/public/app/footer/i18n/ru.json b/public/app/footer/i18n/ru.json
index e07d52b..2e09175 100644
--- a/public/app/footer/i18n/ru.json
+++ b/public/app/footer/i18n/ru.json
@@ -1,6 +1,6 @@
 {
 	"FOOTER": {
 		"ERRORS": {},
-		"COOKIE_LAW": "Мы применяем файлы cookie, чтобы обеспечить Вам лучший опыт пользования нашим сайтом. Ознакомьтесь с нашей <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\">политикой использования файлов cookie</a>."
+		"COOKIE_LAW": "Мы используем файлы cookie, чтобы дать вам лучший опыт. Ознакомьтесь с нашей <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/Cookie+Policy\" class=\"blue-fg\"> политикой cookie </a>."
 	}
 }
\ No newline at end of file
diff --git a/public/app/forgot/i18n/ru.json b/public/app/forgot/i18n/ru.json
index ca2fab2..3987802 100644
--- a/public/app/forgot/i18n/ru.json
+++ b/public/app/forgot/i18n/ru.json
@@ -1,15 +1,15 @@
 {
 	"FORGOTPASSWORD": {
-		"TITLE": "Восстановление пароля",
-		"EMAIL_ADRESS": "Электронная почта",
-		"SEND_RESET_LINK": "ПОЛУЧИТЬ ССЫЛКУ ДЛЯ СБРОСА ПАРОЛЯ",
-		"GO_BACK": "Вернуться на страницу ввода логина и пароля",
-		"LINK_SENT": "Ссылка отправлена",
-		"LINNK_SENT_MESSAGE": "На Ваш электронная почта отправлено письмо со ссылкой для сброса пароля!",
-		"PASSWORD_RESET_ERROR": "Ошибка при сбросе пароля",
+		"TITLE": "Восстановить пароль",
+		"EMAIL_ADRESS": "Адрес электронной почты",
+		"SEND_RESET_LINK": "Сброс ОТПРАВИТЬ ССЫЛКУ",
+		"GO_BACK": "Вернуться Введите логин и пароль,",
+		"LINK_SENT": "Ссылка отправляется",
+		"LINNK_SENT_MESSAGE": "По электронной почте сообщение, содержащее ссылку, чтобы сбросить Ваш пароль был выслан на ваш адрес!",
+		"PASSWORD_RESET_ERROR": "Пароль Сбросить ошибку",
 		"ERRORS": {
-			"EMAIL_REQUIRED": "Обязательное поле",
-			"EMAIL_MUST_VALID": "Неверный формат"
+			"EMAIL_REQUIRED": "Поле \"Адрес эл. почты\" не требуется",
+			"EMAIL_MUST_VALID": "Адрес электронной почты должен быть действительный адрес электронной почты"
 		}
 	}
 }
\ No newline at end of file
diff --git a/public/app/header/i18n/ru.json b/public/app/header/i18n/ru.json
index bf44dfa..1cd1375 100644
--- a/public/app/header/i18n/ru.json
+++ b/public/app/header/i18n/ru.json
@@ -1,6 +1,6 @@
 {
 	"HEADER": {
 		"ERRORS": {},
-		"NEWS": "Посетите нашу <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\">Wiki,</a> чтобы узнать о новых интересных функциях, доступных на XCALLY."
+		"NEWS": "Посетите нашу <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV\" class=\"blue-100-fg\"> Wiki </a>, чтобы открыть новые интересные функции, доступные на XCALLY."
 	}
 }
\ No newline at end of file
diff --git a/public/app/login/i18n/ru.json b/public/app/login/i18n/ru.json
index 321321c..28eece2 100644
--- a/public/app/login/i18n/ru.json
+++ b/public/app/login/i18n/ru.json
@@ -1,15 +1,15 @@
 {
 	"LOGIN": {
-		"TITLE": "Войти в свою учетную запись",
-		"EMAIL": "Электронная почта",
+		"TITLE": "Войдите в свою учетную запись",
+		"EMAIL": "Адрес электронной почты",
 		"PASSWORD": "Пароль",
 		"REMEMBER_ME": "Запомнить меня",
 		"FORGOT_PASSWORD": "Забыли пароль?",
-		"LOG_IN": "ВОЙТИ",
-		"OR": "ИЛИ",
-		"WITH_GOOGLE": "Войти с помощью Google",
-		"WITH_FACEBOOK": "Войти с помощью Facebook",
-		"DONT_HAVE_ACCOUNT": "Еще нет учетной записи?",
+		"LOG_IN": "Вход в систему",
+		"OR": "Или",
+		"WITH_GOOGLE": "Войдите в систему с помощью Google",
+		"WITH_FACEBOOK": "Войдите в систему с помощью Facebook",
+		"DONT_HAVE_ACCOUNT": "У вас нет учетной записи?",
 		"CREATE_ACCOUNT": "Создать учетную запись",
 		"ERRORS": {
 			"EMAIL_REQUIRED": "Обязательное поле",
@@ -18,7 +18,7 @@
 			"USERNAME_REQUIRED": "Обязательное поле"
 		},
 		"USERNAME": "Имя пользователя",
-		"CANCEL": "Отмена",
+		"CANCEL": "отменить",
 		"SELECT": "Выбрать",
 		"TELEPHONES": "Телефоны"
 	}
diff --git a/public/app/main/apps/analytics/i18n/ru.json b/public/app/main/apps/analytics/i18n/ru.json
index b5effc6..229000f 100644
--- a/public/app/main/apps/analytics/i18n/ru.json
+++ b/public/app/main/apps/analytics/i18n/ru.json
@@ -1,88 +1,88 @@
 {
 	"ANALYTICS": {
 		"NAME": "Имя",
-		"ANALYTICS": "Аналитика",
-		"METRICS": "Показатели",
-		"ID": "Идентификатор",
+		"ANALYTICS": "Аналитики",
+		"METRICS": "Метрики",
+		"ID": "Id",
 		"TABLE": "Таблица",
 		"DESCRIPTION": "Описание",
-		"SEARCH_FOR_ANYONE": "Поиск",
-		"METRIC": "Показатель",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
+		"METRIC": "Метрические",
 		"ERRORS": {
-			"NAME_REQUIRED": "Обязательное поле",
-			"METRIC_REQUIRED": "Обязательное поле",
-			"COLUMN_REQUIRED": "Обязательное поле",
-			"VALUE_REQUIRED": "Обязательное поле",
-			"CUSTOM_METRIC_REQUIRED": "Обязательное поле",
-			"ALIAS_REQUIRED": "Обязательное поле"
+			"NAME_REQUIRED": "Это имя требуется",
+			"METRIC_REQUIRED": "Метрика не требуется",
+			"COLUMN_REQUIRED": "Колонки не требуется",
+			"VALUE_REQUIRED": "Это значение требуется",
+			"CUSTOM_METRIC_REQUIRED": "Пользовательские метрики не требуется",
+			"ALIAS_REQUIRED": "Псевдоним не требуется"
 		},
-		"NEW_METRIC": "Новый показатель",
-		"ADD_METRIC": "Добавить показатель",
-		"EDIT_METRIC": "Изменить показатель",
-		"DELETE_METRIC": "Удалить показатель",
+		"NEW_METRIC": "Новые метрические",
+		"ADD_METRIC": "Добавить метрические",
+		"EDIT_METRIC": "Редактировать с метрической резьбой",
+		"DELETE_METRIC": "Удалить с метрической резьбой",
 		"SAVE": "Сохранить",
 		"BACK": "Назад",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
+		"SELECT_NONE": "Выберите пункт None",
 		"TYPE": "Тип",
-		"EXTRACTEDREPORTS": "Составленные отчеты",
-		"DATE_RANGE_FROM": "Диапазон дат с",
-		"DATE_RANGE_TO": "Диапазон дат по",
-		"GENERATED_AT": "Сгенерировано на",
-		"STATUS": "Состояние",
-		"OUTPUT": "Вывод",
-		"REPORTS": "Отчеты",
+		"EXTRACTEDREPORTS": "Извлечь доклады",
+		"DATE_RANGE_FROM": "Дату в диапазоне от",
+		"DATE_RANGE_TO": "Диапазон дат для",
+		"GENERATED_AT": "Генерируется по",
+		"STATUS": "Статус",
+		"OUTPUT": "Выход",
+		"REPORTS": "Доклады",
 		"SEARCH_FOR_FOLDER": "Поиск папки",
-		"CREATED_AT": "Создано на",
-		"NEW_REPORT": "Новый отчет",
+		"CREATED_AT": "Созданные в",
+		"NEW_REPORT": "Новый доклад",
 		"ADD_REPORT": "Добавить отчет",
 		"COPY_REPORT": "Копировать отчет",
-		"PREVIEW_REPORT": "Предварительный просмотр отчета",
-		"RUN_REPORT": "Запуск отчета",
-		"DOWNLOAD_JSON_REPORT": "Экспорт отчета в формате JSON",
-		"EDIT_REPORT": "Редактировать отчет",
+		"PREVIEW_REPORT": "Предпросмотр отчета",
+		"RUN_REPORT": "Запустить отчет",
+		"DOWNLOAD_JSON_REPORT": "Экспорт отчета в JSON",
+		"EDIT_REPORT": "Редактирование отчета",
 		"DELETE_REPORT": "Удалить отчет",
 		"CREATE": "Создать папку",
 		"RENAME": "Переименовать папку",
 		"REMOVE": "Удалить папку",
-		"SELECT_NODE": "Выбрать папку",
-		"ERROR": "Ошибка",
+		"SELECT_NODE": "Выберите папку",
+		"ERROR": "Сообщение об ошибке",
 		"QUERY_ERROR": "Ошибка запроса",
 		"MESSAGE": "Сообщение",
 		"CLOSE": "Закрыть",
 		"FORMAT": "Формат",
 		"SETTINGS": "Настройки",
-		"GENERAL": "Общие",
+		"GENERAL": "Генеральной",
 		"FIELDS": "Поля",
-		"CONDITION": "Условие",
+		"CONDITION": "Состояние",
 		"OPERATOR": "Оператор",
 		"GROUP": "Группа",
-		"COLUMN": "Колонка",
+		"COLUMN": "Рулевой колонки",
 		"VALUE": "Значение",
 		"PREVIEW": "Предварительный просмотр",
-		"LIMITED_RESULT": "*Ограничение результатов",
-		"NO_DATA": "Данные отсутствуют",
+		"LIMITED_RESULT": "*Ограниченные результаты",
+		"NO_DATA": "Нет данных результатов",
 		"CONDITIONS": "Условия",
-		"ALIAS": "Алиас",
-		"FUNCTION": "Функция",
-		"GROUP_BY": "Группировка",
-		"ORDER_BY": "Сортировка",
+		"ALIAS": "Псевдоним",
+		"FUNCTION": "Функции",
+		"GROUP_BY": "Группы",
+		"ORDER_BY": "Заказ",
 		"ADD_REPORTFIELD": "Добавить поле",
-		"EDIT_REPORTFIELD": "Редактировать поле",
+		"EDIT_REPORTFIELD": "Поля редактирования",
 		"DELETE_REPORTFIELD": "Удалить поле",
-		"METRIC_NAME": "Показатель",
-		"NO_METRIC_FOUND": "Показатель не найден",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"CUSTOM_METRIC": "Пользовательский показатель",
-		"DELETE_EXTRACTEDREPORT": "Удалить составленный отчет",
-		"EDIT_EXTRACTEDREPORT": "Изменить составленный отчет",
-		"DOWNLOAD_EXTRACTEDREPORT": "Загрузить составленный отчет",
+		"METRIC_NAME": "Метрические",
+		"NO_METRIC_FOUND": "Не найден с метрической резьбой",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"CUSTOM_METRIC": "Пользовательские метрики",
+		"DELETE_EXTRACTEDREPORT": "Удалить извлеченные доклад",
+		"EDIT_EXTRACTEDREPORT": "Редактировать распаковали доклад",
+		"DOWNLOAD_EXTRACTEDREPORT": "Загрузить доклад извлечены",
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
+		"OF": "В",
 		"DELETE": "Удалить",
 		"REPORTNAME": "Название отчета",
-		"SEND_IF_EMPTY": "Отправить в случае, если не введено значение"
+		"SEND_IF_EMPTY": "Отправить, если пусто"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/ar.json b/public/app/main/apps/callysquare/i18n/ar.json
index bfa2d54..6ef57de 100644
--- a/public/app/main/apps/callysquare/i18n/ar.json
+++ b/public/app/main/apps/callysquare/i18n/ar.json
@@ -230,6 +230,8 @@
 		"METHOD": "طريقة",
 		"RAWBODY": "الجسم",
 		"RAWHEADERS": "الرؤوس",
-		"RESTAPI": "بقية API"
+		"RESTAPI": "بقية API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/cs.json b/public/app/main/apps/callysquare/i18n/cs.json
index 5b2fbff..ddf9440 100644
--- a/public/app/main/apps/callysquare/i18n/cs.json
+++ b/public/app/main/apps/callysquare/i18n/cs.json
@@ -230,6 +230,8 @@
 		"SESTEKNDA": "Sestek NDA",
 		"SESTEKTTS": "Sestek TTS",
 		"SSMLGENDER": "Rod",
-		"USERNAME": "Uživatelské jméno"
+		"USERNAME": "Uživatelské jméno",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/da.json b/public/app/main/apps/callysquare/i18n/da.json
index 1a4c58c..9d5bf6c 100644
--- a/public/app/main/apps/callysquare/i18n/da.json
+++ b/public/app/main/apps/callysquare/i18n/da.json
@@ -230,6 +230,8 @@
 		"METHOD": "Metode",
 		"RAWBODY": "Legeme",
 		"RAWHEADERS": "headers",
-		"RESTAPI": "Rest API"
+		"RESTAPI": "Rest API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/de.json b/public/app/main/apps/callysquare/i18n/de.json
index dc20f4c..508268c 100644
--- a/public/app/main/apps/callysquare/i18n/de.json
+++ b/public/app/main/apps/callysquare/i18n/de.json
@@ -230,6 +230,8 @@
 		"METHOD": "Methode",
 		"RAWBODY": "Körper",
 		"RAWHEADERS": "Überschriften",
-		"RESTAPI": "Rest API"
+		"RESTAPI": "Rest API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/en.json b/public/app/main/apps/callysquare/i18n/en.json
index e8582fb..6f5d116 100644
--- a/public/app/main/apps/callysquare/i18n/en.json
+++ b/public/app/main/apps/callysquare/i18n/en.json
@@ -190,7 +190,8 @@
 			"DSN": "Example: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
 			"TO": "You can add multiple addresses separated by commas (e.g. [email-masked], [email-masked])",
 			"CC": "You can add multiple addresses separated by commas (e.g. [email-masked], [email-masked])",
-			"BCC": "You can add multiple addresses separated by commas (e.g. [email-masked], [email-masked])"
+			"BCC": "You can add multiple addresses separated by commas (e.g. [email-masked], [email-masked])",
+			"MAX_TEXT_TTS": "The maximum number of characters supported is 250"
 		},
 		"CHOOSE_ATTACHMENT": "Choose Attachment",
 		"ATTACHMENT_NAME": "Attachment Name",
@@ -230,6 +231,8 @@
 		"APIKEY": "ApiKey",
 		"LANGUAGECODE": "Language Code",
 		"SSMLGENDER": "Gender",
-		"AUDIOENCODING": "Audio Encoding"
+		"AUDIOENCODING": "Audio Encoding",
+		"MRCPSYNTH": "MRCPSynth",
+		"MRCPRECOG": "MRCPRecog"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/es.json b/public/app/main/apps/callysquare/i18n/es.json
index 6a4020c..d3950dd 100644
--- a/public/app/main/apps/callysquare/i18n/es.json
+++ b/public/app/main/apps/callysquare/i18n/es.json
@@ -230,6 +230,8 @@
 		"METHOD": "Método",
 		"RAWBODY": "Cuerpo",
 		"RAWHEADERS": "Encabezados",
-		"RESTAPI": "API de descanso"
+		"RESTAPI": "API de descanso",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/et.json b/public/app/main/apps/callysquare/i18n/et.json
index adc5c01..f3e8da2 100644
--- a/public/app/main/apps/callysquare/i18n/et.json
+++ b/public/app/main/apps/callysquare/i18n/et.json
@@ -230,6 +230,8 @@
 		"SESTEKNDA": "Sestek NDA",
 		"SESTEKTTS": "Sestek TTS",
 		"SSMLGENDER": "Sugu",
-		"USERNAME": "Kasutajanimi"
+		"USERNAME": "Kasutajanimi",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSünth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/fa.json b/public/app/main/apps/callysquare/i18n/fa.json
index 5bfd779..53bb87c 100644
--- a/public/app/main/apps/callysquare/i18n/fa.json
+++ b/public/app/main/apps/callysquare/i18n/fa.json
@@ -230,6 +230,8 @@
 		"METHOD": "روش",
 		"RAWBODY": "بدن",
 		"RAWHEADERS": "هدرها",
-		"RESTAPI": "استراحت API"
+		"RESTAPI": "استراحت API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/fi.json b/public/app/main/apps/callysquare/i18n/fi.json
index 11473ef..9f919df 100644
--- a/public/app/main/apps/callysquare/i18n/fi.json
+++ b/public/app/main/apps/callysquare/i18n/fi.json
@@ -230,6 +230,8 @@
 		"METHOD": "Menetelmä",
 		"RAWBODY": "ruumis",
 		"RAWHEADERS": "otsikot",
-		"RESTAPI": "Rest API"
+		"RESTAPI": "Rest API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/fr.json b/public/app/main/apps/callysquare/i18n/fr.json
index 63beff8..b411d3f 100644
--- a/public/app/main/apps/callysquare/i18n/fr.json
+++ b/public/app/main/apps/callysquare/i18n/fr.json
@@ -230,6 +230,8 @@
 		"METHOD": "Méthode",
 		"RAWBODY": "Corps",
 		"RAWHEADERS": "En-têtes",
-		"RESTAPI": "API Rest"
+		"RESTAPI": "API Rest",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/he.json b/public/app/main/apps/callysquare/i18n/he.json
index 834fac6..b2bd7bb 100644
--- a/public/app/main/apps/callysquare/i18n/he.json
+++ b/public/app/main/apps/callysquare/i18n/he.json
@@ -230,6 +230,8 @@
 		"METHOD": "שיטה",
 		"RAWBODY": "גוף",
 		"RAWHEADERS": "כותרות",
-		"RESTAPI": "מנוחת API"
+		"RESTAPI": "מנוחת API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/hi.json b/public/app/main/apps/callysquare/i18n/hi.json
index ca4d79c..d8f1b6c 100644
--- a/public/app/main/apps/callysquare/i18n/hi.json
+++ b/public/app/main/apps/callysquare/i18n/hi.json
@@ -230,6 +230,8 @@
 		"METHOD": "तरीका",
 		"RAWBODY": "तन",
 		"RAWHEADERS": "हेडर",
-		"RESTAPI": "बाकी एपीआई"
+		"RESTAPI": "बाकी एपीआई",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/id.json b/public/app/main/apps/callysquare/i18n/id.json
index 131c534..615fb2d 100644
--- a/public/app/main/apps/callysquare/i18n/id.json
+++ b/public/app/main/apps/callysquare/i18n/id.json
@@ -230,6 +230,8 @@
 		"METHOD": "metode",
 		"RAWBODY": "Tubuh",
 		"RAWHEADERS": "Tajuk",
-		"RESTAPI": "API sisanya"
+		"RESTAPI": "API sisanya",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/it.json b/public/app/main/apps/callysquare/i18n/it.json
index 456d9a7..af25a38 100644
--- a/public/app/main/apps/callysquare/i18n/it.json
+++ b/public/app/main/apps/callysquare/i18n/it.json
@@ -185,7 +185,8 @@
 			"DSN": "Esempio:DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
 			"TO": "E' possibile aggiungere indirizzi multipli usando le virgole (es. [email-masked], [email-masked])",
 			"CC": "E' possibile aggiungere indirizzi multipli usando le virgole (es. [email-masked], [email-masked])",
-			"BCC": "E' possibile aggiungere indirizzi multipli usando le virgole (es. [email-masked], [email-masked])"
+			"BCC": "E' possibile aggiungere indirizzi multipli usando le virgole (es. [email-masked], [email-masked])",
+			"MAX_TEXT_TTS": "Numero massimo di caratteri supportati è 250"
 		},
 		"CHOOSE_ATTACHMENT": "Scegli Allegato",
 		"ATTACHMENT_NAME": "Nome Allegato",
@@ -230,6 +231,8 @@
 		"APIKEY": "ApiKey",
 		"LANGUAGECODE": "Codice Lingua",
 		"SSMLGENDER": "Genere",
-		"AUDIOENCODING": "Encoding Audio"
+		"AUDIOENCODING": "Encoding Audio",
+		"MRCPSYNTH": "MRCPSynth",
+		"MRCPRECOG": "MRCPRecog"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/ja.json b/public/app/main/apps/callysquare/i18n/ja.json
index 366ea7c..00914db 100644
--- a/public/app/main/apps/callysquare/i18n/ja.json
+++ b/public/app/main/apps/callysquare/i18n/ja.json
@@ -230,6 +230,8 @@
 		"METHOD": "方法",
 		"RAWBODY": "体",
 		"RAWHEADERS": "ヘッダー",
-		"RESTAPI": "Rest API"
+		"RESTAPI": "Rest API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/ko.json b/public/app/main/apps/callysquare/i18n/ko.json
index b8edc2e..65124c1 100644
--- a/public/app/main/apps/callysquare/i18n/ko.json
+++ b/public/app/main/apps/callysquare/i18n/ko.json
@@ -230,6 +230,8 @@
 		"METHOD": "방법",
 		"RAWBODY": "몸",
 		"RAWHEADERS": "헤더",
-		"RESTAPI": "나머지 API"
+		"RESTAPI": "나머지 API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/lt.json b/public/app/main/apps/callysquare/i18n/lt.json
index 0e842ac..cb60b59 100644
--- a/public/app/main/apps/callysquare/i18n/lt.json
+++ b/public/app/main/apps/callysquare/i18n/lt.json
@@ -230,6 +230,8 @@
 		"APIKEY": "ApiKey",
 		"LANGUAGECODE": "Kalbos kodas",
 		"SSMLGENDER": "Lytis",
-		"AUDIOENCODING": "Garso kodavimas"
+		"AUDIOENCODING": "Garso kodavimas",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/lv.json b/public/app/main/apps/callysquare/i18n/lv.json
index 04336d9..91d4e9a 100644
--- a/public/app/main/apps/callysquare/i18n/lv.json
+++ b/public/app/main/apps/callysquare/i18n/lv.json
@@ -230,6 +230,8 @@
 		"METHOD": "Metode",
 		"RAWBODY": "Korpuss",
 		"RAWHEADERS": "Galvenes",
-		"RESTAPI": "Atpūtas API"
+		"RESTAPI": "Atpūtas API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSsintna"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/nl.json b/public/app/main/apps/callysquare/i18n/nl.json
index c2a1837..ff13f37 100644
--- a/public/app/main/apps/callysquare/i18n/nl.json
+++ b/public/app/main/apps/callysquare/i18n/nl.json
@@ -230,6 +230,8 @@
 		"METHOD": "Methode",
 		"RAWBODY": "Lichaam",
 		"RAWHEADERS": "Kopteksten",
-		"RESTAPI": "Rest API"
+		"RESTAPI": "Rest API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/no.json b/public/app/main/apps/callysquare/i18n/no.json
index 429a9e5..bf6a689 100644
--- a/public/app/main/apps/callysquare/i18n/no.json
+++ b/public/app/main/apps/callysquare/i18n/no.json
@@ -230,6 +230,8 @@
 		"METHOD": "Metode",
 		"RAWBODY": "Kropp",
 		"RAWHEADERS": "overskrifter",
-		"RESTAPI": "Rest API"
+		"RESTAPI": "Rest API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/pl.json b/public/app/main/apps/callysquare/i18n/pl.json
index 1e62d4e..e1404b1 100644
--- a/public/app/main/apps/callysquare/i18n/pl.json
+++ b/public/app/main/apps/callysquare/i18n/pl.json
@@ -230,6 +230,8 @@
 		"METHOD": "metoda",
 		"RAWBODY": "Ciało",
 		"RAWHEADERS": "Nagłówki",
-		"RESTAPI": "Reszta API"
+		"RESTAPI": "Reszta API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/pt-BR.json b/public/app/main/apps/callysquare/i18n/pt-BR.json
index 9fe9695..46e7b78 100644
--- a/public/app/main/apps/callysquare/i18n/pt-BR.json
+++ b/public/app/main/apps/callysquare/i18n/pt-BR.json
@@ -230,6 +230,8 @@
 		"METHOD": "Método",
 		"RAWBODY": "Corpo",
 		"RAWHEADERS": "Cabeçalhos",
-		"RESTAPI": "API Rest"
+		"RESTAPI": "API Rest",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/pt-PT.json b/public/app/main/apps/callysquare/i18n/pt-PT.json
index 3c7d1de..68b9718 100644
--- a/public/app/main/apps/callysquare/i18n/pt-PT.json
+++ b/public/app/main/apps/callysquare/i18n/pt-PT.json
@@ -230,6 +230,8 @@
 		"METHOD": "Método",
 		"RAWBODY": "Corpo",
 		"RAWHEADERS": "Cabeçalhos",
-		"RESTAPI": "API Rest"
+		"RESTAPI": "API Rest",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/ru.json b/public/app/main/apps/callysquare/i18n/ru.json
index 80ef295..bd56eca 100644
--- a/public/app/main/apps/callysquare/i18n/ru.json
+++ b/public/app/main/apps/callysquare/i18n/ru.json
@@ -1,235 +1,237 @@
 {
 	"CALLYSQUARE": {
-		"SESTEKASR": "Sestek ASR",
-		"SESTEKNDA": "Sestek NDA",
+		"SESTEKASR": "Sestek ASR",
+		"SESTEKNDA": "Sestek NDA",
 		"SESTEKTTS": "Sestek TTS",
-		"AWSLEX": "Сервис Amazon Lex",
+		"AWSLEX": "Amazon Lex",
 		"NAME": "Имя",
 		"ODBC": "ODBC",
-		"TEST_ODBC": "Тест ODBC",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"TEST_ODBC": "Проверка ODBC",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"BACK": "Назад",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
+		"SELECT_NONE": "Выберите пункт None",
 		"DSN": "DSN",
 		"DESCRIPTION": "Описание",
-		"ADD_ODBC": "Добавление источника данных ODBC",
+		"ADD_ODBC": "Добавить ODBC",
 		"ERRORS": {
-			"NAME_REQUIRED": "Обязательное поле",
-			"DSN_REQUIRED": "Обязательное поле",
-			"PROJECT_REQUIRED": "Обязательное поле",
-			"FIELD_REQUIRED": "Обязательное поле",
+			"NAME_REQUIRED": "Это имя требуется",
+			"DSN_REQUIRED": "DSN не требуется",
+			"PROJECT_REQUIRED": "В рамках этого проекта не требуется",
+			"FIELD_REQUIRED": "Поле является обязательным",
 			"URL_REQUIRED": "Обязательное поле"
 		},
-		"EDIT_ODBC": "Изменение источника данных ODBC",
-		"DELETE_ODBC": "Удаление источника данных ODBC",
+		"EDIT_ODBC": "Редактировать ODBC",
+		"DELETE_ODBC": "Удалить ODBC",
 		"SAVE": "Сохранить",
 		"PROJECTS": "Проекты",
 		"ADD_PROJECT": "Добавить проект",
 		"EDIT_PROJECT": "Редактировать проект",
-		"DELETE_PROJECT": "Удалить проект",
-		"CALLYSQUARE": "Cally Square",
-		"ID": "Идентификатор",
-		"NEW_ODBC": "Новое подключение к источнику данных ODBC",
-		"SQUARERECORDINGS": "Записи",
+		"DELETE_PROJECT": "Удалить",
+		"CALLYSQUARE": "Юндкп подкрепить проектную документацию путем систематического квадратных",
+		"ID": "Id",
+		"NEW_ODBC": "Новые связи ODBC",
+		"SQUARERECORDINGS": "Квадратный записей",
 		"PROJECT": "Проект",
 		"UNIQUEID": "Уникальный идентификатор",
-		"PHONE": "Телефон",
-		"EXTEN": "Exten",
+		"PHONE": "Номер телефона",
+		"EXTEN": "Удлинительные кабели приобретаются",
 		"AUDIO": "Аудио",
-		"CREATED_AT": "Создано на",
+		"CREATED_AT": "Созданные в",
 		"NOTES": "Примечания",
 		"NEW_PROJECT": "Новый проект",
-		"EDIT": "Редактировать",
-		"LABEL": "Метка",
-		"ANSWER": "Ответ",
-		"TIMEOUT": "Тайм-аут",
+		"EDIT": "Edit",
+		"LABEL": "Label",
+		"ANSWER": "Answer",
+		"TIMEOUT": "Timeout",
 		"SIP_ID": "SIP",
-		"OPTS": "Опции",
+		"OPTS": "Options",
 		"URL": "URL",
-		"TRUNK_NAME": "Транк",
-		"START": "Начало",
-		"FINALLY": "Окончательно",
-		"END": "Конец",
-		"HANGUP": "Положить трубку",
-		"DIAL": "Набор номера",
-		"EXT_DIAL": "Набор внешнего номера",
-		"QUEUE": "Очередь",
-		"QUEUE_ID": "Очередь",
-		"FILE_ID": "Аудио",
+		"TRUNK_NAME": "Trunk",
+		"START": "Start",
+		"FINALLY": "Finally",
+		"END": "End",
+		"HANGUP": "Hangup",
+		"DIAL": "Dial",
+		"EXT_DIAL": "External Dial",
+		"QUEUE": "Queue",
+		"QUEUE_ID": "Queue",
+		"FILE_ID": "Audio",
 		"AGI": "AGI",
 		"MACRO": "Macro",
 		"GOSUB": "GoSub",
-		"POSITION": "Позиция",
-		"VOICEMAIL": "Голосовая почта",
-		"MAILBOX": "Почтовый ящик",
-		"OPTIONS": "Опции",
+		"POSITION": "Position",
+		"VOICEMAIL": "Voicemail",
+		"MAILBOX": "Mailbox",
+		"OPTIONS": "Options",
 		"SET": "Set",
-		"VARIABLE_ID": "Переменная",
-		"VARIABLE_VALUE": "Значение",
+		"VARIABLE_ID": "Variable",
+		"VARIABLE_VALUE": "Value",
 		"MATH": "Math",
-		"OPERATION": "Операция",
-		"PLAYBACK": "Воспроизведение",
+		"OPERATION": "Operation",
+		"PLAYBACK": "Playback",
 		"RESPONSE": "Response Timeout",
-		"DIGIT": "Макс. цифры",
-		"RETRY": "Повторы",
-		"DIGITS": "Цифры",
-		"ESCAPE_DIGITS": "Экранирование цифр",
-		"MENU": "Меню",
-		"SAYDIGITS": "Проговаривание цифр / Say Digits",
-		"SAYNUMBER": "Проговаривание номеров / Say Number",
-		"NUMBER": "Номер",
-		"SAYPHONETIC": "Проговаривание букв фонетическим алфавитом / Say Phonetic",
-		"TEXT": "Текст",
-		"GOOGLE_TTS_LANGUAGE": "Язык",
-		"TTS": "Синтезатор речи Google Text-to-Speech",
-		"ISPEECHTTS": "Синтезатор речи iSpeech Text-To-Speech",
-		"KEY": "Ключ",
-		"ISPEECH_TTS_LANGUAGE": "Язык",
-		"SPEED": "Скорость",
-		"INTKEY": "Разъединяющий ключ",
-		"GETDIGITS": "Получение цифр",
-		"MINDIGIT": "Минимальное количество цифр",
-		"MAXDIGIT": "Максимальное количество цифр",
-		"HIDDENDIGITSNUM": "Номер со скрытыми цифрами",
-		"HIDDENDIGITSPOS": "Положение скрытых цифр",
-		"GETSECRETDIGITS": "Получение секретных цифр",
-		"RECORD": "Запись",
-		"FILE": "Имя файла",
-		"RECORDINGFORMAT": "Формат записи",
-		"DATABASE": "База данных",
-		"ODBC_ID": "Подключение к источнику данных ODBC",
-		"QUERY": "Запрос",
-		"MODEL": "Модель",
-		"ISPEECH_ASR_LANGUAGE": "Язык",
-		"BEEP": "Гудок",
-		"ISPEECHASR": "iSpeech ASR",
-		"SENDSMS": "Отправка SMS",
-		"ACCOUNT_ID": "Учетная запись",
-		"TO": "Кому",
-		"SMS_TEXT": "Текст",
-		"SENDMAIL": "Отправить письмо",
-		"TEMPLATE_ID": "Шаблон",
+		"DIGIT": "Max Digits",
+		"RETRY": "Retries",
+		"DIGITS": "Digits",
+		"ESCAPE_DIGITS": "Escape Digits",
+		"MENU": "Menu",
+		"SAYDIGITS": "Say Digits",
+		"SAYNUMBER": "Say number",
+		"NUMBER": "Number",
+		"SAYPHONETIC": "Say Phonetics",
+		"TEXT": "Text",
+		"GOOGLE_TTS_LANGUAGE": "Language",
+		"TTS": "Google Text-To-Speech",
+		"ISPEECHTTS": "ISpeech Text-To-Speech",
+		"KEY": "Key",
+		"ISPEECH_TTS_LANGUAGE": "Language",
+		"SPEED": "Speed",
+		"INTKEY": "Interrupt Key",
+		"GETDIGITS": "Get Digits",
+		"MINDIGIT": "Minimum Digits",
+		"MAXDIGIT": "Maximum Digits",
+		"HIDDENDIGITSNUM": "Hiddden Digits Number",
+		"HIDDENDIGITSPOS": "Hidden Digits Position",
+		"GETSECRETDIGITS": "Get Secret Digits",
+		"RECORD": "Record",
+		"FILE": "Filename",
+		"RECORDINGFORMAT": "Recording Format",
+		"DATABASE": "Database",
+		"ODBC_ID": "ODBC Connection",
+		"QUERY": "Query",
+		"MODEL": "Model",
+		"ISPEECH_ASR_LANGUAGE": "Language",
+		"BEEP": "Beep",
+		"ISPEECHASR": "ISpeech ASR",
+		"SENDSMS": "Send SMS",
+		"ACCOUNT_ID": "Account",
+		"TO": "To",
+		"SMS_TEXT": "Text",
+		"SENDMAIL": "Send Mail",
+		"TEMPLATE_ID": "Template",
 		"CC": "CC",
 		"BCC": "BCC",
-		"SUBJECT": "Тема",
-		"GOTOC": "Перейти к",
-		"CONTEXT": "Контекст",
-		"EXTENSION": "Расширение",
-		"PRIORITY": "Приоритет",
-		"GOTOIF": "Переход по условию / GotoIf",
-		"CONDITION": "Условие",
-		"GOTOIFTIME": "Условный переход, зависящий от текущего времени / GoToIfTime",
-		"INTERVAL_ID": "Интервал",
-		"VSWITCH": "Переключение между значениями переменной",
-		"GOAL": "Цель",
-		"GOALNAME": "Название цели",
+		"SUBJECT": "Subject",
+		"GOTOC": "GoTo",
+		"CONTEXT": "Context",
+		"EXTENSION": "Extension",
+		"PRIORITY": "Priority",
+		"GOTOIF": "GoToIf",
+		"CONDITION": "Condition",
+		"GOTOIFTIME": "GoToIfTime",
+		"INTERVAL_ID": "Interval",
+		"VSWITCH": "Variable Switch",
+		"GOAL": "Goal",
+		"GOALNAME": "Goal Name",
 		"NOOP": "NoOp",
-		"OUTPUT": "Вывод",
-		"SYSTEM": "Система",
-		"COMMAND": "Команда",
-		"ARGS": "Аргументы",
-		"SUBPROJECT": "Подпроект",
-		"PROJECT_ID": "Проект",
-		"CUSTOM_APP": "Пользовательское приложение",
-		"APPLICATION": "Приложение",
-		"CALLBACK": "Обратный звонок",
-		"LASTNAME": "Фамилия",
-		"LIST_ID": "Список",
-		"DELAY": "задержка [мин]",
-		"OPEN_NEW_WINDOW": "Открыть в новом окне",
+		"OUTPUT": "Output",
+		"SYSTEM": "System",
+		"COMMAND": "Command",
+		"ARGS": "Arguments",
+		"SUBPROJECT": "Sub Project",
+		"PROJECT_ID": "Project",
+		"CUSTOM_APP": "Custom Application",
+		"APPLICATION": "Application",
+		"CALLBACK": "Callback",
+		"LASTNAME": "Last Name",
+		"LIST_ID": "List",
+		"DELAY": "Delay",
+		"OPEN_NEW_WINDOW": "Открыть в новом окне",
 		"OPEN_PROJECT": "Открыть проект",
-		"COPY": "Копировать",
+		"COPY": "Копирование",
 		"OPEN": "Открыть",
-		"NEW": "Новый",
-		"COPY_PROJECT": "Копировать проект",
-		"NEW_VARIABLE": "Новая переменная",
+		"NEW": "Новые",
+		"COPY_PROJECT": "Копия проекта",
+		"NEW_VARIABLE": "Новой переменной",
 		"ADD_VARIABLE": "Добавить переменную",
-		"UPDATE_DESCRIPTION": "Обновить описание",
-		"EDIT_XML": "Редактирование XML",
-		"IMPORT_XML": "Импорт XML",
+		"UPDATE_DESCRIPTION": "Описание обновления",
+		"EDIT_XML": "Редактирование XML",
+		"IMPORT_XML": "Импорт XML",
 		"IMPORT": "Импорт",
-		"DROP_TO_UPLOAD": "ПЕРЕТАСКИВАНИЕ ФАЙЛОВ ДЛЯ ЗАГРУЗКИ",
-		"DROP_TO_UPLOAD_MESSAGE": "Вы также можете перетащить сюда файлы для загрузки. Только XML – макс. 5MB",
+		"DROP_TO_UPLOAD": "Раскрывающийся список ДЛЯ ЗАГРУЗКИ",
+		"DROP_TO_UPLOAD_MESSAGE": "Также можно перетащить файлы для загрузки здесь. Только XML - Max. 5 МБ",
 		"CLOSE": "Закрыть",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"GO_TO_PROJECTS": "Перейти к проектам",
-		"UPDATE_INFO": "Обновить информацию",
-		"AGENTS": "Агенты",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"GO_TO_PROJECTS": "Перейти к проектам",
+		"UPDATE_INFO": "Обновление информации",
+		"AGENTS": "Операторы",
 		"TELEPHONES": "Телефоны",
 		"USERS": "Пользователи",
 		"HELP": {
-			"MAILBOX": "mailbox@context",
-			"DSN": "Пример: DRIVER=MySQL;SERVER=127.0.0.1;UID=xcall;PWD=password;DATABASE=motion",
-			"TO": "Вы можете добавить несколько адресов электронной почты, разделенных запятыми (например, [email-masked], [email-masked])",
-			"CC": "Вы можете добавить несколько адресов электронной почты, разделенных запятыми (например, [email-masked], [email-masked])",
-			"BCC": "Вы можете добавить несколько адресов электронной почты, разделенных запятыми (например, [email-masked], [email-masked])"
+			"MAILBOX": "Фотогалерея@контексте",
+			"DSN": "Пример: DRIVER=MySQL;сервер = 127.0.0.1;uid=xcall;PWD=Пароль;БАЗЫ ДАННЫХ=motion",
+			"TO": "Вы можете добавить несколько адресов с помощью запятыми (например, [email-masked], [email-masked])",
+			"CC": "Вы можете добавить несколько адресов с помощью запятыми (например, [email-masked], [email-masked])",
+			"BCC": "Вы можете добавить несколько адресов с помощью запятыми (например, [email-masked], [email-masked])"
 		},
 		"CHOOSE_ATTACHMENT": "Выбрать вложение",
 		"ATTACHMENT_NAME": "Имя вложения",
-		"ATTACHMENT_TYPE": "Тип вложения",
-		"ATTACHMENT_PATH": "Путь к файлу вложения",
+		"ATTACHMENT_TYPE": "Тип подключения",
+		"ATTACHMENT_PATH": "Вложение путь",
 		"SENDFAX": "Отправка факса",
-		"DELETE_SQUARERECORDING": "Удалить запись Square",
-		"DOWNLOAD_SQUARERECORDING": "Скачать запись Square",
+		"DELETE_SQUARERECORDING": "Удалить запись площади",
+		"DOWNLOAD_SQUARERECORDING": "Загрузить квадратных записи",
 		"FILENAME": "Имя файла",
-		"EDIT_SQUARERECORDING": "Редактировать запись Square",
+		"EDIT_SQUARERECORDING": "Редактировать запись площади",
 		"DELETE": "Удалить",
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
+		"OF": "В",
 		"CALLBACK_PRIORITY": "Приоритет",
 		"GOOGLE_ASR_LANGUAGE": "Язык",
 		"GOOGLEASR": "GoogleASR",
-		"AWSPOLLY": "Сервис AWS Polly",
-		"AWS_ACCESS_KEY_ID": "Идентификатор ключа доступа",
+		"AWSPOLLY": "AWS Полли",
+		"AWS_ACCESS_KEY_ID": "Ключ доступа ID",
 		"AWS_SECRET_ACCESS_KEY": "Секретный ключ доступа",
 		"AWS_POLLY_REGION": "Регион",
 		"AWS_POLLY_VOICE": "Голос",
-		"LUMENVOXTTS": "Синтезатор речи Lumenvox Text-To-Speech",
-		"LUMENVOXASR": "Lumenvox ASR",
+		"LUMENVOXTTS": "Lumenvox текст-в-речь",
+		"LUMENVOXASR": "Lumenvox ASR",
 		"GRAMMAR": "Грамматика",
-		"TILDEASR": "Tilde ASR",
-		"APPID": "Идентификатор приложения",
-		"APPSECRET": "Секретный ключ приложения",
-		"SMS_ACCOUNT_ID": "Учетная запись",
-		"FINDBY": "Найти по",
-		"LOGIN": "Авторизация",
-		"LOGOUT": "Выход",
+		"TILDEASR": "Тильда ASR",
+		"APPID": "App ID",
+		"APPSECRET": "App Secret",
+		"SMS_ACCOUNT_ID": "Счет",
+		"FINDBY": "Поиск по",
+		"LOGIN": "Авторизоваться",
+		"LOGOUT": "Выйти",
 		"PAUSE": "Пауза",
 		"PAUSE_ID": "Тип паузы",
 		"UNPAUSE": "Конец паузы",
 		"URI": "URI",
 		"AWS_TEXT_TYPE": "Тип текста",
-		"DIALOGFLOW": "Сервис Dialogflow",
-		"DIALOGFLOW_LANGUAGE": "Язык",
-		"ADDUSER_PROJECTS": "Добавление пользователей в проект",
+		"DIALOGFLOW": "Dialogflow",
+		"DIALOGFLOW_LANGUAGE": "язык",
+		"ADDUSER_PROJECTS": "Добавить пользователей в проект",
 		"ALL_USERS": "Все пользователи",
-		"PERMISSIONADD_PROJECTS": "Добавление пользователей в проект",
+		"PERMISSIONADD_PROJECTS": "Добавить пользователей в проект",
 		"SELECTED_USERS": "Выбранные пользователи",
 		"AWS_BOT_NAME": "Имя бота",
-		"AWS_LEX_REGION": "Регион",
-		"NDASSISTANT_URL": "URL NDASSISTANT",
-		"NDAUTH_URL": "URL NDAUTH",
-		"PASSWORD": "Пароль",
-		"USERNAME": "Имя пользователя",
-		"NDAGENERATE_AUDIO": "Создать аудиофайл",
-		"CUSTOM_ACTION": "Пользовательское действие",
-		"CUSTOM_ACTION_DATA": "Данные о пользовательских действиях",
-		"NDAACTIVITY_TYPE": "Тип действия",
+		"AWS_LEX_REGION": "Область, край",
+		"NDASSISTANT_URL": "NDASSISTANT Url",
+		"NDAUTH_URL": "Ндаут URL",
+		"PASSWORD": "пароль",
+		"USERNAME": "имя пользователя",
+		"NDAGENERATE_AUDIO": "Создать аудио файл",
+		"CUSTOM_ACTION": "Custom Action",
+		"CUSTOM_ACTION_DATA": "Данные пользовательских действий",
+		"NDAACTIVITY_TYPE": "Тип деятельности",
 		"APIKEY": "ApiKey",
-		"AUDIOENCODING": "Кодирование звуковой информации",
-		"GOOGLE_CLOUD_TTS": "Google Cloud TTS",
+		"AUDIOENCODING": "Аудио кодирование",
+		"GOOGLE_CLOUD_TTS": "Google Cloud TTS",
 		"LANGUAGECODE": "Код языка",
 		"SSMLGENDER": "Пол",
-		"BODY": "Тело",
-		"COMPUTEDVARIABLES": "Путь к скрипту с переменными с вычисляемыми значениями",
+		"BODY": "тело",
+		"COMPUTEDVARIABLES": "Путь к сценарию вычисляемых переменных",
 		"GOOGLE_CLOUD_TTS_TEXT_TYPE": "Тип текста",
 		"HEADERS": "Заголовки",
-		"METHOD": "Метод",
-		"RAWBODY": "Тело",
+		"METHOD": "метод",
+		"RAWBODY": "тело",
 		"RAWHEADERS": "Заголовки",
-		"RESTAPI": "Rest API"
+		"RESTAPI": "API отдыха",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/sv.json b/public/app/main/apps/callysquare/i18n/sv.json
index 41bf227..21fff3c 100644
--- a/public/app/main/apps/callysquare/i18n/sv.json
+++ b/public/app/main/apps/callysquare/i18n/sv.json
@@ -230,6 +230,8 @@
 		"METHOD": "Metod",
 		"RAWBODY": "Kropp",
 		"RAWHEADERS": "rubriker",
-		"RESTAPI": "Rest API"
+		"RESTAPI": "Rest API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/tr.json b/public/app/main/apps/callysquare/i18n/tr.json
index 9d4909e..7b64c03 100644
--- a/public/app/main/apps/callysquare/i18n/tr.json
+++ b/public/app/main/apps/callysquare/i18n/tr.json
@@ -230,6 +230,8 @@
 		"METHOD": "Yöntem",
 		"RAWBODY": "Vücut",
 		"RAWHEADERS": "Başlıkları",
-		"RESTAPI": "Dinlenme API'sı"
+		"RESTAPI": "Dinlenme API'sı",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPSynth"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/zh-CN.json b/public/app/main/apps/callysquare/i18n/zh-CN.json
index f935fac..24e4f96 100644
--- a/public/app/main/apps/callysquare/i18n/zh-CN.json
+++ b/public/app/main/apps/callysquare/i18n/zh-CN.json
@@ -230,6 +230,8 @@
 		"METHOD": "方法",
 		"RAWBODY": "身体",
 		"RAWHEADERS": "标头",
-		"RESTAPI": "REST API"
+		"RESTAPI": "REST API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPS合成器"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/callysquare/i18n/zh-TW.json b/public/app/main/apps/callysquare/i18n/zh-TW.json
index 10f5ab1..d3d3b70 100644
--- a/public/app/main/apps/callysquare/i18n/zh-TW.json
+++ b/public/app/main/apps/callysquare/i18n/zh-TW.json
@@ -230,6 +230,8 @@
 		"METHOD": "方法",
 		"RAWBODY": "身體",
 		"RAWHEADERS": "標頭",
-		"RESTAPI": "REST API"
+		"RESTAPI": "REST API",
+		"MRCPRECOG": "MRCPRecog",
+		"MRCPSYNTH": "MRCPS合成器"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/ar.json b/public/app/main/apps/chat/i18n/ar.json
index 2c09aaa..df952c5 100644
--- a/public/app/main/apps/chat/i18n/ar.json
+++ b/public/app/main/apps/chat/i18n/ar.json
@@ -82,7 +82,8 @@
 			"ACCESSKEYID_REQUIRED": "حقل الزامي",
 			"BOTNAME_REQUIRED": "حقل الزامي",
 			"SECRETACCESSKEY_REQUIRED": "حقل الزامي",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "حقل الزامي"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "حقل الزامي",
+			"VIDAOOAPIKEY_REQUIRED": "حقل الزامي"
 		},
 		"HELP": {
 			"AGENTIDENTIFIER": "محدد هوية وكيل خدمه العملاء",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "تسجيل الشاشة في التقدم",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "تحميل بدون مرفقات",
 		"DOWNLOAD_WITH_ATTACHMENTS": "تنزيل بالمرفقات",
-		"LASTMESSAGE": "اخر رسالة"
+		"LASTMESSAGE": "اخر رسالة",
+		"VIDAOO": "فيداو",
+		"VIDAOOAPIKEY": "مفتاح Vidaoo Api",
+		"VIDAOOESCALATION": "ابدأ مكالمة فيديو",
+		"VIDAOOSESSION": "ابدأ مكالمة فيديو",
+		"VIDEO": "فيديو"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/da.json b/public/app/main/apps/chat/i18n/da.json
index 970bb4e..3e2ab62 100644
--- a/public/app/main/apps/chat/i18n/da.json
+++ b/public/app/main/apps/chat/i18n/da.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "Obligatorisk felt",
 			"BOTNAME_REQUIRED": "Obligatorisk felt",
 			"SECRETACCESSKEY_REQUIRED": "Obligatorisk felt",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Obligatorisk felt"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Obligatorisk felt",
+			"VIDAOOAPIKEY_REQUIRED": "Obligatorisk felt"
 		},
 		"CM_FIELD": "Kontakt Manager mark",
 		"CHATPROACTIVEACTIONS": "Proaktive handlinger",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Skærmoptagelse pågår",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download uden vedhæftede filer",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Download med vedhæftede filer",
-		"LASTMESSAGE": "Sidste besked"
+		"LASTMESSAGE": "Sidste besked",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo Api Key",
+		"VIDAOOESCALATION": "Start videoopkald",
+		"VIDAOOSESSION": "Start videoopkald",
+		"VIDEO": "video"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/de.json b/public/app/main/apps/chat/i18n/de.json
index af33775..bc2c19b 100644
--- a/public/app/main/apps/chat/i18n/de.json
+++ b/public/app/main/apps/chat/i18n/de.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "Pflichtfeld",
 			"BOTNAME_REQUIRED": "Pflichtfeld",
 			"SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pflichtfeld",
+			"VIDAOOAPIKEY_REQUIRED": "Pflichtfeld"
 		},
 		"CM_FIELD": "Contact Manager Feld",
 		"CHATPROACTIVEACTIONS": "Proaktive Aktionen",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
-		"LASTMESSAGE": "Letzte Nachricht"
+		"LASTMESSAGE": "Letzte Nachricht",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo Api Key",
+		"VIDAOOESCALATION": "Videoanruf starten",
+		"VIDAOOSESSION": "Videoanruf starten",
+		"VIDEO": "Video"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/en.json b/public/app/main/apps/chat/i18n/en.json
index e0534d5..5119699 100644
--- a/public/app/main/apps/chat/i18n/en.json
+++ b/public/app/main/apps/chat/i18n/en.json
@@ -1,5 +1,10 @@
 {
 	"CHAT": {
+		"VIDAOOESCALATION": "Start Video Call",
+		"VIDAOOAPIKEY": "Vidaoo Api Key",
+		"VIDAOOSESSION": "Start Video Call",
+		"VIDEO": "Video",
+		"VIDAOO": "Vidaoo",
 		"EDIT_AMAZONLEX": "Edit Amazon Lex",
 		"AMAZONLEX": "Amazon Lex",
 		"ACCESSKEYID": "Access Key ID",
@@ -164,6 +169,7 @@
 		"MANDATORYDISPOSITION": "Mandatory disposition",
 		"MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
 		"ERRORS": {
+			"VIDAOOAPIKEY_REQUIRED": "Mandatory Field",
 			"BOTNAME_REQUIRED": "Mandatory Field",
 			"SECRETACCESSKEY_REQUIRED": "Mandatory Field",
 			"ACCESSKEYID_REQUIRED": "Mandatory Field",
diff --git a/public/app/main/apps/chat/i18n/es.json b/public/app/main/apps/chat/i18n/es.json
index 76fe7fc..b20833e 100644
--- a/public/app/main/apps/chat/i18n/es.json
+++ b/public/app/main/apps/chat/i18n/es.json
@@ -82,7 +82,8 @@
 			"ACCESSKEYID_REQUIRED": "Campo obligatorio",
 			"BOTNAME_REQUIRED": "Campo obligatorio",
 			"SECRETACCESSKEY_REQUIRED": "Campo obligatorio",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obligatorio"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obligatorio",
+			"VIDAOOAPIKEY_REQUIRED": "Campo obligatorio"
 		},
 		"HELP": {
 			"AUTOCLOSE": "Habilítelo si desea que las sesiones de chat se cierren como No gestionadas si no hay ningún agente disponible. Obtenga más información al respecto en: https://wiki.xcallymotion.com/display/XMV/Chat Websites",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Grabación de pantalla en progreso",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Descargar sin archivos adjuntos",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Descargar con archivos adjuntos",
-		"LASTMESSAGE": "Ultimo mensaje"
+		"LASTMESSAGE": "Ultimo mensaje",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Clave de Api Vidaoo",
+		"VIDAOOESCALATION": "Iniciar videollamada",
+		"VIDAOOSESSION": "Iniciar videollamada",
+		"VIDEO": "Vídeo"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/fa.json b/public/app/main/apps/chat/i18n/fa.json
index 2fdd92e..d68f2d5 100644
--- a/public/app/main/apps/chat/i18n/fa.json
+++ b/public/app/main/apps/chat/i18n/fa.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "زمینه اجباری",
 			"BOTNAME_REQUIRED": "زمینه اجباری",
 			"SECRETACCESSKEY_REQUIRED": "زمینه اجباری",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "زمینه اجباری"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "زمینه اجباری",
+			"VIDAOOAPIKEY_REQUIRED": "زمینه اجباری"
 		},
 		"CM_FIELD": "تماس با مدير گروه رشته",
 		"CHATPROACTIVEACTIONS": "اقدامات فعالانه تر توبيخ",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "ضبط صفحه در حال انجام است",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "بارگیری بدون پیوست",
 		"DOWNLOAD_WITH_ATTACHMENTS": "با پیوست ها بارگیری کنید",
-		"LASTMESSAGE": "آخرین پیام"
+		"LASTMESSAGE": "آخرین پیام",
+		"VIDAOO": "ویداو",
+		"VIDAOOAPIKEY": "کلید اصلی ویداو",
+		"VIDAOOESCALATION": "تماس ویدیویی را شروع کنید",
+		"VIDAOOSESSION": "تماس ویدیویی را شروع کنید",
+		"VIDEO": "فیلم"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/fi.json b/public/app/main/apps/chat/i18n/fi.json
index 0ca5536..b50db37 100644
--- a/public/app/main/apps/chat/i18n/fi.json
+++ b/public/app/main/apps/chat/i18n/fi.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "Pakollinen kenttä",
 			"BOTNAME_REQUIRED": "Pakollinen kenttä",
 			"SECRETACCESSKEY_REQUIRED": "Pakollinen kenttä",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pakollinen kenttä"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pakollinen kenttä",
+			"VIDAOOAPIKEY_REQUIRED": "Pakollinen kenttä"
 		},
 		"CM_FIELD": "Contact Manager kenttä",
 		"CHATPROACTIVEACTIONS": "Ennakoivat toimet",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Näytön nauhoitus käynnissä",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Lataa ilman liitteitä",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Lataa liitteineen",
-		"LASTMESSAGE": "Viimeinen viesti"
+		"LASTMESSAGE": "Viimeinen viesti",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo Api-avain",
+		"VIDAOOESCALATION": "Aloita videopuhelu",
+		"VIDAOOSESSION": "Aloita videopuhelu",
+		"VIDEO": "Video"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/fr.json b/public/app/main/apps/chat/i18n/fr.json
index 797122f..02b790f 100644
--- a/public/app/main/apps/chat/i18n/fr.json
+++ b/public/app/main/apps/chat/i18n/fr.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "Champ obligatoire",
 			"BOTNAME_REQUIRED": "Champ obligatoire",
 			"SECRETACCESSKEY_REQUIRED": "Champ obligatoire",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Champ obligatoire"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Champ obligatoire",
+			"VIDAOOAPIKEY_REQUIRED": "Champ obligatoire"
 		},
 		"CM_FIELD": "Contact Manager Domaine",
 		"CHATPROACTIVEACTIONS": "Des actions proactives",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Enregistrement d'écran en cours",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Télécharger sans pièces jointes",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Télécharger avec pièces jointes",
-		"LASTMESSAGE": "Dernier message"
+		"LASTMESSAGE": "Dernier message",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Clé API Vidaoo",
+		"VIDAOOESCALATION": "Lancer un appel vidéo",
+		"VIDAOOSESSION": "Lancer un appel vidéo",
+		"VIDEO": "Vidéo"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/he.json b/public/app/main/apps/chat/i18n/he.json
index 36a616f..32e242f 100644
--- a/public/app/main/apps/chat/i18n/he.json
+++ b/public/app/main/apps/chat/i18n/he.json
@@ -240,7 +240,8 @@
 			"WAITINGMESSAGE_MAX_LENGTH": "האורך המרבי המותר של הערך הוא {{max}}",
 			"WAITINGTITLE_MAX_LENGTH": "האורך המרבי המותר של הערך הוא {{max}}",
 			"RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "שדה חובה"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "שדה חובה",
+			"VIDAOOAPIKEY_REQUIRED": "שדה חובה"
 		},
 		"CM_FIELD": "שדה 'מנהל אנשי הקשר'",
 		"CHATPROACTIVEACTIONS": "פעולות יזומות",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "הקלטת מסך מתבצעת",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "הורד ללא קבצים מצורפים",
 		"DOWNLOAD_WITH_ATTACHMENTS": "הורד עם קבצים מצורפים",
-		"LASTMESSAGE": "הודעה אחרונה"
+		"LASTMESSAGE": "הודעה אחרונה",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo Api Key",
+		"VIDAOOESCALATION": "התחל שיחת וידאו",
+		"VIDAOOSESSION": "התחל שיחת וידאו",
+		"VIDEO": "וִידֵאוֹ"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/hi.json b/public/app/main/apps/chat/i18n/hi.json
index fb7200a..ed3cc14 100644
--- a/public/app/main/apps/chat/i18n/hi.json
+++ b/public/app/main/apps/chat/i18n/hi.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "आवश्यक स्थान",
 			"BOTNAME_REQUIRED": "आवश्यक स्थान",
 			"SECRETACCESSKEY_REQUIRED": "आवश्यक स्थान",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "आवश्यक स्थान"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "आवश्यक स्थान",
+			"VIDAOOAPIKEY_REQUIRED": "आवश्यक स्थान"
 		},
 		"CM_FIELD": "संपर्क प्रबंधक क्षेत्र",
 		"CHATPROACTIVEACTIONS": "सक्रिय क्रियाएं",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "स्क्रीन रिकॉर्डिंग प्रगति पर है",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "संलग्नक के बिना डाउनलोड करें",
 		"DOWNLOAD_WITH_ATTACHMENTS": "अनुलग्नकों के साथ डाउनलोड करें",
-		"LASTMESSAGE": "अंतिम संदेश"
+		"LASTMESSAGE": "अंतिम संदेश",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "विडू आपी की",
+		"VIDAOOESCALATION": "वीडियो कॉल प्रारंभ करें",
+		"VIDAOOSESSION": "वीडियो कॉल प्रारंभ करें",
+		"VIDEO": "वीडियो"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/id.json b/public/app/main/apps/chat/i18n/id.json
index 58f47f7..149bca8 100644
--- a/public/app/main/apps/chat/i18n/id.json
+++ b/public/app/main/apps/chat/i18n/id.json
@@ -82,7 +82,8 @@
 			"ACCESSKEYID_REQUIRED": "Bidang wajib",
 			"BOTNAME_REQUIRED": "Bidang wajib",
 			"SECRETACCESSKEY_REQUIRED": "Bidang wajib",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Bidang wajib"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Bidang wajib",
+			"VIDAOOAPIKEY_REQUIRED": "Bidang wajib"
 		},
 		"HELP": {
 			"AGENTIDENTIFIER": "Mewakili pengenal agen dalam sesi obrolan di cuplikan",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Perekaman Layar sedang berlangsung",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Unduh tanpa lampiran",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Unduh dengan lampiran",
-		"LASTMESSAGE": "Pesan Terakhir"
+		"LASTMESSAGE": "Pesan Terakhir",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Kunci Api Vidaoo",
+		"VIDAOOESCALATION": "Mulai Panggilan Video",
+		"VIDAOOSESSION": "Mulai Panggilan Video",
+		"VIDEO": "Video"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/it.json b/public/app/main/apps/chat/i18n/it.json
index a1c91fe..18be833 100644
--- a/public/app/main/apps/chat/i18n/it.json
+++ b/public/app/main/apps/chat/i18n/it.json
@@ -1,5 +1,8 @@
 {
 	"CHAT": {
+		"VIDAOOESCALATION": "Avvia videochiamata",
+		"VIDAOOAPIKEY": "Vidaoo Api Key",
+		"VIDAOOSESSION": "Avvia videochiamata",
 		"EDIT_AMAZONLEX": "Modifica Amazon Lex",
 		"AMAZONLEX": "Amazon Lex",
 		"ACCESSKEYID": "Access Key ID",
@@ -131,6 +134,7 @@
 		"FORWARDTRANSCRIPTMESSAGE": "Messaggio di inoltro della trascrizione",
 		"WEBSITESCRIPT": "Script",
 		"ERRORS": {
+			"VIDAOOAPIKEY_REQUIRED": "Campo obbligatorio",
 			"AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore deve essere maggiore o uguale a",
 			"AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a",
 			"AGENTTRANSFERTIMEOUT_REQUIRED": "Campo obbligatorio",
@@ -444,6 +448,8 @@
 		"TOOLTIP_SCREENRECORDING_OFF": "Registrazione dello schermo disponibile",
 		"TOOLTIP_SCREENRECORDING_ON": "Registrazione dello schermo in corso",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Scarica senza allegati",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Scarica con allegati"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Scarica con allegati",
+		"VIDAOO": "Vidaoo",
+		"VIDEO": "video"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/ja.json b/public/app/main/apps/chat/i18n/ja.json
index 9c4dc8c..8cab4c9 100644
--- a/public/app/main/apps/chat/i18n/ja.json
+++ b/public/app/main/apps/chat/i18n/ja.json
@@ -82,7 +82,8 @@
 			"ACCESSKEYID_REQUIRED": "必須フィールド",
 			"BOTNAME_REQUIRED": "必須フィールド",
 			"SECRETACCESSKEY_REQUIRED": "必須フィールド",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "必須フィールド"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "必須フィールド",
+			"VIDAOOAPIKEY_REQUIRED": "必須フィールド"
 		},
 		"HELP": {
 			"AUTOCLOSE": "エージェントは応じられない場合は、チャットセッションをアンマネージドとしてクローズする場合に有効にします。詳細はhttps://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippetをご覧ください。",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "スクリーン録画中",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "添付ファイルなしでダウンロード",
 		"DOWNLOAD_WITH_ATTACHMENTS": "添付ファイル付きでダウンロード",
-		"LASTMESSAGE": "最後のメッセージ"
+		"LASTMESSAGE": "最後のメッセージ",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo APIキー",
+		"VIDAOOESCALATION": "ビデオ通話を開始",
+		"VIDAOOSESSION": "ビデオ通話を開始",
+		"VIDEO": "ビデオ"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/ko.json b/public/app/main/apps/chat/i18n/ko.json
index d21e551..5e72977 100644
--- a/public/app/main/apps/chat/i18n/ko.json
+++ b/public/app/main/apps/chat/i18n/ko.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "필수 필드",
 			"BOTNAME_REQUIRED": "필수 필드",
 			"SECRETACCESSKEY_REQUIRED": "필수 필드",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "필수 필드"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "필수 필드",
+			"VIDAOOAPIKEY_REQUIRED": "필수 필드"
 		},
 		"CM_FIELD": "CM 필드",
 		"CHATPROACTIVEACTIONS": "채팅 사전 활동",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "화면 녹화 중",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "첨부 파일없이 다운로드",
 		"DOWNLOAD_WITH_ATTACHMENTS": "첨부 파일로 다운로드",
-		"LASTMESSAGE": "마지막 메시지"
+		"LASTMESSAGE": "마지막 메시지",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo API 키",
+		"VIDAOOESCALATION": "영상 통화 시작",
+		"VIDAOOSESSION": "영상 통화 시작",
+		"VIDEO": "비디오"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/lv.json b/public/app/main/apps/chat/i18n/lv.json
index 2d0006a..0d25d8b 100644
--- a/public/app/main/apps/chat/i18n/lv.json
+++ b/public/app/main/apps/chat/i18n/lv.json
@@ -82,7 +82,8 @@
 			"ACCESSKEYID_REQUIRED": "Obligāts lauks",
 			"BOTNAME_REQUIRED": "Obligāts lauks",
 			"SECRETACCESSKEY_REQUIRED": "Obligāts lauks",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Obligāts lauks"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Obligāts lauks",
+			"VIDAOOAPIKEY_REQUIRED": "Obligāts lauks"
 		},
 		"HELP": {
 			"KEY": "Tīmekļa vietnes īss nosaukums (piecas rakstzīmes), kas ir attēlots cilnē Aģenti",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Notiek ekrāna ierakstīšana",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Lejupielādējiet bez pielikumiem",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Lejupielādējiet ar pielikumiem",
-		"LASTMESSAGE": "Pēdējā ziņa"
+		"LASTMESSAGE": "Pēdējā ziņa",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo Api atslēga",
+		"VIDAOOESCALATION": "Sāciet videozvanu",
+		"VIDAOOSESSION": "Sāciet videozvanu",
+		"VIDEO": "Video"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/nl.json b/public/app/main/apps/chat/i18n/nl.json
index 8bbe48d..dae3733 100644
--- a/public/app/main/apps/chat/i18n/nl.json
+++ b/public/app/main/apps/chat/i18n/nl.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "Verplicht veld",
 			"BOTNAME_REQUIRED": "Verplicht veld",
 			"SECRETACCESSKEY_REQUIRED": "Verplicht veld",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Verplicht veld"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Verplicht veld",
+			"VIDAOOAPIKEY_REQUIRED": "Verplicht veld"
 		},
 		"CM_FIELD": "Contact Manager veld",
 		"CHATPROACTIVEACTIONS": "Proactieve acties",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Schermopname bezig",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download zonder bijlagen",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Download met bijlagen",
-		"LASTMESSAGE": "Laatste bericht"
+		"LASTMESSAGE": "Laatste bericht",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo Api-sleutel",
+		"VIDAOOESCALATION": "Start videogesprek",
+		"VIDAOOSESSION": "Start videogesprek",
+		"VIDEO": "Video"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/no.json b/public/app/main/apps/chat/i18n/no.json
index 0a5efed..baab532 100644
--- a/public/app/main/apps/chat/i18n/no.json
+++ b/public/app/main/apps/chat/i18n/no.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "Obligatoriske felt",
 			"BOTNAME_REQUIRED": "Obligatoriske felt",
 			"SECRETACCESSKEY_REQUIRED": "Obligatoriske felt",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Obligatoriske felt"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Obligatoriske felt",
+			"VIDAOOAPIKEY_REQUIRED": "Obligatoriske felt"
 		},
 		"CM_FIELD": "Kontakt leder",
 		"CHATPROACTIVEACTIONS": "Proaktive tiltak",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Skjermopptak pågår",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Last ned uten vedlegg",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Last ned med vedlegg",
-		"LASTMESSAGE": "Siste melding"
+		"LASTMESSAGE": "Siste melding",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo Api Key",
+		"VIDAOOESCALATION": "Start videosamtale",
+		"VIDAOOSESSION": "Start videosamtale",
+		"VIDEO": "video"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/pl.json b/public/app/main/apps/chat/i18n/pl.json
index 8d9ea04..e2a1490 100644
--- a/public/app/main/apps/chat/i18n/pl.json
+++ b/public/app/main/apps/chat/i18n/pl.json
@@ -160,7 +160,8 @@
 			"ACCESSKEYID_REQUIRED": "Pole obowiązkowe",
 			"BOTNAME_REQUIRED": "Pole obowiązkowe",
 			"SECRETACCESSKEY_REQUIRED": "Pole obowiązkowe",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pole obowiązkowe"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Pole obowiązkowe",
+			"VIDAOOAPIKEY_REQUIRED": "Pole obowiązkowe"
 		},
 		"CM_FIELD": "Pole Contact Manager",
 		"CHATPROACTIVEACTIONS": "Działania proaktywne",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Trwa nagrywanie ekranu",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Pobierz bez załączników",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Pobierz z załącznikami",
-		"LASTMESSAGE": "Ostatnia wiadomość"
+		"LASTMESSAGE": "Ostatnia wiadomość",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Klucz Vidaoo Api",
+		"VIDAOOESCALATION": "Rozpocznij rozmowę wideo",
+		"VIDAOOSESSION": "Rozpocznij rozmowę wideo",
+		"VIDEO": "Wideo"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/pt-BR.json b/public/app/main/apps/chat/i18n/pt-BR.json
index f064a68..36c247a 100644
--- a/public/app/main/apps/chat/i18n/pt-BR.json
+++ b/public/app/main/apps/chat/i18n/pt-BR.json
@@ -240,7 +240,8 @@
 			"WAITINGMESSAGE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
 			"WAITINGTITLE_MAX_LENGTH": "O valor deve ter um tamanho máximo igual a {{max}}",
 			"RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
+			"VIDAOOAPIKEY_REQUIRED": "Campo Obrigatório"
 		},
 		"CM_FIELD": "Contact Manager Field",
 		"CHATPROACTIVEACTIONS": "Ações proativas",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
-		"LASTMESSAGE": "Última mensagem"
+		"LASTMESSAGE": "Última mensagem",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo Api Key",
+		"VIDAOOESCALATION": "Iniciar videochamada",
+		"VIDAOOSESSION": "Iniciar videochamada",
+		"VIDEO": "Vídeo"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/pt-PT.json b/public/app/main/apps/chat/i18n/pt-PT.json
index cb4def8..325e070 100644
--- a/public/app/main/apps/chat/i18n/pt-PT.json
+++ b/public/app/main/apps/chat/i18n/pt-PT.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "Campo Obrigatório",
 			"BOTNAME_REQUIRED": "Campo Obrigatório",
 			"SECRETACCESSKEY_REQUIRED": "Campo Obrigatório",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obrigatório",
+			"VIDAOOAPIKEY_REQUIRED": "Campo Obrigatório"
 		},
 		"CM_FIELD": "Campo Contact Manager",
 		"CHATPROACTIVEACTIONS": "Ações proativas",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
-		"LASTMESSAGE": "Última mensagem"
+		"LASTMESSAGE": "Última mensagem",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo Api Key",
+		"VIDAOOESCALATION": "Iniciar videochamada",
+		"VIDAOOSESSION": "Iniciar videochamada",
+		"VIDEO": "Vídeo"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/ru.json b/public/app/main/apps/chat/i18n/ru.json
index e1cb607..e2969f1 100644
--- a/public/app/main/apps/chat/i18n/ru.json
+++ b/public/app/main/apps/chat/i18n/ru.json
@@ -1,104 +1,104 @@
 {
 	"CHAT": {
-		"AMAZONLEX": "Сервис Amazon Lex",
+		"AMAZONLEX": "Amazon Lex",
 		"TEXT": "Текст",
-		"TIMES": "Количество раз за взаимодействие",
-		"EDIT_AUTOREPLY": "Редактирование автоответчика",
-		"AUTOREPLY": "Автоответчик",
-		"NEW_CHATDISPOSITION": "Новая диспозиция чата",
-		"ENABLECUSTOMERATTACHMENT": "Разрешить клиентам прикреплять и отправлять файлы как вложения",
-		"OFFLINE_CHAT_BUTTON": "Кнопка «Автономный чат»",
-		"OFFLINESTATUS": "Статус офлайн",
+		"TIMES": "Количество раз в взаимодействие",
+		"EDIT_AUTOREPLY": "Редактировать автоматический ответ",
+		"AUTOREPLY": "Автоматический ответ",
+		"NEW_CHATDISPOSITION": "Новый чат распоряжения",
+		"ENABLECUSTOMERATTACHMENT": "Разрешить вложения клиента",
+		"OFFLINE_CHAT_BUTTON": "\"Offline Чат'",
+		"OFFLINESTATUS": "Состояние \"автономный",
 		"NAME": "Имя",
-		"CHATQUEUES": "Очереди чатов",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"CHATQUEUES": "Очереди чата",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"STRATEGY": "Стратегия",
-		"AGENT_TIMEOUT": "Тайм-аут агента",
+		"AGENT_TIMEOUT": "Время ожидания оператора",
 		"DESCRIPTION": "Описание",
 		"KEY": "Ключ",
-		"ALIAS": "Алиас",
+		"ALIAS": "Псевдоним",
 		"VARIABLE": "Переменная",
 		"INTERVAL": "Интервал",
 		"EDIT_CLOSE": "Редактировать Закрыть",
 		"TIMEZONE": "Часовой пояс",
 		"MESSAGE": "Сообщение",
-		"ADVANCED": "Продвинутый",
-		"FORWARDTRANSCRIPT": "Переслать расшифровку",
-		"FORWARDTRANSCRIPTMESSAGE": "Переслать сообщение с расшифровкой",
-		"SKIPMESSAGEBUTTON": "Кнопка «Пропустить сообщение»",
+		"ADVANCED": "Расширенный",
+		"FORWARDTRANSCRIPT": "Вперед, Стенограмма",
+		"FORWARDTRANSCRIPTMESSAGE": "Вперед сообщение транскрипта",
+		"SKIPMESSAGEBUTTON": "Пропустить сообщение\"",
 		"EDIT_MESSAGE": "Редактировать сообщение",
-		"CONDITION_AGREEMENT": "Соглашение об условиях",
-		"NONE": "Отсутствуют",
+		"CONDITION_AGREEMENT": "Состояние Соглашения",
+		"NONE": "Ни один",
 		"PRIORITY": "Приоритет",
 		"ONLINESTATUS": "Статус онлайн",
-		"UNMANAGEDSTATUS": "Неконтролируемое состояние",
-		"AUTOCLOSE": "Включить автоматическое закрытие",
-		"ENABLEUNMANAGEDNOTE": "Включить функцию «Сообщения не контролируются»",
+		"UNMANAGEDSTATUS": "Неуправляемое состояние",
+		"AUTOCLOSE": "Autoclose включить",
+		"ENABLEUNMANAGEDNOTE": "Включить неуправляемые сообщение",
 		"UNMANAGEDMESSAGE": "Сообщение",
 		"SKIPUNMANAGED": "Пропустить сообщение",
 		"SENDUNMANAGED": "Отправить сообщение",
-		"WEBSITESCRIPT": "Скрипт для сайта",
+		"WEBSITESCRIPT": "Скрипт сайта",
 		"DELETE_OFFLINEMESSAGE": "Удалить",
-		"OFFLINEMESSAGES": "Офлайн-сообщения",
-		"FORWARD_OFFLINE": "Переслать офлайн",
+		"OFFLINEMESSAGES": "Offline сообщений",
+		"FORWARD_OFFLINE": "Вперед в автономном режиме",
 		"SHOW_OFFLINEMESSAGE": "Показать",
-		"FORWARD_OFFLINE_ADDRESS": "Переслать адрес офлайн",
+		"FORWARD_OFFLINE_ADDRESS": "Вперед Offline Address",
 		"CLOSINGFORM": "Закрытие формы",
-		"ENABLERATING": "Включить рейтинг",
-		"ENABLECUSTOMERWRITING": "Включить возможность писать для клиента до принятия агента",
-		"ENABLEFEEDBACK": "Включить возможность отправки отзыва",
-		"RATINGTYPE": "Тип рейтинга",
-		"CLOSINGMESSAGE": "Закрытие сообщения",
-		"CLOSINGMESSAGEBUTTON": "Кнопка закрытия сообщения",
-		"RATINGSTARSNUMBER": "Номер: звездный рейтинг",
-		"EDIT_GOTOIF": "Редактировать GotoIf",
-		"CONDITION": "Условие",
+		"ENABLERATING": "Чтобы Рейтинг",
+		"ENABLECUSTOMERWRITING": "Разрешить клиенту письменной форме до агент принимает",
+		"ENABLEFEEDBACK": "Чтобы Обратная связь",
+		"RATINGTYPE": "Рейтинг Тип",
+		"CLOSINGMESSAGE": "Закрыть сообщение",
+		"CLOSINGMESSAGEBUTTON": "Закрыть сообщение",
+		"RATINGSTARSNUMBER": "Рейтинг звезд, число",
+		"EDIT_GOTOIF": "GotoIf редактировать",
+		"CONDITION": "Состояние",
 		"TRUEPRIORITY": "Истинный приоритет",
 		"FALSEPRIORITY": "Ложный приоритет",
 		"VALUE": "Значение",
-		"WEBSITEALIAS": "Алиас сайта",
+		"WEBSITEALIAS": "Сайт Alias",
 		"ERRORS": {
-			"TEXT_REQUIRED": "Обязательное поле",
-			"SENDUNMANAGED_REQUIRED": "Обязательное поле",
-			"SENDUNMANAGED_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
-			"SKIPUNMANAGED_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
-			"UNMANAGEDMESSAGE_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
-			"WEBSITEALIAS_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
-			"AGENT_REQUIRED": "Обязательное поле",
-			"QUEUE_REQUIRED": "Обязательное поле",
-			"CONDITION_REQUIRED": "Обязательное поле",
-			"PRIORITY_REQUIRED": "Обязательное поле",
-			"TRUEPRIORITY_REQUIRED": "Обязательное поле",
-			"FALSEPRIORITY_REQUIRED": "Обязательное поле",
-			"NAME_REQUIRED": "Обязательное поле",
-			"LIST_REQUIRED": "Обязательное поле",
-			"AGENT_TIMEOUT_REQUIRED": "Обязательное поле",
-			"MOTIONADDRESS_REQUIRED": "Обязательное поле",
-			"DISPOSITION_REQUIRED": "Обязательное поле",
-			"MOTIONADDRESS_MUST_VALID_URL": "Неверный формат",
-			"EMAIL_MUST_BE_VALID": "Неверный формат",
-			"ADDRESS_REQUIRED": "Обязательное поле",
-			"ADDRESS_MUST_VALID_URL": "Неверный формат",
-			"ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Обязательное поле",
-			"ACCEPTURL_MUST_VALID_URL": "Неверный формат",
-			"TIMEOUT_REQUIRED": "Обязательное поле",
-			"REJECTURL_MUST_VALID_URL": "Неверный формат",
-			"CLOSEURL_MUST_VALID_URL": "Неверный формат",
-			"PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Значение должно быть больше или равно",
-			"TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Значение должно быть больше или равно",
-			"FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Значение должно быть больше или равно",
-			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Значение должно быть больше или равно",
-			"POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": " Значение должно быть больше или равно",
-			"WAITINGMESSAGE_REQUIRED": "Обязательное поле",
-			"WAITINGTITLE_REQUIRED": "Обязательное поле",
-			"KEY_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
-			"KEY_REQUIRED": "Обязательное поле",
-			"WAITINGMESSAGE_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
-			"WAITINGTITLE_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
-			"RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"HEADER_OFFLINE_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
-			"OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
-			"CLOSINGQUESTION_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
+			"TEXT_REQUIRED": "Текст не требуется",
+			"SENDUNMANAGED_REQUIRED": "Поле является обязательным",
+			"SENDUNMANAGED_MAX_LENGTH": "Поле должно иметь максимальную длину равную {{max}}",
+			"SKIPUNMANAGED_MAX_LENGTH": "Поле должно иметь максимальную длину равную {{max}}",
+			"UNMANAGEDMESSAGE_MAX_LENGTH": "Поле должно иметь максимальную длину равную {{max}}",
+			"WEBSITEALIAS_MAX_LENGTH": "Псевдоним должен иметь максимальную длину равную {{max}}",
+			"AGENT_REQUIRED": "Агент обязан",
+			"QUEUE_REQUIRED": "Очереди не требуется",
+			"CONDITION_REQUIRED": "Это состояние требует",
+			"PRIORITY_REQUIRED": "Приоритет не требуется",
+			"TRUEPRIORITY_REQUIRED": "Приоритет не требуется",
+			"FALSEPRIORITY_REQUIRED": "Приоритет не требуется",
+			"NAME_REQUIRED": "Это имя требуется",
+			"LIST_REQUIRED": "Список не требуется",
+			"AGENT_TIMEOUT_REQUIRED": "Оператор - тайм-аут требуется",
+			"MOTIONADDRESS_REQUIRED": "Движение адрес не требуется",
+			"DISPOSITION_REQUIRED": "Распоряжения не требуется",
+			"MOTIONADDRESS_MUST_VALID_URL": "Движение адрес должен быть записан в действительный формат",
+			"EMAIL_MUST_BE_VALID": "Адрес электронной почты должен быть действительный адрес электронной почты",
+			"ADDRESS_REQUIRED": "Адрес не требуется",
+			"ADDRESS_MUST_VALID_URL": "Этот адрес должен быть записан в действительный формат",
+			"ENQUIRY_FORWARDING_ADDRESS_REQUIRED": "Запрос адреса для пересылки не требуется",
+			"ACCEPTURL_MUST_VALID_URL": "Принять URL должен быть записан в действительный формат",
+			"TIMEOUT_REQUIRED": "Тайм-аут не требуется",
+			"REJECTURL_MUST_VALID_URL": "Отклонить URL должен быть записан в действительный формат",
+			"CLOSEURL_MUST_VALID_URL": "Закрыть адрес URL должен быть записан в действительный формат",
+			"PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Первоочередной задачей должно быть больше или равно",
+			"TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Истинный приоритет должен быть больше или равен",
+			"FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ложные приоритетной задачей должно быть больше или равно",
+			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Тайм-аута должно быть больше или равно",
+			"POLLING_INTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Избирательных должно быть больше или равно",
+			"WAITINGMESSAGE_REQUIRED": "Ожидание требуется сообщение",
+			"WAITINGTITLE_REQUIRED": "Ожидание необходимо указать заголовок",
+			"KEY_MAX_LENGTH": "Ключ должен иметь максимальную длину равную {{max}}",
+			"KEY_REQUIRED": "Ключ не требуется",
+			"WAITINGMESSAGE_MAX_LENGTH": "Ожидающие сообщения должны иметь максимальную длину равную {{max}}",
+			"WAITINGTITLE_MAX_LENGTH": "Ожидание заголовок должен иметь максимальную длину равную {{max}}",
+			"RATINGSTARSNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Рейтинг звезд, номер должен быть меньше или равен",
+			"HEADER_OFFLINE_MAX_LENGTH": "Значение должно иметь максимальную длину равную {{max}}",
+			"OFFLINE_CHAT_BUTTON_MAX_LENGTH": "Значение должно иметь максимальную длину равную {{max}}",
+			"CLOSINGQUESTION_MAX_LENGTH": "Значение должно иметь максимальную длину равную {{max}}",
 			"TEXT_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
 			"VALUE_REQUIRED": "Обязательное поле",
 			"OFFLINEMESSAGESUBJECT_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
@@ -138,312 +138,318 @@
 			"ACCESSKEYID_REQUIRED": "Обязательное поле",
 			"BOTNAME_REQUIRED": "Обязательное поле",
 			"SECRETACCESSKEY_REQUIRED": "Обязательное поле",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Обязательное поле"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Обязательное поле",
+			"VIDAOOAPIKEY_REQUIRED": "Обязательное поле"
 		},
-		"CM_FIELD": "Поле менеджера контактов",
-		"CHATPROACTIVEACTIONS": "Проактивные действия",
-		"NEW_CHATPROACTIVEACTION": "Новое проактивное действие",
-		"EDIT_CHATPROACTIVEACTION": "Редактирование проактивного действия",
-		"DELETE_CHATPROACTIVEACTION": "Удалить проактивное действие",
-		"ADD_CHATPROACTIVEACTION": "Добавление проактивного действия",
-		"NO_CHATPROACTIVEACTION_AVAILABLE": "Проактивные действия отсутствуют",
-		"NO_OFFLINEMESSAGE_AVAILABLE": "Офлайн-сообщения отсутствуют",
-		"MOUSEOVER": "Мышь над элементом",
-		"TIMEOUT": "Тайм-аут",
+		"CM_FIELD": "Контактное поле Менеджер",
+		"CHATPROACTIVEACTIONS": "Профилактические меры",
+		"NEW_CHATPROACTIVEACTION": "Новой активной деятельности",
+		"EDIT_CHATPROACTIVEACTION": "Изменение активного действия",
+		"DELETE_CHATPROACTIVEACTION": "Удаление активных действий",
+		"ADD_CHATPROACTIVEACTION": "Добавить активный действий",
+		"NO_CHATPROACTIVEACTION_AVAILABLE": "Никаких активных мер",
+		"NO_OFFLINEMESSAGE_AVAILABLE": "Нет Оффлайн Сообщений",
+		"MOUSEOVER": "Наведите курсор мыши на",
+		"TIMEOUT": "Превышение лимита времени",
 		"TYPE": "Тип",
 		"SELECTOR": "Селектор",
-		"AGENT": "Агент",
-		"GOTO": "Перейти к",
-		"GOTOIF": "Переход по условию / GotoIf",
+		"AGENT": "Оператор",
+		"GOTO": "Goto",
+		"GOTOIF": "GotoIf",
 		"NOOP": "Noop",
-		"QUEUE": "Очередь",
-		"BUILDER": "Строитель",
+		"QUEUE": "Очереди",
+		"BUILDER": "Конструктор условий",
 		"PREVIEW": "Предварительный просмотр",
-		"EDIT_AGENT": "Редактировать агента",
-		"EDIT_QUEUE": "Редактировать очередь",
-		"EDIT_GOTO": "Редактировать Перейти к",
-		"EDIT_GOTOIf": "Редактировать GotoIf",
-		"EDIT_NOOP": "Редактировать Noop",
-		"ADD_CHATQUEUE": "Добавление очереди чатов",
-		"EDIT_CHATQUEUE": "Редактирование очереди чатов",
-		"DELETE_CHATQUEUE": "Удалить очередь чатов",
+		"EDIT_AGENT": "Редактирование оператора",
+		"EDIT_QUEUE": "Редактирования очереди",
+		"EDIT_GOTO": "Редактировать Goto",
+		"EDIT_GOTOIf": "Редактировать GotoIf",
+		"EDIT_NOOP": "Редактировать Noop",
+		"ADD_CHATQUEUE": "Добавить Чат очереди",
+		"EDIT_CHATQUEUE": "Редактировать очереди чата",
+		"DELETE_CHATQUEUE": "Удалить очереди чата",
 		"SETTINGS": "Настройки",
 		"SAVE": "Сохранить",
-		"SCRIPT": "Скрипт",
-		"TOKEN": "Токен",
-		"CREATED_AT": "Создано на",
-		"CHATWEBSITES": "Чат-сайты",
-		"MOTIONADDRESS": "Домен сайта",
-		"MOTIONPROXY": "Прокси или домен Motion",
-		"ADD_CHATWEBSITE": "Добавить чат-сайт",
-		"EDIT_CHATWEBSITE": "Изменить чат-сайт",
-		"DELETE_CHATWEBSITE": "Удалить чат-сайт",
+		"SCRIPT": "Сценарий",
+		"TOKEN": "Знак",
+		"CREATED_AT": "Созданные в",
+		"CHATWEBSITES": "Чат сайты",
+		"MOTIONADDRESS": "Адрес движения",
+		"MOTIONPROXY": "Прокси-сервер или Движение доменных",
+		"ADD_CHATWEBSITE": "Добавить сайт чата",
+		"EDIT_CHATWEBSITE": "Редактировать сайт чата",
+		"DELETE_CHATWEBSITE": "Удалить сайт чата",
 		"LIST": "Список",
-		"SNIPPET": "Фрагмент",
+		"SNIPPET": "Фрагмент кода",
 		"FORMS": "Формы",
 		"UP": "Вверх",
 		"DOWN": "Вниз",
 		"COLLAPSE": "Свернуть",
-		"PROACTIVEACTIONS": "Проактивные действия",
-		"DISPOSITIONS": "Диспозиции",
+		"PROACTIVEACTIONS": "Профилактические меры",
+		"DISPOSITIONS": "Распоряжения",
 		"WEBHOOKS": "WebHooks",
 		"ACTIONS": "Действия",
-		"FIDELITY": "Точность",
+		"FIDELITY": "Четкость",
 		"APPEARANCE": "Внешний вид",
 		"MAINCOLOR": "Основной цвет",
-		"FOCUSCOLOR": "Цвет: фокус",
-		"BUTTONCOLOR": "Цвет: кнопка",
-		"HEADERSHAPE": "Форма заголовка",
+		"FOCUSCOLOR": "Цвет фокуса",
+		"BUTTONCOLOR": "Цвет кнопки",
+		"HEADERSHAPE": "Форма жатки",
 		"ANIMATION": "Анимация",
 		"DEFAULT": "По умолчанию",
-		"WHITELABEL": "White Label",
+		"WHITELABEL": "На этикетке белого цвета",
 		"LOGO": "Логотип",
-		"DOWNLOADTRANSCRIPT": "Скачать расшифровку",
-		"ENQUIRY_ENABLE": "Включение запроса",
-		"ENQUIRY_FORWARDING": "Переадресация запроса",
-		"ENQUIRY_FORWARDING_ADDRESS": "Адрес для переадресации запроса",
-		"LABELS": "Метки",
-		"HEADER_ONLINE": "Заголовок онлайн",
-		"ONLINE_MESSAGE": "Сообщение онлайн",
-		"NAME_TITLE": "Метка для ввода имени",
-		"USERNAME_PLACEHOLDER": "Заполнитель для ввода имени пользователя",
-		"EMAIL_TITLE": "Метка для ввода адреса электронной почты",
-		"EMAIL_PLACEHOLDER": "Заполнитель для ввода адреса электронной почты",
-		"START_CHAT_BUTTON": "Кнопка «Начать чат»",
-		"AGENTS_BUSY": "Сообщение при занятых агентах",
-		"HEADER_OFFLINE": "Заголовок офлайн",
-		"OFFLINE_MESSAGE": "Сообщение офлайн",
-		"MESSAGE_TITLE": "Метка сообщения",
-		"ENQUIRY_MESSAGE_PLACEHOLDER": "Заполнитель для ввода сообщения-запроса",
-		"ENQUIRY_BUTTON": "Текст кнопки «Запрос»",
-		"RATING_MESSAGE": "Рейтинг сообщения",
-		"RATING_SEND": "Рейтинг, текст кнопки «Отправить»",
-		"RATING_SKIP": "Рейтинг, текст кнопки «Пропустить»",
-		"ONLINE": "Онлайн",
-		"OFFLINE": "Офлайн",
-		"PROACTIVE": "Проактивные",
-		"ACCEPT": "Принять",
+		"DOWNLOADTRANSCRIPT": "Загрузить текст беседы",
+		"ENQUIRY_ENABLE": "Запрос включения",
+		"ENQUIRY_FORWARDING": "Запрос переадресации вызовов",
+		"ENQUIRY_FORWARDING_ADDRESS": "Запрос адреса для пересылки",
+		"LABELS": "Наклейки",
+		"HEADER_ONLINE": "Онлайн жатки",
+		"ONLINE_MESSAGE": "Сообщение в Интернете",
+		"NAME_TITLE": "Ввод имени метки",
+		"USERNAME_PLACEHOLDER": "Имя пользователя входной заполнитель",
+		"EMAIL_TITLE": "Входной электронной почты наклейки",
+		"EMAIL_PLACEHOLDER": "Входной электронной почты заполнитель",
+		"START_CHAT_BUTTON": "'Start чат\"",
+		"AGENTS_BUSY": "Занят агентов сообщение",
+		"HEADER_OFFLINE": "Жатки в автономном режиме",
+		"OFFLINE_MESSAGE": "Сообщение в автономном режиме",
+		"MESSAGE_TITLE": "Обозначение сообщения",
+		"ENQUIRY_MESSAGE_PLACEHOLDER": "Сообщение запроса входной заполнитель",
+		"ENQUIRY_BUTTON": "Расследованию текст кнопки",
+		"RATING_MESSAGE": "Рейтинг сообщение",
+		"RATING_SEND": "Рейтинг отправить текст кнопки",
+		"RATING_SKIP": "Рейтинг пропустить текст кнопки",
+		"ONLINE": "В режиме онлайн",
+		"OFFLINE": "В автономном режиме",
+		"PROACTIVE": "Proactive",
+		"ACCEPT": "Согласиться с",
 		"ACCEPTMETHOD": "Принять метод",
-		"ACCEPTURL": "Принять URL",
+		"ACCEPTURL": "Согласиться с URL",
 		"REJECT": "Отклонить",
 		"REJECTMETHOD": "Отклонить метод",
-		"REJECTURL": "Отклонить URL",
+		"REJECTURL": "Отклонить URL",
 		"CLOSE": "Закрыть",
-		"CLOSEMETHOD": "Закрыть метод",
-		"CLOSEURL": "Закрыть URL",
-		"EMBEDDING": "Встраивание",
-		"GENERAL": "Общие",
+		"CLOSEMETHOD": "Закройте метод",
+		"CLOSEURL": "Закрыть URL",
+		"EMBEDDING": "Внедрение",
+		"GENERAL": "Генеральной",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
+		"SELECT_NONE": "Выберите пункт None",
 		"BACK": "Назад",
 		"HELP": {
-			"MAPKEY": "Следующее поле менеджера контактов Motion:",
-			"FROMKEY": "будет отображаться в вашем фрагменте чата Motion в виде:",
-			"TOKEN": "Автоматически сгенерированный токен, используемый в скрипте",
-			"COPYSCRIPTTOCLIPBOARD": "Копировать и вставить текст скрипта на свой сайт",
-			"FORWARD_OFFLINE": "Вы можете добавить несколько адресов электронной почты, разделенных запятыми (например, [email-masked], [email-masked])",
-			"MOTIONADDRESS": "Поле должно иметь следующий формат: <protocol>://<ipaddress>[:<port>]. Пример: https://X.Y.Z.W",
-			"MOTIONPROXY": "Поле должно иметь следующий формат: <protocol>://<ipaddress>[:<port>]. Пример: https://X.Y.Z.W",
-			"NAME": "Поддерживаются только цифры, буквы и специальные символы (._)",
-			"LIST": "Список менеджера контактов, используемый для ассоциирования контактов",
-			"KEY": "Короткое имя сайта (5 символов) отображается на вкладке «Агент»",
+			"MAPKEY": "Следующее Движение Contact Manager:",
+			"FROMKEY": "Будет отображен в вашем движении Чат отрывок:",
+			"TOKEN": "Движение сайта знак",
+			"COPYSCRIPTTOCLIPBOARD": "Скопировать и вставить в сценарий в ваш сайт",
+			"FORWARD_OFFLINE": "Вы можете добавить несколько адресов с помощью запятыми (например, [email-masked] [email-masked])",
+			"MOTIONADDRESS": "Пожалуйста, введите в следующем формате: &LT;протокола&GT;://<ipaddress&GT;[:<порт&GT;]. Пример: https://X.Y.Z.W",
+			"MOTIONPROXY": "Пожалуйста, введите в следующем формате: &LT;протокола>://<ipaddress>[:<порт>]. Пример: https://X.Y.Z.W",
+			"NAME": "Только цифры, буквы и специальные символы (_) поддерживаются",
+			"LIST": "Contact Manager список используется для связи контакты",
+			"KEY": "Сайт короткое имя (5 знаков) на вкладку Операторы",
 			"INTEVAL": "Выбирается из списка доступных интервалов",
-			"TIMEZONE": "Выбрать одну из списка (по умолчанию = местный часовой пояс)",
-			"ENABLERATING": "Включите данную функцию, если хотите, чтобы у посетителя сайта в конце была возможность оценить взаимодействие",
-			"ENABLEFEEDBACK": "Включите данную функцию, если хотите, чтобы у посетителя сайта в конце была возможность отправить отзыв (до 150 символов)",
-			"FORWARDTRANSCRIPT": "Включите данную функцию, если хотите, чтобы посетителю сайта был задан вопрос относительно возможности получения расшифровки чата по электронной почте",
-			"AUTOCLOSE": "Включите данную функцию, если хотите, чтобы сессии чата закрывались, когда чат не контролируется в случае, если доступный агент отсутствует. Получите дополнительную информацию по ссылке: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-			"ENABLEUNMANAGEDNOTE": "Включите данную функцию, если хотите, чтобы посетителю было показано сообщение в связи с тем, что все агенты заняты и чат перестает контролироваться",
-			"ENABLECUSTOMERWRITING": " Включите данную функцию, если хотите, чтобы чат начинался без ожидания доступного агента (обратите внимание: если включить функцию, чаты будут всегда контролироваться). Получите дополнительную информацию по ссылке: https://wiki.xcallymotion.com/display/XMV/Chat+Websites#ChatWebsites-Snippet",
-			"INTERVAL": "Выберите один из списка",
-			"HIDEWHENOFFLINE": "Скрывает фрагмент в режиме офлайн",
-			"AGENTIDENTIFIER": "Представляет собой идентификатор агента в рамках сессии чата во фрагменте",
-			"WEBSITEALIAS": "Префикс, используемый для составления имени агента (префикс + идентификатор агента); показывается посетителю сайта во время сессии чата",
-			"VERTICALPOSITION": "Представляет собой расстояние в процентах от верха",
-			"WELCOMEMESSAGE": "Оставьте пустым, если не хотите отправлять приветственное сообщение",
-			"MANDATORYDISPOSITION": "Обязательная диспозиция",
-			"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования в случае включения обязательной диспозиции"
+			"TIMEZONE": "Выберите из списка (по умолчанию=местного часового пояса)",
+			"ENABLERATING": "Чтобы он, если вы хотите, чтобы веб-посетитель может оценить взаимодействие в конце",
+			"ENABLEFEEDBACK": "Чтобы он, если вы хотите, чтобы веб-посетитель может отправить отзыв (до 150 символов) в конце",
+			"FORWARDTRANSCRIPT": "Чтобы он, если вы хотите, чтобы веб-посетитель должен получить транскрипта чата по электронной почте",
+			"AUTOCLOSE": "Чтобы он, если вы хотите, сеансы чата будет закрыт, как неуправляемый, если оператор свободен. Подробнее об этом можно узнать по адресу: https://wiki.xcallymotion.com/display/XMV/Chat Сайты#ЧатWebsites-Snippet",
+			"ENABLEUNMANAGEDNOTE": "Чтобы он, если вы хотите, чтобы посетитель отображается сообщение, если все операторы заняты и чата становится неуправляемой",
+			"ENABLECUSTOMERWRITING": "Чтобы он, если вы хотите, чтобы чат начинает, не дожидаясь доступного оператора (обратите внимание: если включить его, вашим чаты никогда не получите неуправляемый). Подробнее на сайте: https://wiki.xcallymotion.com/display/XMV/Chat Сайты#ЧатWebsites-Snippet",
+			"INTERVAL": "Выберите из списка",
+			"HIDEWHENOFFLINE": "Скрывает фрагмент, когда он отключен",
+			"AGENTIDENTIFIER": "Представляет идентификатор агента в сеансе чата в фрагменте",
+			"WEBSITEALIAS": "Префикс используется для создания \"Имя оператора\" (префикс Идентификатор оператора), как показано на веб-посетитель во время сеанса чата",
+			"VERTICALPOSITION": "Представляет расстояние в процентах от вершины",
+			"WELCOMEMESSAGE": "Оставьте пустым, если вы не хотите отправлять приветственное сообщение",
+			"MANDATORYDISPOSITION": "Обязательное распоряжение",
+			"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования, если включена обязательная утилизация"
 		},
 		"ADDRESS": "Адрес",
-		"ONLINESTATE": "Статус онлайн",
-		"OFFLINESTATE": "Статус офлайн",
-		"RATINGSTATE": "Рейтинг: состояние",
-		"ENQUIRY": "Запрос",
-		"OFFLINETEMPLATE": "Шаблон: офлайн",
-		"CHATDISPOSITIONS": "Диспозиции чатов",
-		"NO_CHATDISPOSITION_AVAILABLE": "Диспозиции чатов отсутствуют",
-		"ADD_CHATDISPOSITION": "Добавление диспозиции чата",
+		"ONLINESTATE": "Государство через Интернет",
+		"OFFLINESTATE": "Государство в автономном режиме",
+		"RATINGSTATE": "Рейтинг государства",
+		"ENQUIRY": "Расследованию",
+		"OFFLINETEMPLATE": "Шаблон в автономном режиме",
+		"CHATDISPOSITIONS": "Распоряжения чата",
+		"NO_CHATDISPOSITION_AVAILABLE": "Нет чат ликвидаций имеющихся",
+		"ADD_CHATDISPOSITION": "Добавить Чат распоряжения",
 		"DELETE": "Удалить",
-		"EDIT_CHATDISPOSITION": "Редактирование диспозиции чата",
-		"DELETE_CHATDISPOSITION": "Удалить диспозицию чата",
+		"EDIT_CHATDISPOSITION": "Редактирование результата чата",
+		"DELETE_CHATDISPOSITION": "Удалить чат распоряжения",
 		"CHAT": "Чат",
-		"ID": "Идентификатор",
-		"NEW_CHATQUEUE": "Новая очередь чатов",
-		"NEW_CHATWEBSITE": "Новый чат-сайт",
-		"ROUNDED": "Закругленный",
-		"SQUARED": "Квадратный",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"ALL_TEAMS": "Все команды",
-		"SELECTED_TEAMS": "Избранные команды",
+		"ID": "Id",
+		"NEW_CHATQUEUE": "Новый чат очереди",
+		"NEW_CHATWEBSITE": "Новый сайт чата",
+		"ROUNDED": "Скругленные",
+		"SQUARED": "В квадрате",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"ALL_TEAMS": "Все группы",
+		"SELECTED_TEAMS": "Выбранные группы",
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"CONTACT": "Контакт",
-		"STARTEDAT": "Начато в",
+		"OF": "В",
+		"CONTACT": "Контакты",
+		"STARTEDAT": "Началась в",
 		"STATUS": "Состояние",
-		"CLOSED": "Закрытые",
+		"CLOSED": "Закрыт",
 		"OPENED": "Открыть",
 		"OPEN": "Открыть",
-		"ACCOUNT": "Учетная запись",
+		"ACCOUNT": "Внимание",
 		"INTERACTION": "Взаимодействие",
-		"INTERACTIONS": "Взаимодействия",
-		"WEBSITE": "Сайт",
+		"INTERACTIONS": "Взаимодействие",
+		"WEBSITE": "Веб-сайт",
 		"ALL": "Все",
-		"SELECT_STATUS": "Выбрать статус",
+		"SELECT_STATUS": "Выберите состояние",
 		"FILTER": "Фильтр",
 		"FILTERS": "Фильтры",
-		"TEAMADD_CHATQUEUE": "Добавить команду к очереди чатов",
-		"AGENTADD_CHATQUEUE": "Добавить агента к очереди чатов",
-		"ALL_AGENTS": "Все агенты",
-		"SELECTED_AGENTS": "Выбранные агенты",
-		"CLOSEDAT": "Закрыто в",
-		"DISPOSITION": "Диспозиция",
-		"CREATEDAT": "Создано на",
+		"TEAMADD_CHATQUEUE": "Добавить группы по очереди Чат",
+		"AGENTADD_CHATQUEUE": "Добавить оператора в чат очереди",
+		"ALL_AGENTS": "Все операторы",
+		"SELECTED_AGENTS": "Выбранные операторы",
+		"CLOSEDAT": "Закрыт",
+		"DISPOSITION": "Отчуждения",
+		"CREATEDAT": "Созданный на",
 		"NOTES": "Примечания",
-		"NO_INTERACTION_AVAILABLE": "Взаимодействия отсутствуют",
-		"SELECTED_WEBSITE": "Выбрать сайт",
+		"NO_INTERACTION_AVAILABLE": "Нет доступных взаимодействий",
+		"SELECTED_WEBSITE": "Выберите веб-сайт",
 		"GOTOP": "Gotop",
-		"EDIT_GOTOP": "Редактировать Gotop",
-		"SELECT_WEBSITE": "Выбрать сайт",
-		"INFO": "Информация",
-		"OFFLINEMESSAGES_CHATWEBSITE": "Перейти к сообщениям офлайн",
-		"WAITINGTITLE": "Ожидание: заголовок",
-		"WAITINGMESSAGE": "Ожидание: сообщение",
+		"EDIT_GOTOP": "Gotop редактировать",
+		"SELECT_WEBSITE": "Выберите веб-сайт",
+		"INFO": "Инфо",
+		"OFFLINEMESSAGES_CHATWEBSITE": "Перейдите в режим Offline сообщений",
+		"WAITINGTITLE": "Свободные Название",
+		"WAITINGMESSAGE": "Свободные сообщение",
 		"RATING": "Рейтинг",
-		"NO_RATINGVALUE": "Рейтинг отсутствует",
-		"AGENTSADD_QUEUE": "Добавить агента к очереди чатов",
-		"QUEUES": "Очереди",
-		"LOGGED_IN": "Зарегистрирован в системе",
-		"PAUSED": "Поставлен на паузу",
+		"NO_RATINGVALUE": "Нет рейтинга",
+		"AGENTSADD_QUEUE": "Добавить оператора в чат очереди",
+		"QUEUES": "Очередей",
+		"LOGGED_IN": "Вход в систему",
+		"PAUSED": "Приостановлено",
 		"READY": "Готов",
-		"WAITING": "Ожидание",
-		"WRITING": "Письмо",
-		"MAIL": "Электронная почта",
+		"WAITING": "Свободные",
+		"WRITING": "Запись",
+		"MAIL": "Почта",
 		"SMS": "SMS",
-		"OPENCHANNEL": "Открытый канал",
+		"OPENCHANNEL": "Openchannel",
 		"FAX": "Факс",
 		"PAUSE": "Пауза",
-		"REALTIME": "Режим реального времени",
+		"REALTIME": "В режиме реального времени",
 		"AGENTS": "Агенты",
 		"FULLNAME": "Полное имя",
-		"INTERNAL": "Внутренний",
+		"INTERNAL": "Внутренние",
 		"PHONE_STATE": "Состояние телефона",
-		"PHONE_STATUS": "Статус телефона",
-		"LOGOUT": "Выход",
-		"UNPAUSE": "Конец паузы",
-		"AGENTADD_QUEUE": "Добавить агента к очереди чатов",
-		"DEFAULT_PAUSE": "Пауза по умолчанию",
+		"PHONE_STATUS": "Состояние телефона",
+		"LOGOUT": "Выход из системы",
+		"UNPAUSE": "Конец Пауза",
+		"AGENTADD_QUEUE": "Добавить оператора в чат очереди",
+		"DEFAULT_PAUSE": "По умолчанию пауза",
 		"UNKNOWN": "Неизвестно",
-		"UNREGISTERED": "Не зарегистрирован",
-		"UNAVAILABLE": "Отсутствует",
-		"NOT_INUSE": "Не используется",
-		"REACHABLE": "Достижимые",
-		"IN_USE": "Используется",
+		"UNREGISTERED": "Незарегистрированный",
+		"UNAVAILABLE": "Недоступен",
+		"NOT_INUSE": "Не используется",
+		"REACHABLE": "Добраться",
+		"IN_USE": "В использовании",
 		"VOICE": "Голос",
-		"NO_AGENT_ONLINE": "Агент отсутствует онлайн",
-		"GOTOREALTIME_CHATQUEUE": "Перейти к очереди чатов в реальном времени",
-		"PARTIALPAUSE": "Частичная пауза",
-		"BUSY": "Линия занята",
+		"NO_AGENT_ONLINE": "Ни один оператор На Сайте",
+		"GOTOREALTIME_CHATQUEUE": "Перейти в чат в реальном времени очереди",
+		"PARTIALPAUSE": "Частичная приостановка",
+		"BUSY": "Занят",
 		"TIMER": "Таймер",
-		"IDLE": "Линия свободна",
+		"IDLE": "Обороты холостого хода",
 		"CAPACITY": "Емкость",
-		"TAGS": "Теги",
-		"SHOWAGENTAVATAR": "Показать личный аватар агента",
-		"AGENTAVATAR": "Аватар агента",
-		"SPYINTERACTION": "Шпион",
-		"INTERACTIONS_CHATWEBSITE": "Перейти к взаимодействиям",
-		"REFRESH_INTERACTIONS": "Обновить взаимодействия",
+		"TAGS": "Tags",
+		"SHOWAGENTAVATAR": "Показать личные agent avatar",
+		"AGENTAVATAR": "Agent Avatar",
+		"SPYINTERACTION": "Spy",
+		"INTERACTIONS_CHATWEBSITE": "Перейти к взаимодействию",
+		"REFRESH_INTERACTIONS": "Обновить взаимодействий",
 		"CLOSINGQUESTION": "Закрытие вопроса",
 		"WEBSCRIPT": "Веб-скрипт",
-		"NO_CHATCANNEDANSWER_AVAILABLE": "Заранее определенные ответы отсутствуют",
-		"NEW_CHATCANNEDANSWER": "Новый заранее определенный ответ",
-		"ADD_CHATCANNEDANSWER": "Добавить заранее определенный ответ",
-		"EDIT_CHATCANNEDANSWER": "Редактировать",
+		"NO_CHATCANNEDANSWER_AVAILABLE": "Нет готовых ответов",
+		"NEW_CHATCANNEDANSWER": "Новый Консервированный Ответ",
+		"ADD_CHATCANNEDANSWER": "Добавить консервированный ответ",
+		"EDIT_CHATCANNEDANSWER": "редактировать",
 		"DELETE_CHATCANNEDANSWER": "Удалить",
 		"OFFLINEMESSAGESUBJECT": "Тема сообщения",
 		"OFFLINEMESSAGEBODY": "Тело сообщения",
-		"FORMSUBMITSUCCESSMESSAGE": "Форма для отправки сообщения об успешном завершении операции",
-		"FORMSUBMITFAILUREMESSAGE": "Форма для отправки сообщения об ошибке",
-		"PLACEHOLDERMESSAGE": "Заполнитель сообщения",
-		"NOTETITLE": "Название примечания",
+		"FORMSUBMITSUCCESSMESSAGE": "Форма сообщения об успешном сообщении",
+		"FORMSUBMITFAILUREMESSAGE": "Форма отправки сообщения об ошибке",
+		"PLACEHOLDERMESSAGE": "Заполнитель сообщений",
+		"NOTETITLE": "Название заметки",
 		"DELETE_INTERACTION": "Удалить взаимодействие",
 		"FONTSIZE": "Размер шрифта",
 		"TEXTCOLOR": "Цвет текста",
-		"COMMAND": "Команда",
-		"EDIT_SYSTEM": "Редактировать систему",
-		"SYSTEM": "Система",
-		"NOTIFICATION": "Уведомление",
-		"NOTIFICATIONSHAKE": "Shake",
-		"NOTIFICATIONSOUND": "Звук",
-		"NOTIFICATIONTEMPLATE": "Шаблон",
-		"HIDEWHENOFFLINE": "Скрыть",
-		"INSERT_MESSAGE_HERE": "Введите текстовое сообщение здесь",
-		"AGENTALIAS": "Алиас агента",
-		"AGENTFULLNAME": "Полное имя агента",
+		"COMMAND": "команда",
+		"EDIT_SYSTEM": "Изменить систему",
+		"SYSTEM": "система",
+		"NOTIFICATION": "уведомление",
+		"NOTIFICATIONSHAKE": "Встряска",
+		"NOTIFICATIONSOUND": "звук",
+		"NOTIFICATIONTEMPLATE": "шаблон",
+		"HIDEWHENOFFLINE": "Спрятать",
+		"INSERT_MESSAGE_HERE": "Вставьте свое текстовое сообщение здесь",
+		"AGENTALIAS": "Псевдоним агента",
+		"AGENTFULLNAME": "Имя агента",
 		"AGENTIDENTIFIER": "Идентификатор",
-		"WAITFORTHEASSIGNEDAGENT": "Ожидание ответа назначенного агента",
-		"ALIGNMENT": "Выравнивание",
-		"BOTTOM_RIGHT": "По нижнему правому краю",
-		"LEFT": "По левому краю",
-		"RIGHT": "По правому краю",
-		"VERTICALALIGNMENT": "Выравнивание по вертикали",
-		"POSITION": "Позиция",
+		"WAITFORTHEASSIGNEDAGENT": "Подождите, пока назначенный агент",
+		"ALIGNMENT": "центровка",
+		"BOTTOM_RIGHT": "Внизу справа",
+		"LEFT": "Оставил",
+		"RIGHT": "Правильно",
+		"VERTICALALIGNMENT": "Вертикальное выравнивание",
+		"POSITION": "Должность",
 		"VERTICALPOSITION": "Вертикальная позиция",
-		"SNIPPETSWIPEOUT": "Удаление фрагментов",
-		"ALTERNATE": "Чередование",
-		"CENTERED": "Центрированные",
-		"CUSTOMERAVATAR": "Аватар клиента",
+		"SNIPPETSWIPEOUT": "Отсканированный фрагмент",
+		"ALTERNATE": "чередовать",
+		"CENTERED": "Сосредоточенный",
+		"CUSTOMERAVATAR": "Клиент Аватар",
 		"DEFAULTTITLE": "Заголовок по умолчанию",
 		"MESSAGESALIGNMENT": "Выравнивание сообщений",
 		"SHOWCUSTOMERAVATAR": "Показать аватар клиента",
-		"CUSTOMERALIAS": "Алиас клиента",
-		"EDIT_TAG": "Редактирование тега",
+		"CUSTOMERALIAS": "Псевдоним клиента",
+		"EDIT_TAG": "Изменить тег",
 		"TAG": "Тег",
-		"AGENTADD_CHATWEBSITE": "Добавление агента в чат-сайт",
-		"BACKGROUNDCOLOR": "Цвет фона",
-		"MESSAGEFONTSIZE": "Размер шрифта в сообщениях",
-		"AGENTTRANSFER": "Передача агенту",
-		"AGENTTRANSFERTIMEOUT": "Тайм-аут передачи агенту",
-		"DIALOGFLOW": "Сервис Dialogflow",
-		"EDIT_DIALOGFLOW": "Редактирование: Dialogflow",
-		"LANGUAGE": "Язык",
-		"QUEUETRANSFER": "Передача в очередь",
-		"QUEUETRANSFERTIMEOUT": "Тайм-аут передачи в очередь",
-		"SYSTEMALIAS": "Алиас системы",
-		"SYSTEMAVATAR": "Аватар системы",
-		"TRANSFER": "Перевод вызова",
+		"AGENTADD_CHATWEBSITE": "Добавить сайт агента в чат",
+		"BACKGROUNDCOLOR": "Фоновый цвет",
+		"MESSAGEFONTSIZE": "Размер шрифта сообщения",
+		"AGENTTRANSFER": "Передача агента",
+		"AGENTTRANSFERTIMEOUT": "Тайм-аут передачи агента",
+		"DIALOGFLOW": "Dialogflow",
+		"EDIT_DIALOGFLOW": "Редактировать диалог",
+		"LANGUAGE": "язык",
+		"QUEUETRANSFER": "Передача очереди",
+		"QUEUETRANSFERTIMEOUT": "Тайм-аут передачи очереди",
+		"SYSTEMALIAS": "Системный псевдоним",
+		"SYSTEMAVATAR": "Системный Аватар",
+		"TRANSFER": "Перечислить",
 		"WELCOMEMESSAGE": "Приветственное сообщение",
-		"ENABLECUSTOMERCHECKMARKS": "Разрешить доставку уведомлений клиентам/чтение уведомлений",
-		"CANNEDANSWERS": "Заранее определенные ответы",
-		"CHATCANNEDANSWERS": "Заранее определенные ответы",
+		"ENABLECUSTOMERCHECKMARKS": "Включить доставку / чтение уведомлений",
+		"CANNEDANSWERS": "Консервированные ответы",
+		"CHATCANNEDANSWERS": "Консервированные ответы",
 		"DOWNLOAD_INTERACTION": "Скачать",
-		"LOGIN_TIME": "Время входа в систему",
+		"LOGIN_TIME": "Время входа",
 		"PAUSE_TIME": "Время паузы",
 		"ACCESSKEYID": "Идентификатор ключа доступа",
 		"BOTNAME": "Имя бота",
-		"EDIT_AMAZONLEX": "Редактирование: сервис Amazon Lex",
-		"LEXREGION": "Регион",
+		"EDIT_AMAZONLEX": "Редактировать Amazon Lex",
+		"LEXREGION": "Область, край",
 		"SECRETACCESSKEY": "Секретный ключ доступа",
 		"TEAMS_ASSOCIATION": "Ассоциация команд",
-		"MANDATORYDISPOSITION": "Обязательная диспозиция",
-		"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования в случае включения обязательной диспозиции",
-		"ENABLESENDBUTTON": "Включить кнопку «Отправить»",
-		"FEEDBACKTITLE": "Заголовок отзыва",
-		"TOOLTIP_SCREENRECORDING_OFF": "Доступна запись с экрана",
-		"TOOLTIP_SCREENRECORDING_ON": "Идет запись с экрана",
+		"MANDATORYDISPOSITION": "Обязательное распоряжение",
+		"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования, если включена обязательная утилизация",
+		"ENABLESENDBUTTON": "Включить кнопку отправки",
+		"FEEDBACKTITLE": "Название отзыва",
+		"TOOLTIP_SCREENRECORDING_OFF": "Запись экрана доступна",
+		"TOOLTIP_SCREENRECORDING_ON": "Идет запись экрана",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Скачать без вложений",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Скачать с вложениями",
-		"LASTMESSAGE": "Последнее сообщение"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Скачать с вложениями",
+		"LASTMESSAGE": "Последнее сообщение",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Ключ Vidaoo Api",
+		"VIDAOOESCALATION": "Начать видеозвонок",
+		"VIDAOOSESSION": "Начать видеозвонок",
+		"VIDEO": "видео"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/sv.json b/public/app/main/apps/chat/i18n/sv.json
index 463d109..7b50379 100644
--- a/public/app/main/apps/chat/i18n/sv.json
+++ b/public/app/main/apps/chat/i18n/sv.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "Obligatoriskt fält",
 			"BOTNAME_REQUIRED": "Obligatoriskt fält",
 			"SECRETACCESSKEY_REQUIRED": "Obligatoriskt fält",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Obligatoriskt fält"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Obligatoriskt fält",
+			"VIDAOOAPIKEY_REQUIRED": "Obligatoriskt fält"
 		},
 		"CM_FIELD": "Kontakthanterarfältet",
 		"CHATPROACTIVEACTIONS": "Proaktiva åtgärder",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Skärminspelning pågår",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Ladda ner utan bilagor",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Ladda ner med bilagor",
-		"LASTMESSAGE": "Senaste meddelandet"
+		"LASTMESSAGE": "Senaste meddelandet",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo Api Key",
+		"VIDAOOESCALATION": "Starta videosamtal",
+		"VIDAOOSESSION": "Starta videosamtal",
+		"VIDEO": "Video"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/tr.json b/public/app/main/apps/chat/i18n/tr.json
index e880867..6a8292c 100644
--- a/public/app/main/apps/chat/i18n/tr.json
+++ b/public/app/main/apps/chat/i18n/tr.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "Zorunlu alan",
 			"BOTNAME_REQUIRED": "Zorunlu alan",
 			"SECRETACCESSKEY_REQUIRED": "Zorunlu alan",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Zorunlu alan"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Zorunlu alan",
+			"VIDAOOAPIKEY_REQUIRED": "Zorunlu alan"
 		},
 		"CM_FIELD": "Kişi Yöneticisi Alan",
 		"CHATPROACTIVEACTIONS": "Proaktif Eylemler",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "Ekran Kaydı devam ediyor",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Ekler olmadan indir",
 		"DOWNLOAD_WITH_ATTACHMENTS": "Eklerle indir",
-		"LASTMESSAGE": "Son Mesaj"
+		"LASTMESSAGE": "Son Mesaj",
+		"VIDAOO": "Vidaoo",
+		"VIDAOOAPIKEY": "Vidaoo Api Anahtarı",
+		"VIDAOOESCALATION": "Görüntülü Görüşmeyi Başlatın",
+		"VIDAOOSESSION": "Görüntülü Görüşmeyi Başlatın",
+		"VIDEO": "Video"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/zh-CN.json b/public/app/main/apps/chat/i18n/zh-CN.json
index 17992c5..8273e84 100644
--- a/public/app/main/apps/chat/i18n/zh-CN.json
+++ b/public/app/main/apps/chat/i18n/zh-CN.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "必填项",
 			"BOTNAME_REQUIRED": "必填项",
 			"SECRETACCESSKEY_REQUIRED": "必填项",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "必填项"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "必填项",
+			"VIDAOOAPIKEY_REQUIRED": "必填项"
 		},
 		"CM_FIELD": "联系人管理器字段",
 		"CHATPROACTIVEACTIONS": "积极主动的行动。",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "屏幕录制正在进行中",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "下载无附件",
 		"DOWNLOAD_WITH_ATTACHMENTS": "附件下载",
-		"LASTMESSAGE": "最后留言"
+		"LASTMESSAGE": "最后留言",
+		"VIDAOO": "维达",
+		"VIDAOOAPIKEY": "Vidaoo Api Key",
+		"VIDAOOESCALATION": "开始视频通话",
+		"VIDAOOSESSION": "开始视频通话",
+		"VIDEO": "视频"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/chat/i18n/zh-TW.json b/public/app/main/apps/chat/i18n/zh-TW.json
index dd2a362..aa3909c 100644
--- a/public/app/main/apps/chat/i18n/zh-TW.json
+++ b/public/app/main/apps/chat/i18n/zh-TW.json
@@ -138,7 +138,8 @@
 			"ACCESSKEYID_REQUIRED": "必填項",
 			"BOTNAME_REQUIRED": "必填項",
 			"SECRETACCESSKEY_REQUIRED": "必填項",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "必填項"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "必填項",
+			"VIDAOOAPIKEY_REQUIRED": "必填項"
 		},
 		"CM_FIELD": "Contact Manager 欄位",
 		"CHATPROACTIVEACTIONS": "預防措施",
@@ -444,6 +445,11 @@
 		"TOOLTIP_SCREENRECORDING_ON": "屏幕錄製正在進行中",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "下載無附件",
 		"DOWNLOAD_WITH_ATTACHMENTS": "附件下載",
-		"LASTMESSAGE": "最後留言"
+		"LASTMESSAGE": "最後留言",
+		"VIDAOO": "維達",
+		"VIDAOOAPIKEY": "Vidaoo Api Key",
+		"VIDAOOESCALATION": "開始視頻通話",
+		"VIDAOOSESSION": "開始視頻通話",
+		"VIDEO": "視頻"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/ar.json b/public/app/main/apps/contactmanager/i18n/ar.json
index 13db54a..a48a3ff 100644
--- a/public/app/main/apps/contactmanager/i18n/ar.json
+++ b/public/app/main/apps/contactmanager/i18n/ar.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... مع",
 		"SDICODE": "كود SDI",
 		"SOCIAL_CAPITAL": "رأس المال",
-		"VATNUMBER_CF": "Codice Fiscale / VAT"
+		"VATNUMBER_CF": "Codice Fiscale / VAT",
+		"RECALLME": "عاود الاتصال بي"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/da.json b/public/app/main/apps/contactmanager/i18n/da.json
index 7bc226f..f7d14e7 100644
--- a/public/app/main/apps/contactmanager/i18n/da.json
+++ b/public/app/main/apps/contactmanager/i18n/da.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... med",
 		"SDICODE": "SDI-kode",
 		"SOCIAL_CAPITAL": "Aktiekapital",
-		"VATNUMBER_CF": "Codice fiskal / moms"
+		"VATNUMBER_CF": "Codice fiskal / moms",
+		"RECALLME": "Husk mig"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/de.json b/public/app/main/apps/contactmanager/i18n/de.json
index b599362..21e4840 100644
--- a/public/app/main/apps/contactmanager/i18n/de.json
+++ b/public/app/main/apps/contactmanager/i18n/de.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... mit",
 		"SDICODE": "SDI-Code",
 		"SOCIAL_CAPITAL": "Aktienkapital",
-		"VATNUMBER_CF": "Codice Fiscale / VAT"
+		"VATNUMBER_CF": "Codice Fiscale / VAT",
+		"RECALLME": "Ruf mich zurück"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/en.json b/public/app/main/apps/contactmanager/i18n/en.json
index c1df76d..438d5ad 100644
--- a/public/app/main/apps/contactmanager/i18n/en.json
+++ b/public/app/main/apps/contactmanager/i18n/en.json
@@ -178,6 +178,7 @@
 		"COMPANY_FISCAL_TYPE": "Company Fiscal Type",
 		"RELATIONSHIP": "Relationship ...",
 		"RELATIONSHIPCOMPANY": " ... with",
-		"CREATE": "Create"
+		"CREATE": "Create",
+		"RECALLME": "Recall Me"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/es.json b/public/app/main/apps/contactmanager/i18n/es.json
index 9bddda3..f117a51 100644
--- a/public/app/main/apps/contactmanager/i18n/es.json
+++ b/public/app/main/apps/contactmanager/i18n/es.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... con",
 		"SDICODE": "Código SDI",
 		"SOCIAL_CAPITAL": "Capital social",
-		"VATNUMBER_CF": "Codice Fiscale / IVA"
+		"VATNUMBER_CF": "Codice Fiscale / IVA",
+		"RECALLME": "Recordarme"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/fa.json b/public/app/main/apps/contactmanager/i18n/fa.json
index 69ac5de..f8a2a83 100644
--- a/public/app/main/apps/contactmanager/i18n/fa.json
+++ b/public/app/main/apps/contactmanager/i18n/fa.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... با",
 		"SDICODE": "کد SDI",
 		"SOCIAL_CAPITAL": "سرمایه مشترک",
-		"VATNUMBER_CF": "کد مالیات / مالیات بر ارزش افزوده"
+		"VATNUMBER_CF": "کد مالیات / مالیات بر ارزش افزوده",
+		"RECALLME": "مرا بخاطر بسپار"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/fi.json b/public/app/main/apps/contactmanager/i18n/fi.json
index 1433ad8..492ee7c 100644
--- a/public/app/main/apps/contactmanager/i18n/fi.json
+++ b/public/app/main/apps/contactmanager/i18n/fi.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... kanssa",
 		"SDICODE": "SDI-koodi",
 		"SOCIAL_CAPITAL": "Osakepääoma",
-		"VATNUMBER_CF": "Codice Fiscale / ALV"
+		"VATNUMBER_CF": "Codice Fiscale / ALV",
+		"RECALLME": "Muista minut"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/fr.json b/public/app/main/apps/contactmanager/i18n/fr.json
index af9ff14..30775d6 100644
--- a/public/app/main/apps/contactmanager/i18n/fr.json
+++ b/public/app/main/apps/contactmanager/i18n/fr.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... avec",
 		"SDICODE": "Code SDI",
 		"SOCIAL_CAPITAL": "Partage le capital",
-		"VATNUMBER_CF": "Codice Fiscale / TVA"
+		"VATNUMBER_CF": "Codice Fiscale / TVA",
+		"RECALLME": "Rappelle-moi"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/he.json b/public/app/main/apps/contactmanager/i18n/he.json
index 013589d..d478a02 100644
--- a/public/app/main/apps/contactmanager/i18n/he.json
+++ b/public/app/main/apps/contactmanager/i18n/he.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... עם",
 		"SDICODE": "קוד SDI",
 		"SOCIAL_CAPITAL": "הון מניות",
-		"VATNUMBER_CF": "שובר קוד / מע\"מ"
+		"VATNUMBER_CF": "שובר קוד / מע\"מ",
+		"RECALLME": "זכור אותי"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/hi.json b/public/app/main/apps/contactmanager/i18n/hi.json
index 3e0fdcb..b4d0b40 100644
--- a/public/app/main/apps/contactmanager/i18n/hi.json
+++ b/public/app/main/apps/contactmanager/i18n/hi.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... साथ में",
 		"SDICODE": "SDI कोड",
 		"SOCIAL_CAPITAL": "शेयर पूंजी",
-		"VATNUMBER_CF": "कोडिस फिशले / वैट"
+		"VATNUMBER_CF": "कोडिस फिशले / वैट",
+		"RECALLME": "मुझे याद करो"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/id.json b/public/app/main/apps/contactmanager/i18n/id.json
index 3a659c2..2645e39 100644
--- a/public/app/main/apps/contactmanager/i18n/id.json
+++ b/public/app/main/apps/contactmanager/i18n/id.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... dengan",
 		"SDICODE": "Kode SDI",
 		"SOCIAL_CAPITAL": "Modal Saham",
-		"VATNUMBER_CF": "Codice Fiscale / PPN"
+		"VATNUMBER_CF": "Codice Fiscale / PPN",
+		"RECALLME": "Ingat Saya"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/it.json b/public/app/main/apps/contactmanager/i18n/it.json
index f1082f2..dea1687 100644
--- a/public/app/main/apps/contactmanager/i18n/it.json
+++ b/public/app/main/apps/contactmanager/i18n/it.json
@@ -178,6 +178,7 @@
 		"COMPANY_FISCAL_TYPE": "Tipo fiscale azienda",
 		"RELATIONSHIP": "Tipo relazione ...",
 		"RELATIONSHIPCOMPANY": " ... con",
-		"CREATE": "Crea"
+		"CREATE": "Crea",
+		"RECALLME": "Recall Me"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/ja.json b/public/app/main/apps/contactmanager/i18n/ja.json
index 1422c7d..31a19c9 100644
--- a/public/app/main/apps/contactmanager/i18n/ja.json
+++ b/public/app/main/apps/contactmanager/i18n/ja.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ...と",
 		"SDICODE": "SDIコード",
 		"SOCIAL_CAPITAL": "資本金",
-		"VATNUMBER_CF": "Codice Fiscale / VAT"
+		"VATNUMBER_CF": "Codice Fiscale / VAT",
+		"RECALLME": "私を思い出して"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/ko.json b/public/app/main/apps/contactmanager/i18n/ko.json
index 40fdb15..4e6f769 100644
--- a/public/app/main/apps/contactmanager/i18n/ko.json
+++ b/public/app/main/apps/contactmanager/i18n/ko.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ...와",
 		"SDICODE": "SDI 코드",
 		"SOCIAL_CAPITAL": "주식 자본",
-		"VATNUMBER_CF": "Codice Fiscale / VAT"
+		"VATNUMBER_CF": "Codice Fiscale / VAT",
+		"RECALLME": "저를 기억하십시오"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/lv.json b/public/app/main/apps/contactmanager/i18n/lv.json
index 300a465..5e2c80a 100644
--- a/public/app/main/apps/contactmanager/i18n/lv.json
+++ b/public/app/main/apps/contactmanager/i18n/lv.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... ar",
 		"SDICODE": "SDI kods",
 		"SOCIAL_CAPITAL": "Pamatkapitāls",
-		"VATNUMBER_CF": "Codice Fiscale / PVN"
+		"VATNUMBER_CF": "Codice Fiscale / PVN",
+		"RECALLME": "Atsaukt mani"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/nl.json b/public/app/main/apps/contactmanager/i18n/nl.json
index 80809cc..3e42c4c 100644
--- a/public/app/main/apps/contactmanager/i18n/nl.json
+++ b/public/app/main/apps/contactmanager/i18n/nl.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... met",
 		"SDICODE": "SDI-code",
 		"SOCIAL_CAPITAL": "Aandelenkapitaal",
-		"VATNUMBER_CF": "Codice Fiscale / BTW"
+		"VATNUMBER_CF": "Codice Fiscale / BTW",
+		"RECALLME": "Herinner me"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/no.json b/public/app/main/apps/contactmanager/i18n/no.json
index 22160a9..513d6c8 100644
--- a/public/app/main/apps/contactmanager/i18n/no.json
+++ b/public/app/main/apps/contactmanager/i18n/no.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... med",
 		"SDICODE": "SDI-kode",
 		"SOCIAL_CAPITAL": "Aksjekapital",
-		"VATNUMBER_CF": "Codice fiskal / mva"
+		"VATNUMBER_CF": "Codice fiskal / mva",
+		"RECALLME": "Husk meg"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/pl.json b/public/app/main/apps/contactmanager/i18n/pl.json
index 4c7d20f..8bed468 100644
--- a/public/app/main/apps/contactmanager/i18n/pl.json
+++ b/public/app/main/apps/contactmanager/i18n/pl.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... z",
 		"SDICODE": "Kod SDI",
 		"SOCIAL_CAPITAL": "Kapitał zakładowy",
-		"VATNUMBER_CF": "Kodek Fiscale / VAT"
+		"VATNUMBER_CF": "Kodek Fiscale / VAT",
+		"RECALLME": "Przypomnij mi"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/pt-BR.json b/public/app/main/apps/contactmanager/i18n/pt-BR.json
index 12cd6d9..9c6617d 100644
--- a/public/app/main/apps/contactmanager/i18n/pt-BR.json
+++ b/public/app/main/apps/contactmanager/i18n/pt-BR.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... com",
 		"SDICODE": "Código SDI",
 		"SOCIAL_CAPITAL": "Capital social",
-		"VATNUMBER_CF": "Codice Fiscale / IVA"
+		"VATNUMBER_CF": "Codice Fiscale / IVA",
+		"RECALLME": "Lembre-me"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/pt-PT.json b/public/app/main/apps/contactmanager/i18n/pt-PT.json
index 4f62df8..7169a61 100644
--- a/public/app/main/apps/contactmanager/i18n/pt-PT.json
+++ b/public/app/main/apps/contactmanager/i18n/pt-PT.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... com",
 		"SDICODE": "Código SDI",
 		"SOCIAL_CAPITAL": "Capital social",
-		"VATNUMBER_CF": "Codice Fiscale / IVA"
+		"VATNUMBER_CF": "Codice Fiscale / IVA",
+		"RECALLME": "Lembre-me"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/ru.json b/public/app/main/apps/contactmanager/i18n/ru.json
index 8b03c7f..9715732 100644
--- a/public/app/main/apps/contactmanager/i18n/ru.json
+++ b/public/app/main/apps/contactmanager/i18n/ru.json
@@ -1,53 +1,53 @@
 {
 	"CONTACTMANAGER": {
-		"VOICEQUEUEID": "Идентификатор очереди голосовой почты",
-		"CAMPAIGNID": "Идентификатор кампании",
-		"STATE": "Состояние",
+		"VOICEQUEUEID": "VoiceQueue ID",
+		"CAMPAIGNID": "Кампания ID",
+		"STATE": "Государство",
 		"NAME": "Имя",
 		"LISTS": "Списки",
-		"UNIQUEID": "Уникальный идентификатор",
-		"STATUS": "Состояние",
+		"UNIQUEID": "Uniqueid",
+		"STATUS": "Статус",
 		"STARTTIME": "Время начала",
 		"ENDTIME": "Время окончания",
-		"MOTION_BULL": "Motion Bull",
-		"HOPPER": "Накопитель",
-		"FINAL": "Накопитель: итог",
-		"HISTORY": "Накопитель: история",
+		"MOTION_BULL": "Булл движения",
+		"HOPPER": "Бункер",
+		"FINAL": "Окончательный бункера",
+		"HISTORY": "История бункера",
 		"SCHEDULEDAT": "Запланировано на",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"EDIT_LIST": "Редактировать список",
-		"EDIT_HOPPER": "Редактировать накопитель",
+		"EDIT_HOPPER": "Редактирование загрузочного бункера",
 		"DELETE_LIST": "Удалить список",
-		"DELETE_HOPPER": "Удалить накопитель",
-		"RELOAD": "Перезагрузка",
-		"NO_COMPANIES": "Нет компании",
-		"NO_AVAILABLE_ITEMS": "Доступные объекты отсутствуют",
+		"DELETE_HOPPER": "Удалить загрузочный бункер",
+		"RELOAD": "Перезагрузить",
+		"NO_COMPANIES": "Ни одна компания не",
+		"NO_AVAILABLE_ITEMS": "Нет доступных элементов",
 		"ADD": "Добавить",
 		"ERRORS": {
-			"NAME_REQUIRED": "Обязательное поле",
-			"FIRSTNAME_REQUIRED": "Обязательное поле",
-			"PHONE_REQUIRED": "Обязательное поле",
-			"ALIAS_REQUIRED": "Обязательное поле",
-			"VALUE_REQUIRED": "Обязательное поле",
-			"EMAIL_MUST_VALID": "Неверный формат",
-			"PHONEBAR_API": "Проверить, работает ли MotionBar и включен ли переключатель дистанционного обработки для агента"
+			"NAME_REQUIRED": "Это имя требуется",
+			"FIRSTNAME_REQUIRED": "Первое имя не требуется",
+			"PHONE_REQUIRED": "Номер телефона не требуется",
+			"ALIAS_REQUIRED": "Псевдоним не требуется",
+			"VALUE_REQUIRED": "Это значение требуется",
+			"EMAIL_MUST_VALID": "Адрес электронной почты должен быть написан в действительный формат",
+			"PHONEBAR_API": "Убедитесь, что MotionBar работает и что пульт дистанционного управления для оператора включен"
 		},
 		"DESCRIPTION": "Описание",
-		"DISPOSITION": "Диспозиция",
-		"DISPOSITIONS": "Диспозиции",
-		"VOICEDISPOSITIONS": "Диспозиции голосовой почты",
-		"NEW_VOICEDISPOSITION": "Новая диспозиция голосовой почты",
+		"DISPOSITION": "Распоряжения",
+		"DISPOSITIONS": "Распоряжения",
+		"VOICEDISPOSITIONS": "Голосовые распоряжения",
+		"NEW_VOICEDISPOSITION": "Новые голосовые распоряжения",
 		"CUSTOM_FIELDS": "Пользовательские поля",
 		"ADD_LIST": "Добавить список",
 		"BACK": "Назад",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
+		"SELECT_NONE": "Выберите пункт None",
 		"COMPANIES": "Компании",
-		"EDIT_COMPANY": "Редактировать компанию",
+		"EDIT_COMPANY": "Изменить компанию",
 		"DELETE_COMPANY": "Удалить компанию",
-		"PHONE": "Телефон",
-		"EMAIL": "Электронная почта",
+		"PHONE": "Номер телефона",
+		"EMAIL": "Адрес электронной почты",
 		"ADD_COMPANY": "Добавить компанию",
 		"CONTACTS": "Контакты",
 		"NEW_LIST": "Новый список",
@@ -56,128 +56,129 @@
 		"LIST": "Список",
 		"COMPANY": "Компания",
 		"ADD_CONTACT": "Добавить контакт",
-		"EDIT_CONTACT": "Редактировать контакт",
-		"MERGE_CONTACT": "Объединить контакт",
-		"DUPLICATE_CONTACT": "Дубликат контакта",
+		"EDIT_CONTACT": "Редактирование контактной",
+		"MERGE_CONTACT": "Merge контакт",
+		"DUPLICATE_CONTACT": "Дублировать контакт",
 		"DELETE_CONTACT": "Удалить контакт",
-		"CREATED_AT": "Создано на",
+		"CREATED_AT": "Созданные в",
 		"SAVE": "Сохранить",
-		"DETAIL": "Деталь",
+		"DETAIL": "Подробно",
 		"PERSONAL_INFO": "Личная информация",
-		"MOBILE": "Мобильный телефон",
+		"MOBILE": "Для мобильных ПК",
 		"FAX": "Факс",
-		"TAGS": "Теги",
+		"TAGS": "Теги индексов",
 		"SHOW_ALL_FIELDS": "Показать все поля",
 		"FEWER_FIELDS": "Показать меньше полей",
-		"COUNTRY": "Страна",
+		"COUNTRY": "Страны",
 		"CITY": "Город",
-		"STREET": "Улица",
-		"POSTALCODE": "Почтовый индекс",
+		"STREET": "Улицы",
+		"POSTALCODE": "Почтовый код",
 		"DELETE": "Удалить",
 		"DELETE_ALL": "Удалить все",
-		"CONTACTMANAGER": "Менеджер контактов",
-		"ID": "Идентификатор",
+		"CONTACTMANAGER": "Контакты Manager",
+		"ID": "Id",
 		"SETTINGS": "Настройки",
-		"GENERAL": "Общие",
+		"GENERAL": "Генеральной",
 		"CUSTOMFIELDS": "Пользовательские поля",
-		"NO_CUSTOMFIELD_AVAILABLE": "Доступные пользовательские поля отсутствуют",
-		"ADD_TAG": "Добавить тег",
-		"NO_TAG": "Теги отсутствуют",
-		"ALIAS": "Алиас",
+		"NO_CUSTOMFIELD_AVAILABLE": "Пользовательские поля не доступны",
+		"ADD_TAG": "Добавить метки",
+		"NO_TAG": "Теги",
+		"ALIAS": "Псевдоним",
 		"TYPE": "Тип",
 		"VALUE": "Значение",
-		"ADD_CUSTOMFIELD": "Добавить пользовательское поле",
-		"EDIT_CUSTOMFIELD": "Редактировать пользовательское поле",
+		"ADD_CUSTOMFIELD": "Добавить пользовательские поля",
+		"EDIT_CUSTOMFIELD": "Редактировать настраиваемые поля",
 		"DELETE_CUSTOMFIELD": "Удалить пользовательское поле",
 		"NEW_COMPANY": "Новая компания",
 		"NEW_CONTACT": "Новый контакт",
-		"NEW_TAG": "Новый тег",
-		"UPLOAD_CONTACTS": "Загрузить контакты",
-		"FINISH": "Завершить",
-		"SUCCESS": "Операция завершена успешно",
-		"FAILURE": "Операция не была успешно завершена",
+		"NEW_TAG": "Новую метку",
+		"UPLOAD_CONTACTS": "Загрузка контактов",
+		"FINISH": "Готово",
+		"SUCCESS": "Успех",
+		"FAILURE": "Неспособность",
 		"ALL_CONTACTS": "Все контакты",
-		"NEW_CUSTOMFIELD": "Новое пользовательское поле",
-		"NO_VOICEDISPOSITION_AVAILABLE": "Доступные диспозиции голосовой почты отсутствуют",
-		"ADD_VOICEDISPOSITION": "Добавить диспозицию голосовой почты",
-		"EDIT_VOICEDISPOSITION": "Редактировать диспозицию голосовой почты",
-		"DELETE_VOICEDISPOSITION": "Удалить диспозицию голосовой почты",
-		"VAT": "VAT",
+		"NEW_CUSTOMFIELD": "Новые пользовательские поля",
+		"NO_VOICEDISPOSITION_AVAILABLE": "Нет голосовых ликвидаций имеющихся",
+		"ADD_VOICEDISPOSITION": "Добавить голосовую распоряжения",
+		"EDIT_VOICEDISPOSITION": "Редактировать голосовые распоряжения",
+		"DELETE_VOICEDISPOSITION": "Удаление голосовых распоряжения",
+		"VAT": "Ндс",
 		"COMPANYID": "Идентификатор компании",
 		"WEBSITE": "Сайт",
 		"EMAIL_DOMAIN": "Домен электронной почты",
 		"ADDRESS": "Адрес",
-		"POSTAL_CODE": "Почтовый индекс",
+		"POSTAL_CODE": "Почтовый код",
 		"SHIPMENTADDRESS": "Адрес доставки",
 		"COPY_CONTACT": "Копировать контакт",
 		"GOTOCONTACTS_LIST": "Показать контакты",
 		"GOTOCONTACTS_COMPANY": "Показать контакты",
-		"ADD_AGENT_TO_LIST": "Добавить агента в список",
-		"AGENTADD_LIST": "Добавить агентов в список",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"NONE": "Отсутствуют",
-		"FULLNAME": "Полное имя",
-		"CHECK_DUPLICATES": "Найти дубликаты",
-		"DUPLICATES": "Дубликаты",
-		"UPLOAD_CSV": "Загрузка CSV",
+		"ADD_AGENT_TO_LIST": "Добавление агентов в списке",
+		"AGENTADD_LIST": "Добавление агентов в списке",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"NONE": "При этом никто не голосовал",
+		"FULLNAME": "Полное Имя",
+		"CHECK_DUPLICATES": "Проверьте наличие дубликатов",
+		"DUPLICATES": "Дубли",
+		"UPLOAD_CSV": "Загрузка файла CSV",
 		"TAG": "Тег",
 		"UPLOAD": "Загрузить",
-		"ALL_AGENTS": "Все агенты",
-		"SELECTED_AGENTS": "Выбранные агенты",
+		"ALL_AGENTS": "Все Операторы",
+		"SELECTED_AGENTS": "Выбранные операторы",
 		"DATE_OF_BIRTH": "Дата рождения",
 		"DATEOFBIRTH": "Дата рождения",
 		"NOTES": "Примечания",
-		"EXPORTCSVCONTACTS_LIST": "Экспорт в CSV",
+		"EXPORTCSVCONTACTS_LIST": "Экспорт в CSV",
 		"GOTO_LIST": "Показать контакты",
 		"GOTO_COMPANY": "Показать контакты",
-		"REQUIRED": "Необходимые",
-		"GLOBALCUSTOMFIELDS": "Глобальные пользовательские поля",
+		"REQUIRED": "Требуется",
+		"GLOBALCUSTOMFIELDS": "Глобальных пользовательских полей",
 		"NEW_GLOBALCUSTOMFIELD": "Новые пользовательские поля",
-		"ADD_GLOBALCUSTOMFIELD": "Добавить пользовательское поле",
-		"EDIT_GLOBALCUSTOMFIELD": "Редактировать пользовательское поле",
+		"ADD_GLOBALCUSTOMFIELD": "Добавить пользовательские поля",
+		"EDIT_GLOBALCUSTOMFIELD": "Редактировать настраиваемые поля",
 		"DELETE_GLOBALCUSTOMFIELD": "Удалить пользовательское поле",
 		"JSCRIPTY": "Jscripty",
-		"SESSIONS": "Сессии",
-		"AGENT": "Агент",
+		"SESSIONS": "Сессиях",
+		"AGENT": "Оператор",
 		"PROJECT": "Проект",
-		"SELECT_LIST": "Выбрать список",
-		"SELECT_COMPANY": "Выбрать компанию",
-		"SELECT_TAGS": "Выбрать один или несколько тегов",
+		"SELECT_LIST": "Выберите список",
+		"SELECT_COMPANY": "Выберите компанию",
+		"SELECT_TAGS": "Выберите один или более тегов",
 		"HELP": {
-			"PHONEBAR_API": "Чтобы включить функцию «звонок по клику» (Click To Call), введите номер телефона и убедитесь, что переключатель дистанционного обработки для агента включен",
-			"PHONEBAR_API_MESSAGE": "Чтобы включить функцию «звонок по клику» (Click To Call), введите номер телефона и убедитесь, что переключатель дистанционного обработки для агента включен"
+			"PHONEBAR_API": "С тем чтобы Click-to-Call вставьте номер телефона и убедитесь, что пульт дистанционного управления включен для оператора",
+			"PHONEBAR_API_MESSAGE": "Чтобы включить переключение между вызовами, вставьте номер телефона и проверьте переключатель пульта дистанционного управления для включения агента."
 		},
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"SOCIAL": "Социальные медиа",
-		"ROW": "Строка",
-		"EXPORT_ERRORS": "Экспорт ошибок",
+		"OF": "В",
+		"SOCIAL": "Социальная",
+		"ROW": "Ряд",
+		"EXPORT_ERRORS": "Ошибки экспорта",
 		"UPLOAD_COMPLETED": "Загрузка завершена",
-		"STOP": "Остановить",
-		"SELECT_FILE": "Выбрать файл",
-		"IMPORT_CONTACTS": "Импорт контактов",
+		"STOP": "Стоп",
+		"SELECT_FILE": "Выберите файл",
+		"IMPORT_CONTACTS": "Импортировать контакты",
 		"MOTIONDIALER": "Motion Bull",
-		"PREFIX": "Префикс набора номера",
-		"PRIORITY": "Приоритет",
-		"USERID": "Отзыв идентификатора агента",
-		"CUSTOMER_JOURNEY": "Цикл взаимодействия с клиентом",
+		"PREFIX": "Префикс набора",
+		"PRIORITY": "приоритет",
+		"USERID": "Идентификатор агента возврата",
+		"CUSTOMER_JOURNEY": "Путешествие клиента",
 		"SELECT_TAG": "Выбрать теги",
 		"ALL": "Все",
-		"BILLINGINFORMATION": "Платежная информация",
-		"COMPANY_FISCAL_TYPE": "Фискальный тип компании",
-		"CREATE": "Создать",
+		"BILLINGINFORMATION": "биллинговая информация",
+		"COMPANY_FISCAL_TYPE": "Компания Фискальный Тип",
+		"CREATE": "Создайте",
 		"EUROPE": "Европа",
-		"EXPIREDAY": "Дней до истечения срока действия",
-		"FLATDISCOUNT": "Скидка компании",
+		"EXPIREDAY": "Дни истечения",
+		"FLATDISCOUNT": "Компания Скидка",
 		"INVOICEARTICLE": "Статьи закона",
-		"ISOCODE": "Национальный код ИСО",
+		"ISOCODE": "Национальный кодекс ИСО",
 		"PAYMENTMETHOD": "Способ оплаты",
-		"PIVA": "Номер плательщика НДС",
-		"RELATIONSHIP": "Взаимоотношения...",
-		"RELATIONSHIPCOMPANY": " ...с",
-		"SDICODE": "Код SDI",
+		"PIVA": "Номер НДС",
+		"RELATIONSHIP": "Отношения ...",
+		"RELATIONSHIPCOMPANY": " ... с",
+		"SDICODE": "Код SDI",
 		"SOCIAL_CAPITAL": "Акционерный капитал",
-		"VATNUMBER_CF": "Codice Fiscale/НДС"
+		"VATNUMBER_CF": "Codice Fiscale / НДС",
+		"RECALLME": "Вспомни меня"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/sv.json b/public/app/main/apps/contactmanager/i18n/sv.json
index 31ae905..dcb2b01 100644
--- a/public/app/main/apps/contactmanager/i18n/sv.json
+++ b/public/app/main/apps/contactmanager/i18n/sv.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... med",
 		"SDICODE": "SDI-kod",
 		"SOCIAL_CAPITAL": "Aktiekapital",
-		"VATNUMBER_CF": "Codice Fiscale / VAT"
+		"VATNUMBER_CF": "Codice Fiscale / VAT",
+		"RECALLME": "Kom ihåg mig"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/tr.json b/public/app/main/apps/contactmanager/i18n/tr.json
index c7b21fe..8ab1330 100644
--- a/public/app/main/apps/contactmanager/i18n/tr.json
+++ b/public/app/main/apps/contactmanager/i18n/tr.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ... ile",
 		"SDICODE": "SDI Kodu",
 		"SOCIAL_CAPITAL": "Sermaye",
-		"VATNUMBER_CF": "Codice Fiscale / KDV"
+		"VATNUMBER_CF": "Codice Fiscale / KDV",
+		"RECALLME": "Beni hatırla"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/zh-CN.json b/public/app/main/apps/contactmanager/i18n/zh-CN.json
index 14ab9f7..6e80772 100644
--- a/public/app/main/apps/contactmanager/i18n/zh-CN.json
+++ b/public/app/main/apps/contactmanager/i18n/zh-CN.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ...与",
 		"SDICODE": "SDI代码",
 		"SOCIAL_CAPITAL": "股本",
-		"VATNUMBER_CF": "Codice Fiscale /增值税"
+		"VATNUMBER_CF": "Codice Fiscale /增值税",
+		"RECALLME": "召回我"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/contactmanager/i18n/zh-TW.json b/public/app/main/apps/contactmanager/i18n/zh-TW.json
index 611f4c4..390b1ed 100644
--- a/public/app/main/apps/contactmanager/i18n/zh-TW.json
+++ b/public/app/main/apps/contactmanager/i18n/zh-TW.json
@@ -178,6 +178,7 @@
 		"RELATIONSHIPCOMPANY": " ...與",
 		"SDICODE": "SDI代碼",
 		"SOCIAL_CAPITAL": "股本",
-		"VATNUMBER_CF": "Codice Fiscale /增值稅"
+		"VATNUMBER_CF": "Codice Fiscale /增值稅",
+		"RECALLME": "召回我"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/ar.json b/public/app/main/apps/dashboards/i18n/ar.json
index 81c7b6e..4974e7a 100644
--- a/public/app/main/apps/dashboards/i18n/ar.json
+++ b/public/app/main/apps/dashboards/i18n/ar.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "يجب أن تكون القيمة أكبر من",
 		"CHOOSE": "أختر",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "تحميل بدون مرفقات",
-		"DOWNLOAD_WITH_ATTACHMENTS": "تنزيل بالمرفقات"
+		"DOWNLOAD_WITH_ATTACHMENTS": "تنزيل بالمرفقات",
+		"SELECT_QUEUE": "حدد قائمة انتظار",
+		"VIDAOOSESSION": "ابدأ مكالمة فيديو",
+		"WHATSAPP": "رابط WhatsApp",
+		"WHATSAPP_INTERACTIONS": "تفاعلات رابط WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/da.json b/public/app/main/apps/dashboards/i18n/da.json
index 2a25e64..5d941ef 100644
--- a/public/app/main/apps/dashboards/i18n/da.json
+++ b/public/app/main/apps/dashboards/i18n/da.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "Værdien skal være større end",
 		"CHOOSE": "Vælge",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download uden vedhæftede filer",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Download med vedhæftede filer"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Download med vedhæftede filer",
+		"SELECT_QUEUE": "Vælg en kø",
+		"VIDAOOSESSION": "Start videoopkald",
+		"WHATSAPP": "WhatsApp-stik",
+		"WHATSAPP_INTERACTIONS": "WhatsApp-forbindelsesinteraktioner"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/de.json b/public/app/main/apps/dashboards/i18n/de.json
index ac17d05..c9e53ae 100644
--- a/public/app/main/apps/dashboards/i18n/de.json
+++ b/public/app/main/apps/dashboards/i18n/de.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "Wert muss größer sein als",
 		"CHOOSE": "Wählen",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download ohne Anhänge",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Mit Anhängen herunterladen",
+		"SELECT_QUEUE": "Wählen Sie eine Warteschlange aus",
+		"VIDAOOSESSION": "Videoanruf starten",
+		"WHATSAPP": "WhatsApp Connector",
+		"WHATSAPP_INTERACTIONS": "WhatsApp Connector-Interaktionen"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/en.json b/public/app/main/apps/dashboards/i18n/en.json
index 58798bb..3eb13f5 100644
--- a/public/app/main/apps/dashboards/i18n/en.json
+++ b/public/app/main/apps/dashboards/i18n/en.json
@@ -55,6 +55,7 @@
 		"NOTAVAILABLE": "Not available",
 		"CLICKRELOAD": "New abandoned calls! Reload please",
 		"ASSIGNTO": "Assign to",
+		"SELECT_QUEUE": "Select a Queue",
 		"SELECT_CAMPAIGN": "Select a Queue",
 		"FREE": "Free",
 		"RESERVED": "Reserved",
@@ -543,6 +544,9 @@
 		"VALUE_RANGE_CHECK": "Value must be greater than",
 		"AND": "And",
 		"ENABLED": "Enabled",
-		"DISABLED": "Disabled"
+		"DISABLED": "Disabled",
+		"WHATSAPP": "WhatsApp Connector",
+		"WHATSAPP_INTERACTIONS": "WhatsApp Connector Interactions",
+		"VIDAOOSESSION": "Start Video Call"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/es.json b/public/app/main/apps/dashboards/i18n/es.json
index dea4947..3930d84 100644
--- a/public/app/main/apps/dashboards/i18n/es.json
+++ b/public/app/main/apps/dashboards/i18n/es.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "El valor debe ser mayor que",
 		"CHOOSE": "Escoger",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Descargar sin archivos adjuntos",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Descargar con archivos adjuntos"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Descargar con archivos adjuntos",
+		"SELECT_QUEUE": "Seleccionar una cola",
+		"VIDAOOSESSION": "Iniciar videollamada",
+		"WHATSAPP": "Conector de WhatsApp",
+		"WHATSAPP_INTERACTIONS": "Interacciones del conector de WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/fa.json b/public/app/main/apps/dashboards/i18n/fa.json
index f035090..91511b2 100644
--- a/public/app/main/apps/dashboards/i18n/fa.json
+++ b/public/app/main/apps/dashboards/i18n/fa.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "ارزش باید بیشتر از",
 		"CHOOSE": "انتخاب کنید",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "بارگیری بدون پیوست",
-		"DOWNLOAD_WITH_ATTACHMENTS": "با پیوست ها بارگیری کنید"
+		"DOWNLOAD_WITH_ATTACHMENTS": "با پیوست ها بارگیری کنید",
+		"SELECT_QUEUE": "یک صف را انتخاب کنید",
+		"VIDAOOSESSION": "تماس ویدیویی را شروع کنید",
+		"WHATSAPP": "اتصال واتساپ",
+		"WHATSAPP_INTERACTIONS": "تعامل اتصال WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/fi.json b/public/app/main/apps/dashboards/i18n/fi.json
index c846f1c..4773c8e 100644
--- a/public/app/main/apps/dashboards/i18n/fi.json
+++ b/public/app/main/apps/dashboards/i18n/fi.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "Arvon on oltava suurempi kuin",
 		"CHOOSE": "Valita",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Lataa ilman liitteitä",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Lataa liitteineen"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Lataa liitteineen",
+		"SELECT_QUEUE": "Valitse jono",
+		"VIDAOOSESSION": "Aloita videopuhelu",
+		"WHATSAPP": "WhatsApp-liitin",
+		"WHATSAPP_INTERACTIONS": "WhatsApp-liittimen vuorovaikutukset"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/fr.json b/public/app/main/apps/dashboards/i18n/fr.json
index f8cc24e..edd38df 100644
--- a/public/app/main/apps/dashboards/i18n/fr.json
+++ b/public/app/main/apps/dashboards/i18n/fr.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "La valeur doit être supérieure à",
 		"CHOOSE": "Choisir",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Télécharger sans pièces jointes",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Télécharger avec pièces jointes"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Télécharger avec pièces jointes",
+		"SELECT_QUEUE": "Sélectionnez une file d'attente",
+		"VIDAOOSESSION": "Lancer un appel vidéo",
+		"WHATSAPP": "Connecteur WhatsApp",
+		"WHATSAPP_INTERACTIONS": "Interactions du connecteur WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/he.json b/public/app/main/apps/dashboards/i18n/he.json
index bdc3ad5..cf0b20b 100644
--- a/public/app/main/apps/dashboards/i18n/he.json
+++ b/public/app/main/apps/dashboards/i18n/he.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "הערך חייב להיות גדול מ-",
 		"CHOOSE": "בחר",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "הורד ללא קבצים מצורפים",
-		"DOWNLOAD_WITH_ATTACHMENTS": "הורד עם קבצים מצורפים"
+		"DOWNLOAD_WITH_ATTACHMENTS": "הורד עם קבצים מצורפים",
+		"SELECT_QUEUE": "בחר תור",
+		"VIDAOOSESSION": "התחל שיחת וידאו",
+		"WHATSAPP": "מחבר WhatsApp",
+		"WHATSAPP_INTERACTIONS": "אינטראקציות מחבר WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/hi.json b/public/app/main/apps/dashboards/i18n/hi.json
index f5daa6d..d14e767 100644
--- a/public/app/main/apps/dashboards/i18n/hi.json
+++ b/public/app/main/apps/dashboards/i18n/hi.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "मान से अधिक होना चाहिए",
 		"CHOOSE": "चुनें",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "संलग्नक के बिना डाउनलोड करें",
-		"DOWNLOAD_WITH_ATTACHMENTS": "अनुलग्नकों के साथ डाउनलोड करें"
+		"DOWNLOAD_WITH_ATTACHMENTS": "अनुलग्नकों के साथ डाउनलोड करें",
+		"SELECT_QUEUE": "एक कतार का चयन करें",
+		"VIDAOOSESSION": "वीडियो कॉल प्रारंभ करें",
+		"WHATSAPP": "WhatsApp कनेक्टर",
+		"WHATSAPP_INTERACTIONS": "WhatsApp कनेक्टर सहभागिता"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/id.json b/public/app/main/apps/dashboards/i18n/id.json
index e2b0222..f789010 100644
--- a/public/app/main/apps/dashboards/i18n/id.json
+++ b/public/app/main/apps/dashboards/i18n/id.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "Nilai harus lebih besar dari",
 		"CHOOSE": "Memilih",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Unduh tanpa lampiran",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Unduh dengan lampiran"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Unduh dengan lampiran",
+		"SELECT_QUEUE": "Pilih Antrian",
+		"VIDAOOSESSION": "Mulai Panggilan Video",
+		"WHATSAPP": "Konektor WhatsApp",
+		"WHATSAPP_INTERACTIONS": "Interaksi Konektor WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/it.json b/public/app/main/apps/dashboards/i18n/it.json
index 7ab0899..c098a56 100644
--- a/public/app/main/apps/dashboards/i18n/it.json
+++ b/public/app/main/apps/dashboards/i18n/it.json
@@ -49,6 +49,7 @@
 		"NOTAVAILABLE": "Non disponibile",
 		"CLICKRELOAD": "Nuove chiamate abandonate! Ricaricare per favore",
 		"ASSIGNTO": "Assegnare a",
+		"SELECT_QUEUE": "Seleziona una Coda",
 		"SELECT_CAMPAIGN": "Seleziona una Coda",
 		"FREE": "Libera",
 		"RESERVED": "Riservato",
@@ -543,6 +544,9 @@
 		"VALUE_RANGE_CHECK": "Il valore deve essere maggiore di",
 		"AND": "E",
 		"ENABLED": "Abilitato",
-		"DISABLED": "Disabilitato"
+		"DISABLED": "Disabilitato",
+		"WHATSAPP": "WhatsApp Connector",
+		"WHATSAPP_INTERACTIONS": "Interazioni WhatsApp Connector",
+		"VIDAOOSESSION": "Avvia videochiamata"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/ja.json b/public/app/main/apps/dashboards/i18n/ja.json
index 224ab90..7065c22 100644
--- a/public/app/main/apps/dashboards/i18n/ja.json
+++ b/public/app/main/apps/dashboards/i18n/ja.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "値はより大きい必要があります",
 		"CHOOSE": "選ぶ",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "添付ファイルなしでダウンロード",
-		"DOWNLOAD_WITH_ATTACHMENTS": "添付ファイル付きでダウンロード"
+		"DOWNLOAD_WITH_ATTACHMENTS": "添付ファイル付きでダウンロード",
+		"SELECT_QUEUE": "キューを選択",
+		"VIDAOOSESSION": "ビデオ通話を開始",
+		"WHATSAPP": "WhatsAppコネクタ",
+		"WHATSAPP_INTERACTIONS": "WhatsAppコネクタの相互作用"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/ko.json b/public/app/main/apps/dashboards/i18n/ko.json
index 61c74fc..e413699 100644
--- a/public/app/main/apps/dashboards/i18n/ko.json
+++ b/public/app/main/apps/dashboards/i18n/ko.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "값은보다 커야합니다",
 		"CHOOSE": "고르다",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "첨부 파일없이 다운로드",
-		"DOWNLOAD_WITH_ATTACHMENTS": "첨부 파일로 다운로드"
+		"DOWNLOAD_WITH_ATTACHMENTS": "첨부 파일로 다운로드",
+		"SELECT_QUEUE": "대기열 선택",
+		"VIDAOOSESSION": "영상 통화 시작",
+		"WHATSAPP": "WhatsApp 커넥터",
+		"WHATSAPP_INTERACTIONS": "WhatsApp 커넥터 상호 작용"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/lt.json b/public/app/main/apps/dashboards/i18n/lt.json
index 0a68f4a..a325bf1 100644
--- a/public/app/main/apps/dashboards/i18n/lt.json
+++ b/public/app/main/apps/dashboards/i18n/lt.json
@@ -297,253 +297,253 @@
 		"CLOSED": "Uždaryta",
 		"INFO": "Informacija",
 		"NOTE": "Pastaba",
-		"ACCEPT_ELSEWHERE": "Accepted elsewhere",
-		"ATTENTION": "Attention",
-		"SOCIAL": "Social",
-		"NO_JSCRIPTY_PROJECTS_AVAILABLE": "No Jscripty Projects available",
-		"OPENED": "Opened",
-		"FILTER": "Filter",
-		"SELECT_STATUS": "Select Status",
-		"SELECT_ACCOUNT": "Select Account",
-		"SELECT_WEBSITE": "Select Website",
-		"ALL": "All",
-		"INTERACTIONS": "Interactions",
-		"STARTEDAT": "Started At",
-		"STATUS": "Status",
-		"OPEN": "Open",
-		"SHOW": "Show",
-		"SHOW_DETAILS": "Show Details",
-		"HIDE_DETAILS": "Hide Details",
-		"EXTERNAL_URL": "External Link",
-		"NO_MAIL_ACCOUNTS_AVAILABLE": "No Email Accounts available",
-		"NO_FAX_ACCOUNTS_AVAILABLE": "No Fax Accounts available",
-		"NO_SMS_ACCOUNTS_AVAILABLE": "No SMS Accounts available",
-		"SELECT_DATE_RANGE": "Select Date Range",
-		"CLEAR": "Clear",
-		"CALL_NUMBER": "Call",
-		"TRANSFER_NUMBER": "Transfer",
-		"CALL_SAVED": "Call properly saved",
-		"CALL_DISPOSED": "Call properly disposed",
-		"CUSTOMER_PORT": "Originating TCP Port",
-		"INTERACTION_CLOSED": "Interaction properly closed",
-		"INTERACTION_DISPOSED": "Interaction properly disposed",
-		"INTERACTION_CLOSED_DISPOSED": "Interaction properly closed and disposed",
-		"SELECT_ALL": "Select all",
-		"ASSIGNED_TO_OTHERS": "Assigned to others",
+		"ACCEPT_ELSEWHERE": "Priimta kitur",
+		"ATTENTION": "Dėmesio",
+		"SOCIAL": "Socialinis",
+		"NO_JSCRIPTY_PROJECTS_AVAILABLE": "Nėra Jscripty projektų",
+		"OPENED": "Atidaryta",
+		"FILTER": "Filtras",
+		"SELECT_STATUS": "Pasirinkti būseną",
+		"SELECT_ACCOUNT": "Pasirinkti paskyrą",
+		"SELECT_WEBSITE": "Pasirinkti svetainę",
+		"ALL": "Visi",
+		"INTERACTIONS": "Sąveikos",
+		"STARTEDAT": "Prasidėjo nuo",
+		"STATUS": "Būsena",
+		"OPEN": "Atidaryti",
+		"SHOW": "Rodyti",
+		"SHOW_DETAILS": "Rodyti detales",
+		"HIDE_DETAILS": "Slėpti detales",
+		"EXTERNAL_URL": "Išorinis saitas",
+		"NO_MAIL_ACCOUNTS_AVAILABLE": "El. pašto paskyrų nėra",
+		"NO_FAX_ACCOUNTS_AVAILABLE": "Fakso paskyrų nėra",
+		"NO_SMS_ACCOUNTS_AVAILABLE": "SMS paskyrų nėra",
+		"SELECT_DATE_RANGE": "Pasirinkti dienų seką",
+		"CLEAR": "Valyti",
+		"CALL_NUMBER": "Skambinti",
+		"TRANSFER_NUMBER": "Perkėlimas",
+		"CALL_SAVED": "Skambutis tinkamai išsaugotas",
+		"CALL_DISPOSED": "Skambutis tinkamai pašalintas",
+		"CUSTOMER_PORT": "Sukurti TCP prievadą",
+		"INTERACTION_CLOSED": "Sąveika tinkamai uždaryta",
+		"INTERACTION_DISPOSED": "Sąveika tinkamai pašalinta",
+		"INTERACTION_CLOSED_DISPOSED": "Sąveika tinkamai uždaryta ir pašalinta",
+		"SELECT_ALL": "Pasirinkti viską",
+		"ASSIGNED_TO_OTHERS": "Paskirtas kitiems",
 		"ID": "Id",
-		"CHAT_INTERACTIONS": "Chat Interactions",
-		"MAIL_INTERACTIONS": "Email Interactions",
-		"SMS_INTERACTIONS": "SMS Interactions",
-		"OPENCHANNEL_INTERACTIONS": "Open Channel Interactions",
-		"FAX_INTERACTIONS": "Fax Interactions",
-		"DRAFT": "Draft",
-		"DRAFT_SAVE_WARNING_TITLE": "Overwrite existing draft?",
-		"DRAFT_SAVE_WARNING_MESSAGE": "There is already a draft saved for this interaction. Are you sure you want to overwrite it?",
-		"OVERWRITE": "Overwrite",
-		"CANCEL": "Cancel",
-		"UNTITLED": "Untitled",
-		"SAVE_AS_DRAFT": "Save as draft",
-		"UPDATE_DRAFT": "Update draft",
-		"NO_AVAILABLE_INTERACTION": "No available interaction",
-		"DOSSIERS": "Dossiers",
-		"DOSSIER": "Dossier",
-		"DOSSIER_INFO": "Information",
-		"SELECT_COMPANY": "Select Company",
-		"DOSSIERNAME": "Dossier Name",
-		"OPENDATE": "Open Date",
-		"ALL_COMPANIES": "All Companies",
-		"SELECT_WORKFLOW": "Select Workflow",
-		"WORKFLOW": "Select Workflow",
-		"SELECT_WORKFLOWSTEPS": "Select Workflow State",
-		"ALL_WORKFLOW": "All Workflow",
-		"STATE": "State",
-		"STEP": "Step",
-		"NEW_DOSSIER": "New Dossier",
-		"PRICELIST": "Price List",
-		"PRODUCTFILTERNAME": "Filter Name",
-		"PRODUCTNAME": "Product",
-		"PRODUCTINQUOTATION": "PRODUCT DETAILS",
-		"REQUEST": "REQUEST",
-		"QUOTATION": "QUOTATION",
-		"DOSSIERID": "Dossier ID",
-		"QUOTATIONNAME": "Quotation Name",
-		"QUOTATIONNOTES": "Quotation Notes",
-		"QUOTATIONSTATUS": "State",
-		"REQUESTNAME": "Request Name",
-		"REQUESTNOTES": "Request Notes",
-		"ALL_STEP": "All",
-		"UPDATED_AT": "Modified on",
-		"BY": "By",
-		"ORDER": "Order",
+		"CHAT_INTERACTIONS": "Pokalbių sąveikos",
+		"MAIL_INTERACTIONS": "El. pašto sąveikos",
+		"SMS_INTERACTIONS": "SMS sąveikos",
+		"OPENCHANNEL_INTERACTIONS": "Atidaryti kanalų sąveikas",
+		"FAX_INTERACTIONS": "Fakso sąveikos",
+		"DRAFT": "Juodraštis",
+		"DRAFT_SAVE_WARNING_TITLE": "Perrašyti esamą juodraštį?",
+		"DRAFT_SAVE_WARNING_MESSAGE": "Šiai sąveikai jau yra išsaugotas juodraštis. Ar tikrai norite jį perrašyti?",
+		"OVERWRITE": "Perrašyti",
+		"CANCEL": "Atšaukti",
+		"UNTITLED": "Be pavadinimo",
+		"SAVE_AS_DRAFT": "Išsaugoti kaip juodraštį",
+		"UPDATE_DRAFT": "Atnaujinti juodraštį",
+		"NO_AVAILABLE_INTERACTION": "Nėra galimos sąveikos",
+		"DOSSIERS": "Dokumentai",
+		"DOSSIER": "Dokumentas",
+		"DOSSIER_INFO": "Informacija",
+		"SELECT_COMPANY": "Pasirinkti įmonę",
+		"DOSSIERNAME": "Dokumento pavadinimas",
+		"OPENDATE": "Atidarymo data",
+		"ALL_COMPANIES": "Visos įmonės",
+		"SELECT_WORKFLOW": "Pasirinkti darbo eigą",
+		"WORKFLOW": "Pasirinkti darbo eigą",
+		"SELECT_WORKFLOWSTEPS": "Pasirinkti darbo eigos būseną",
+		"ALL_WORKFLOW": "Visa darbo eiga",
+		"STATE": "Būsena",
+		"STEP": "Žingsnis",
+		"NEW_DOSSIER": "Naujas dokumentas",
+		"PRICELIST": "Kainoraštis",
+		"PRODUCTFILTERNAME": "Filtro pavadinimas",
+		"PRODUCTNAME": "Produktas",
+		"PRODUCTINQUOTATION": "PRODUKTO APRAŠYMAS",
+		"REQUEST": "UŽKLAUSA",
+		"QUOTATION": "PASIŪLYMAS",
+		"DOSSIERID": "Dokumento ID",
+		"QUOTATIONNAME": "Pasiūlymo pavadinimas",
+		"QUOTATIONNOTES": "Pasiūlymo pastabos",
+		"QUOTATIONSTATUS": "Būsena",
+		"REQUESTNAME": "Užklausos pavadinimas",
+		"REQUESTNOTES": "Užklausos pastabos",
+		"ALL_STEP": "Visi",
+		"UPDATED_AT": "Modifikuotas",
+		"BY": "Pagal",
+		"ORDER": "Užsakymas",
 		"PROFORMA": "PROFORMA",
-		"INVOICE": "INVOICE",
-		"REQUESTID": "Request",
-		"QUOTATIONID": "Offer",
-		"ORDERID": "Order",
-		"PRICELISTNAME": "Price List",
-		"PRODUCTCODE": "Product Code",
-		"PRICELISTNETPRICE": "Net Price",
-		"PRICELISTDISCOUNT": "Price list discount",
-		"QUOTATIONQTY": "Quantity",
-		"QUOTATIONTAX": "Tax",
+		"INVOICE": "SĄSKAITA FAKTŪRA",
+		"REQUESTID": "Užklausa",
+		"QUOTATIONID": "Pasiūlymas",
+		"ORDERID": "Užsakymas",
+		"PRICELISTNAME": "Kainoraštis",
+		"PRODUCTCODE": "Produkto kodas",
+		"PRICELISTNETPRICE": "Grynoji kaina",
+		"PRICELISTDISCOUNT": "Kainoraščio nuolaida",
+		"QUOTATIONQTY": "Kiekis",
+		"QUOTATIONTAX": "Mokesčiai",
 		"QUOTATIONPROFORMAID": "Proforma ID",
-		"QUOTATIONINVOICEID": "Invoice ID",
-		"QUOTATIONDISCOUNT": "Quotation Discount",
-		"ORDER_INFO": "Order",
-		"REQUEST_INFO": "Request",
-		"QUOTATION_INFO": "Quotation",
-		"ORDERCLIENTCODE": "Customer Code",
-		"ORDERNOTES": "Note",
-		"PROFORMANAME": "Proforma name",
-		"AGENTFULLNAME": "Agent",
-		"PROFORMANOTES": "Note",
-		"PRODUCTINPROFORMA": "Products in proforma",
-		"INVOICENAME": "Invoice Name",
-		"INVOICENOTES": "Note",
-		"DOSSIERNOTES": "Note",
-		"QUOTATIONTOTALPRICE": "Total net",
-		"QUOTATIONTOTALTAX": "Total tax",
+		"QUOTATIONINVOICEID": "Sąskaitos faktūros ID",
+		"QUOTATIONDISCOUNT": "Pasiūlymo nuolaida",
+		"ORDER_INFO": "Užsakymas",
+		"REQUEST_INFO": "Užklausa",
+		"QUOTATION_INFO": "Pasiūlymas",
+		"ORDERCLIENTCODE": "Kliento kodas",
+		"ORDERNOTES": "Pastaba",
+		"PROFORMANAME": "Proforma pavadinimas",
+		"AGENTFULLNAME": "Agentas",
+		"PROFORMANOTES": "Pastaba",
+		"PRODUCTINPROFORMA": "Produktai proformoje",
+		"INVOICENAME": "Sąskaitos faktūros pavadinimas",
+		"INVOICENOTES": "Pastaba",
+		"DOSSIERNOTES": "Pastaba",
+		"QUOTATIONTOTALPRICE": "Bendras grynasis",
+		"QUOTATIONTOTALTAX": "Bendras mokestis",
 		"PROFORMA_INFO": "Proforma",
 		"PROFORMAID": "Id Proforma",
 		"PRICESALELISTNETPRICE": "Prezzo listino",
-		"PROFORMASTATUS": "State",
-		"INVOICESTATUS": "State",
-		"NO_PRODUCTINVOICE_AVAILABLE": "No product",
-		"INVOICEID": "Invoice",
-		"PRODUCTNOTE": "Note",
-		"INVOICE_INFO": "Invoice",
-		"COMPANYSTREET": "Address",
-		"COMPANYCITY": "City",
-		"COMPANYPOSTALCODE": "Postal Code",
-		"COMPANYCOUNTRY": "Country",
-		"COMPANYFAX": "Fax",
-		"COMPANYVAT": "Fiscal Code/VAT",
-		"COMPANYPHONE": "Telephone",
-		"COMPANYEMAIL": "Email",
-		"NOTES": "Note",
-		"QUOTATIONPRODUCTNOTE": "Product Note",
-		"QUOTATIONVAT": "VAT",
-		"AUTOPROFORMA": "SELF-PROFORMA",
-		"AUTOINVOICE": "SELF-INVOICE",
-		"MOVEASSET": "ASSET",
-		"ORDERSTATUS": "State",
-		"QUOTATIONTOTALS": "Total",
-		"QUOTATIONTOTAL": "TOTAL",
-		"PRODUCTTYPE": "Type",
-		"PRODUCTSUBSCRIPTION": "Duration",
-		"PRODUCTATUNIT": "Unit",
-		"INASSET": "Asset",
-		"PRODUCTININVOICE": "Products on the invoice",
-		"SUBSCRIPTIONS": "CUSTOMER SCHEDULE",
-		"SUBSCRIPTIONNAME": "Subscription",
-		"COMPANYNAME": "Company",
-		"NEXTINVOICE": "Next Invoice",
-		"SUBSCRIPTIONDETAIL": "Detail",
-		"PRODUCTDESCRIPTION": "Description",
-		"NETPRICE": "Price",
-		"DISCOUNT": "Discount",
-		"TAX": "Tax",
-		"ATTENDACELASTINVOICE": "Last invoice",
-		"ATTENDACENEXTINVOICE": "Next invoice",
-		"SELECT_PRODUCT": "Select product",
-		"SELECT_PRODUCTTYPE": "Select type",
-		"ALL_PRODUCTS": "All",
-		"ALL_STATUS": "All",
-		"PAYMENT_INFO": "Payment information",
-		"PAYMENTMETHOD": "Payment methods",
-		"PAYMENT": "Payment",
-		"DETAILS": "Details",
-		"INVOICEDETAILS": "INVOICE DETAILS",
-		"QUANTITY": "Quantity",
-		"MANAGESALES": "Subscriptions",
-		"ACCOUNTINGDOC": "Accounting",
-		"INVOICES": "INVOICES",
+		"PROFORMASTATUS": "Būsena",
+		"INVOICESTATUS": "Būsena",
+		"NO_PRODUCTINVOICE_AVAILABLE": "Nėra produkto",
+		"INVOICEID": "Sąskaita faktūra",
+		"PRODUCTNOTE": "Pastaba",
+		"INVOICE_INFO": "Sąskaita faktūra",
+		"COMPANYSTREET": "Adresas",
+		"COMPANYCITY": "Miestas",
+		"COMPANYPOSTALCODE": "Pašto kodas",
+		"COMPANYCOUNTRY": "Šalis",
+		"COMPANYFAX": "Faksas",
+		"COMPANYVAT": "Fiskalinis kodas/PVM",
+		"COMPANYPHONE": "Telefonas",
+		"COMPANYEMAIL": "El. paštas",
+		"NOTES": "Pastaba",
+		"QUOTATIONPRODUCTNOTE": "Produkto pastaba",
+		"QUOTATIONVAT": "PVM",
+		"AUTOPROFORMA": "SAVAIMINĖ-PROFORMA",
+		"AUTOINVOICE": "SAVAIMINĖ-SĄSKAITA FAKTŪRA",
+		"MOVEASSET": "TURTAS",
+		"ORDERSTATUS": "Būsena",
+		"QUOTATIONTOTALS": "Iš viso",
+		"QUOTATIONTOTAL": "IŠ VISO",
+		"PRODUCTTYPE": "Tipas",
+		"PRODUCTSUBSCRIPTION": "Trukmė",
+		"PRODUCTATUNIT": "Vienetas",
+		"INASSET": "Turtas",
+		"PRODUCTININVOICE": "Produktai sąskaitoje faktūroje",
+		"SUBSCRIPTIONS": "KLIENTŲ SĄRAŠAS",
+		"SUBSCRIPTIONNAME": "Prenumerata",
+		"COMPANYNAME": "Įmonė",
+		"NEXTINVOICE": "Kita sąskaita faktūra",
+		"SUBSCRIPTIONDETAIL": "Išsamiau",
+		"PRODUCTDESCRIPTION": "Aprašymas",
+		"NETPRICE": "Kaina",
+		"DISCOUNT": "Nuolaida",
+		"TAX": "Mokesčiai",
+		"ATTENDACELASTINVOICE": "Paskutinė sąskaita faktūra",
+		"ATTENDACENEXTINVOICE": "Kita sąskaita faktūra",
+		"SELECT_PRODUCT": "Pasirinkti produktą",
+		"SELECT_PRODUCTTYPE": "Pasirinkti tipą",
+		"ALL_PRODUCTS": "Visi",
+		"ALL_STATUS": "Visi",
+		"PAYMENT_INFO": "Mokėjimo informacija",
+		"PAYMENTMETHOD": "Mokėjimo metodai",
+		"PAYMENT": "Mokėjimas",
+		"DETAILS": "Išsami informacija",
+		"INVOICEDETAILS": "SĄSKAITOS FAKTŪROS DUOMENYS",
+		"QUANTITY": "Kiekis",
+		"MANAGESALES": "Prenumeratos",
+		"ACCOUNTINGDOC": "Apskaita",
+		"INVOICES": "SĄSKAITOS FAKTŪROS",
 		"PROFORMAS": "PROFORMA",
-		"PAYMENTS": "PAYMENTS",
-		"SELECT_PERIOD": "Select range",
-		"NO_PRODUCTPROFORMA_AVAILABLE": "No data available",
-		"NO_PRODUCTPRICELIST_AVAILABLE": "No data available",
-		"PROFORMAAUTHORIZED": "Authorized proforma",
-		"ADD_PRODUCTPRICELIST": "ADD PRODUCT",
-		"DELETE_PRODUCT": "Delete Product",
-		"AUTHORIZED": "AUTHORIZED",
-		"INVOICEDISCOUNT": "Discount",
-		"DEPOSIT": "DEPOSIT",
-		"BALANCE": "BALANCE",
-		"PRODUCTS": "PRODUCTS",
-		"INVOICENOPRODUCTDESCRIPTION": "Description on the invoice",
-		"INVOICENOPRODUCTAMOUNT": "Amount",
-		"INVOICENOTAXAMOUNT": "TAX",
-		"INVOICENOPRODUCTSAVE": "Save",
-		"INVOICENOPRODUCTUPDATE": "Update",
+		"PAYMENTS": "MOKĖJIMAI",
+		"SELECT_PERIOD": "Pasirinkti intervalą",
+		"NO_PRODUCTPROFORMA_AVAILABLE": "Nėra duomenų",
+		"NO_PRODUCTPRICELIST_AVAILABLE": "Nėra duomenų",
+		"PROFORMAAUTHORIZED": "Įgaliota proforma",
+		"ADD_PRODUCTPRICELIST": "PRIDĖTI PRODUKTĄ",
+		"DELETE_PRODUCT": "Ištrinti produktą",
+		"AUTHORIZED": "Įgaliotas",
+		"INVOICEDISCOUNT": "Nuolaida",
+		"DEPOSIT": "UŽSTATAS",
+		"BALANCE": "BALANSAS",
+		"PRODUCTS": "PRODUKTAI",
+		"INVOICENOPRODUCTDESCRIPTION": "Aprašymas sąskaitoje faktūroje",
+		"INVOICENOPRODUCTAMOUNT": "Suma",
+		"INVOICENOTAXAMOUNT": "Mokesčiai",
+		"INVOICENOPRODUCTSAVE": "Išsaugoti",
+		"INVOICENOPRODUCTUPDATE": "Atnaujinti",
 		"PDFPROFORMA": "PDF",
 		"PDFINVOICE": "PDF",
-		"PAIDANDEXPIRED": "Payment",
-		"CREDITNOTE": "CREDIT NOTE",
-		"CREDITNOTE_INFO": "Credit Note",
-		"MOVECREDITNOTE": "SELF-CREDIT NOTE",
-		"CREDITNOTEDETAILS": "Credit Note Detail",
+		"PAIDANDEXPIRED": "Mokėjimas",
+		"CREDITNOTE": "KREDITO PASTABA",
+		"CREDITNOTE_INFO": "Kredito pastaba",
+		"MOVECREDITNOTE": "SAVAIMINIO-KREDITO PASTABA",
+		"CREDITNOTEDETAILS": "Kredito pastabos išsami informacija",
 		"PDFCREDITNOTE": "PDF",
-		"CREDITINOTENAME": "Name",
-		"TOTALPAYMENTS": "Total payments",
-		"PROFORMADETAILS": "Details",
-		"CREATIONDATE": "Created at",
-		"STARTDATE": "Invoice Date",
-		"ENDDATE": "Expiry Date",
-		"NUMBER": "Number",
-		"PRODUCTPRICE": "Price",
-		"PRODUCTTAX": "Tax percentage",
-		"PRODUCTQTY": "Quantity",
-		"UPDATE_PRODUCT": "Update Product",
-		"QUOTATIONPRODUCTTYPE": "Type",
-		"QUOTATIONUNIT": "Unit",
-		"QUOTATIONSUBSCRIPTION": "Duration",
-		"SELECT_PERIOD_CREATION": "Select Creation Date",
-		"SELECT_PERIOD_START": "Select Date",
-		"SELECT_PERIOD_EXPIRE": "Select Expiry Date",
-		"NEW_COMPANY": "New",
-		"COMPANIES": "Companies",
-		"PAYED_AY": "Payed on",
-		"CLONEPROFORMA": "Clone",
-		"COMPANYDESC": "Description",
-		"COMPANYNATION": "Nation",
-		"GRAPHINVOICES": "Invoice emission chart",
-		"YEARS": "Years",
-		"FROM": "From",
-		"TO": "To",
-		"INVOICEEMITED": "Issued",
-		"INVOICEPAYED": "Payed",
-		"INVOICETOTAL": "Total",
-		"CHOOSE": "Choose",
-		"ADVANCED_SEARCH": "Advanced Search",
-		"NEW_CONDITION": "New Condition",
-		"SELECT_FIELD": "Select field",
-		"SELECT_OPERATOR": "Select operator",
-		"VALUE": "Value",
-		"VALUES": "Values",
-		"APPLY": "Apply",
-		"MEET_ALL_CONDITIONS": "Meet all conditions",
-		"MEET_ANY_CONDITIONS": "Meet at least one condition",
-		"EQUALS": "Equals",
-		"IS_NOT_EQUAL": "Does not equal",
-		"IS_AMONG": "Is among",
-		"IS_NOT_AMONG": "Is not among",
-		"IS_GREATER_THAN": "Is greater than",
-		"IS_GREATER_THAN_OR_EQUAL_TO": "Is greater than or equal to",
-		"IS_LESS_THAN": "Is less than",
-		"IS_LESS_THAN_OR_EQUAL_TO": "Is less than or equal to",
-		"IS_BETWEEN": "Is between",
-		"CONTAINS": "Contains",
-		"STARTS_WITH": "Starts with",
-		"ENDS_WITH": "Ends with",
-		"STARTING_DATE": "Starting date",
-		"ENDING_DATE": "Ending date",
-		"STARTING_VALUE": "Starting value",
-		"ENDING_VALUE": "Ending value",
-		"VALUE_RANGE_CHECK": "Value must be greater than",
-		"AND": "And",
-		"ENABLED": "Enabled",
-		"DISABLED": "Disabled",
+		"CREDITINOTENAME": "Pavadinimas",
+		"TOTALPAYMENTS": "Bendri mokėjimai",
+		"PROFORMADETAILS": "Išsami informacija",
+		"CREATIONDATE": "Sukurta",
+		"STARTDATE": "Sąskaitos faktūros data",
+		"ENDDATE": "Galiojimo pabaigos data",
+		"NUMBER": "Skaičius",
+		"PRODUCTPRICE": "Kaina",
+		"PRODUCTTAX": "Mokesčių procentas",
+		"PRODUCTQTY": "Kiekis",
+		"UPDATE_PRODUCT": "Atnaujinti produktą",
+		"QUOTATIONPRODUCTTYPE": "Tipas",
+		"QUOTATIONUNIT": "Vienetas",
+		"QUOTATIONSUBSCRIPTION": "Trukmė",
+		"SELECT_PERIOD_CREATION": "Pasirinkti sukūrimo datą",
+		"SELECT_PERIOD_START": "Pasirinkti datą",
+		"SELECT_PERIOD_EXPIRE": "Pasirinkti galiojimo pabaigos datą",
+		"NEW_COMPANY": "Naujas",
+		"COMPANIES": "Įmonės",
+		"PAYED_AY": "Sumokėta",
+		"CLONEPROFORMA": "Klonas",
+		"COMPANYDESC": "Aprašymas",
+		"COMPANYNATION": "Šalis",
+		"GRAPHINVOICES": "Sąskaitų faktūrų išleidimo schema",
+		"YEARS": "Metai",
+		"FROM": "Nuo",
+		"TO": "Iki",
+		"INVOICEEMITED": "Išleista",
+		"INVOICEPAYED": "Apmokėta",
+		"INVOICETOTAL": "Iš viso",
+		"CHOOSE": "Pasirinkti",
+		"ADVANCED_SEARCH": "Išplėstinė paieška",
+		"NEW_CONDITION": "Nauja sąlyga",
+		"SELECT_FIELD": "Pasirinkti lauką",
+		"SELECT_OPERATOR": "Pasirinkti operatorių",
+		"VALUE": "Vertė",
+		"VALUES": "Vertės",
+		"APPLY": "Taikyti",
+		"MEET_ALL_CONDITIONS": "Atitikti visas sąlygas",
+		"MEET_ANY_CONDITIONS": "Atitikti bent vieną sąlygą",
+		"EQUALS": "Lygu",
+		"IS_NOT_EQUAL": "Nelygu",
+		"IS_AMONG": "Yra tarp",
+		"IS_NOT_AMONG": "Nėra tarp",
+		"IS_GREATER_THAN": "Yra didesnis nei",
+		"IS_GREATER_THAN_OR_EQUAL_TO": "Yra didesnis arba lygus",
+		"IS_LESS_THAN": "Mažiau nei",
+		"IS_LESS_THAN_OR_EQUAL_TO": "Yra mažesnis arba lygus",
+		"IS_BETWEEN": "Yra tarp",
+		"CONTAINS": "Turėtų",
+		"STARTS_WITH": "Prasideda nuo",
+		"ENDS_WITH": "Baigiasi nuo",
+		"STARTING_DATE": "Pradžios data",
+		"ENDING_DATE": "Pabaigos data",
+		"STARTING_VALUE": "Pradinė vertė",
+		"ENDING_VALUE": "Galutinė vertė",
+		"VALUE_RANGE_CHECK": "Vertė turi būti didesnė nei",
+		"AND": "Ir",
+		"ENABLED": "Įjungtas",
+		"DISABLED": "Išjungtas",
 		"SELECT_QUEUE": "Pasirinkite eilę",
 		"VIDAOOSESSION": "Pradėti vaizdo skambutį",
 		"WHATSAPP": "„WhatsApp“ jungtis",
diff --git a/public/app/main/apps/dashboards/i18n/lv.json b/public/app/main/apps/dashboards/i18n/lv.json
index 84a255d..9f94fd4 100644
--- a/public/app/main/apps/dashboards/i18n/lv.json
+++ b/public/app/main/apps/dashboards/i18n/lv.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "Vērtībai jābūt lielākai par",
 		"CHOOSE": "Izvēlieties",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Lejupielādējiet bez pielikumiem",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Lejupielādējiet ar pielikumiem"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Lejupielādējiet ar pielikumiem",
+		"SELECT_QUEUE": "Atlasiet Rinda",
+		"VIDAOOSESSION": "Sāciet videozvanu",
+		"WHATSAPP": "WhatsApp savienotājs",
+		"WHATSAPP_INTERACTIONS": "WhatsApp savienotāju mijiedarbība"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/nl.json b/public/app/main/apps/dashboards/i18n/nl.json
index 18bfbe0..99b1bd9 100644
--- a/public/app/main/apps/dashboards/i18n/nl.json
+++ b/public/app/main/apps/dashboards/i18n/nl.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "Waarde moet groter zijn dan",
 		"CHOOSE": "Kiezen",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download zonder bijlagen",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Download met bijlagen"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Download met bijlagen",
+		"SELECT_QUEUE": "Selecteer een wachtrij",
+		"VIDAOOSESSION": "Start videogesprek",
+		"WHATSAPP": "WhatsApp-aansluiting",
+		"WHATSAPP_INTERACTIONS": "WhatsApp Connector-interacties"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/no.json b/public/app/main/apps/dashboards/i18n/no.json
index 17581d9..4bf430e 100644
--- a/public/app/main/apps/dashboards/i18n/no.json
+++ b/public/app/main/apps/dashboards/i18n/no.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "Verdien må være større enn",
 		"CHOOSE": "Velge",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Last ned uten vedlegg",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Last ned med vedlegg"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Last ned med vedlegg",
+		"SELECT_QUEUE": "Velg en kø",
+		"VIDAOOSESSION": "Start videosamtale",
+		"WHATSAPP": "WhatsApp-kontakt",
+		"WHATSAPP_INTERACTIONS": "WhatsApp-kontaktinteraksjoner"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/pl.json b/public/app/main/apps/dashboards/i18n/pl.json
index dfce8b3..e5cad8b 100644
--- a/public/app/main/apps/dashboards/i18n/pl.json
+++ b/public/app/main/apps/dashboards/i18n/pl.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "Wartość musi być większa niż",
 		"CHOOSE": "Wybierać",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Pobierz bez załączników",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Pobierz z załącznikami"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Pobierz z załącznikami",
+		"SELECT_QUEUE": "Wybierz kolejkę",
+		"VIDAOOSESSION": "Rozpocznij rozmowę wideo",
+		"WHATSAPP": "Złącze WhatsApp",
+		"WHATSAPP_INTERACTIONS": "Interakcje łącznika WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/pt-BR.json b/public/app/main/apps/dashboards/i18n/pt-BR.json
index fe56ce0..515aafa 100644
--- a/public/app/main/apps/dashboards/i18n/pt-BR.json
+++ b/public/app/main/apps/dashboards/i18n/pt-BR.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "O valor deve ser maior que",
 		"CHOOSE": "Escolher",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
+		"SELECT_QUEUE": "Selecione uma fila",
+		"VIDAOOSESSION": "Iniciar videochamada",
+		"WHATSAPP": "Conector WhatsApp",
+		"WHATSAPP_INTERACTIONS": "Interações do conector do WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/pt-PT.json b/public/app/main/apps/dashboards/i18n/pt-PT.json
index 81b93d4..3d0f1f3 100644
--- a/public/app/main/apps/dashboards/i18n/pt-PT.json
+++ b/public/app/main/apps/dashboards/i18n/pt-PT.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "O valor deve ser maior que",
 		"CHOOSE": "Escolher",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download sem anexos",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Download com anexos",
+		"SELECT_QUEUE": "Selecione uma fila",
+		"VIDAOOSESSION": "Iniciar videochamada",
+		"WHATSAPP": "Conector WhatsApp",
+		"WHATSAPP_INTERACTIONS": "Interações do conector do WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/ru.json b/public/app/main/apps/dashboards/i18n/ru.json
index 63d46ea..8b39d81 100644
--- a/public/app/main/apps/dashboards/i18n/ru.json
+++ b/public/app/main/apps/dashboards/i18n/ru.json
@@ -1,349 +1,349 @@
 {
 	"DASHBOARDS": {
-		"HOME": "Домой",
-		"CHAT": "Чат",
-		"MAIL": "Электронная почта",
-		"SMS": "SMS",
-		"OPENCHANNEL": "Открытый канал",
+		"HOME": "Home",
+		"CHAT": "Chat",
+		"MAIL": "Email",
+		"SMS": "Sms",
+		"OPENCHANNEL": "Open Channel",
 		"FAX": "Факс",
 		"RATING": "Рейтинг",
 		"FEEDBACK": "Обратная связь",
-		"SUBJECT": "Тема",
-		"REFERER": "Реферер",
-		"ACCOUNT": "Учетная запись",
-		"WEBSITE": "Сайт",
-		"AGENT": "Агент",
-		"CREATED_AT": "Создано на",
-		"CLOSED_AT": "Закрыто в",
-		"DISPOSITION": "Диспозиция",
-		"CONTACT": "Контакт",
+		"SUBJECT": "При условии",
+		"REFERER": "Referer",
+		"ACCOUNT": "Внимание",
+		"WEBSITE": "Веб-сайт",
+		"AGENT": "Оператор",
+		"CREATED_AT": "Созданный на",
+		"CLOSED_AT": "Закрыт",
+		"DISPOSITION": "Отчуждения",
+		"CONTACT": "Контакты",
 		"INTERACTION": "Взаимодействие",
 		"BROWSER_NAME": "Название браузера",
 		"BROWSER_VERSION": "Версия браузера",
 		"OS_NAME": "Название операционной системы",
 		"OS_VERSION": "Версия операционной системы",
 		"DEVICE_MODEL": "Модель устройства",
-		"DEVICE_VENDOR": "Поставщик устройства",
-		"DEVICE_TYPE": "Тип устройства",
-		"RECALLME": "Повторный вызов (Recall Me)",
-		"DROP_RATE": "Процент прерванных вызовов",
-		"DROPPED": "Прервано",
-		"DROPPED_TEXT": "Прерванные вызовы в очереди",
-		"DETAIL": "Деталь",
-		"MOTION_BULL": "Motion Bull",
-		"LIMITED": "Ограниченные",
-		"LIMITED_TEXT": "Кампании вызовов IVR: инициированные/ограниченные",
-		"DASHBOARDS": "Панели обработки",
+		"DEVICE_VENDOR": "Производителем устройства",
+		"DEVICE_TYPE": "Тип устройства.",
+		"RECALLME": "Напомнить мне",
+		"DROP_RATE": "Скорость опускания",
+		"DROPPED": "Снизилась",
+		"DROPPED_TEXT": "Падения очереди вызовов",
+		"DETAIL": "Подробно",
+		"MOTION_BULL": "Булл движения",
+		"LIMITED": "Ограниченный",
+		"LIMITED_TEXT": "Кампаний исходили вызовы/ограниченное",
+		"DASHBOARDS": "Инструментальные панели",
 		"RECORDINGS": "Записи",
-		"TODAY_MOTION_BULL_STATS": "Ежедневная статистика: очереди, кампании",
-		"ORIGINATED": "Инициированные",
-		"ORIGINATED_TEXT": "Инициированные вызовы в очереди",
-		"UPDATE": "Обновить",
-		"MORE": "Больше",
-		"MOTIONDIALER": "Motion Bull",
-		"DISPOSE": "Обслуживание вызова в очереди",
+		"TODAY_MOTION_BULL_STATS": "Сегодня Движение Булл Stats",
+		"ORIGINATED": "Возникла",
+		"ORIGINATED_TEXT": "Очереди исходили вызовы",
+		"UPDATE": "Обновление",
+		"MORE": "Более",
+		"MOTIONDIALER": "Булл движения",
+		"DISPOSE": "Утилизируйте",
 		"QUEUES": "Очереди",
-		"DIALER_CALL": "Система обзвона",
-		"ELAPSED_TIME": "Затраченное время",
-		"EDIT": "Редактировать",
-		"MERGE": "Объединить",
-		"DUPLICATE": "Дубликат",
-		"UNIQUEID": "Уникальный идентификатор",
-		"CAMPAIGN": "Кампания",
-		"NONE": "Отсутствуют",
+		"DIALER_CALL": "Вызов системы автоматического обзвона",
+		"ELAPSED_TIME": "Истекшее время",
+		"EDIT": "Изменить",
+		"MERGE": "Объединения",
+		"DUPLICATE": "Дублировать",
+		"UNIQUEID": "Uniqueid",
+		"CAMPAIGN": "Кампании",
+		"NONE": "При этом никто не голосовал",
 		"NAME": "Имя",
 		"ANSWER_MACHINE": "Автоответчик",
-		"INTERESTED": "Наличие заинтересованности",
-		"NOT_INTERESTED": "Отсутствие заинтересованности",
+		"INTERESTED": "Заинтересованных",
+		"NOT_INTERESTED": "Не заинтересованы",
 		"PERSONAL_INFO": "Личная информация",
-		"SOLD": "Проданные",
-		"SPECIAL": "Специальные",
+		"SOLD": "Продано",
+		"SPECIAL": "Специальный",
 		"BLACKLIST": "Черный список",
-		"RESCHEDULE": "Перепланирование",
-		"FIRSTNAME": "Имя",
+		"RESCHEDULE": "Перепланировать",
+		"FIRSTNAME": "Firstname",
 		"LASTNAME": "Фамилия",
-		"MOBILE": "Мобильный телефон",
+		"MOBILE": "Для мобильных ПК",
 		"DATE_OF_BIRTH": "Дата рождения",
 		"COMPANY": "Компания",
 		"TAG": "Тег",
-		"COUNTRY": "Страна",
+		"COUNTRY": "Страны",
 		"CITY": "Город",
-		"STREET": "Адрес",
-		"POSTALCODE": "Почтовый индекс",
+		"STREET": "Улицы",
+		"POSTALCODE": "Почтовый код",
 		"CUSTOM_FIELDS": "Пользовательские поля",
-		"GENERAL": "Общие",
-		"VOICE": "Голос",
-		"TODAY_IVR_CAMPAIGNS_STATS": "Ежедневная статистика: кампании вызовов IVR",
-		"TODAY_INBOUND_STATS": "Ежедневная статистика: входящие вызовы в очереди",
-		"TODAY_OUTBOUND_STATS": "Ежедневная статистика: исходящие вызовы в очереди",
+		"GENERAL": "Генеральной",
+		"VOICE": "Голосовой связи",
+		"TODAY_IVR_CAMPAIGNS_STATS": "Сегодня кампаний IVR Stats",
+		"TODAY_INBOUND_STATS": "Сегодня входящих Stats",
+		"TODAY_OUTBOUND_STATS": "Сегодня статистика исходящих вызовов",
 		"WAITING": "Ожидание",
-		"TALKING": "Текущий вызов",
+		"TALKING": "Разговор",
 		"INBOUND_ANSWERED": "Отвеченные",
 		"OUTBOUND_ANSWERED": "Отвеченные",
-		"ABANDONED": "Потерянные",
-		"TOTAL_OFFERED": "Всего предложенных",
-		"AVG_HOLD_TIME": "Среднее время ожидания",
-		"INBOUND_ANSWER_RATE": "Процент отвеченных вызовов",
-		"OUTBOUND_ANSWER_RATE": "Процент отвеченных вызовов",
+		"ABANDONED": "Отмененные",
+		"TOTAL_OFFERED": "Общий объем предлагаемых",
+		"AVG_HOLD_TIME": "Среднее время удержания",
+		"INBOUND_ANSWER_RATE": "Скорость ответа",
+		"OUTBOUND_ANSWER_RATE": "Скорость ответа",
 		"ABANDON_RATE": "Процент потерянных вызовов",
-		"UNMANAGED": "Необработанные",
-		"TOTAL": "Всего",
+		"UNMANAGED": "Неуправляемые коммутаторы",
+		"TOTAL": "Итого",
 		"TOT_DURATION": "Общая продолжительность",
 		"AVG_DURATION": "Средняя продолжительность",
 		"HELP": {
-			"ORIGINATEDLIMITED": "Кампании вызовов IVR: инициированные/ограниченные",
-			"DROPPED": "Общее количество прерванных вызовов в очереди ‒ для всех имеющихся очередей",
-			"DROP_RATE": "Процент прерванных вызовов среди всех вызовов в очереди",
-			"WAITING": "Общее количество взаимодействий в режиме ожидания",
+			"ORIGINATEDLIMITED": "Кампаний исходили вызовы/ограниченное",
+			"DROPPED": "Общее количество сброшенных очереди вызовов с учетом всех созданных очередей.",
+			"DROP_RATE": "Перепад скорости всех вызовов в очереди",
+			"WAITING": "Общее количество ожидающих вызовов в очереди, учитывая все созданные очередей",
 			"OUTBOUND_ANSWERED": "Общее количество завершенных исходящих вызовов",
-			"ABANDONED": "Общее количество потерянных взаимодействий",
-			"TOTAL_OFFERED": "Общее количество взаимодействий (завершенных + потерянных)",
-			"AVG_HOLD_TIME": "Среднее время ожидания при взаимодействии, а именно: среднее время ожидания ответа агента ‒ для всех имеющихся взаимодействий",
-			"OUTBOUND_ANSWER_RATE": "Процент ответов среди всех исходящих вызовов",
-			"ABANDON_RATE": "Процент потерянных вызовов среди всех вызовов в очереди",
-			"UNMANAGED": "Общее количество необработанных взаимодействий",
-			"TOTAL": "Общее количество исходящих вызовов",
+			"ABANDONED": "Общее число потерянных вызовов в очереди, учитывая все созданные очередей. Обратите внимание, что вызовы, которые были потеряны для времени ожидания и joinempty не учитываются в это значение",
+			"TOTAL_OFFERED": "Общее число вызовов в очереди (завершено отмененных). Обратите внимание, что вызовы, закончившийся в IVR, без ввода в очереди, не учитываются в это значение",
+			"AVG_HOLD_TIME": "Средняя очереди времени удержания, который представляет собой среднее время вызова в состоянии ожидания оператора ответа, учитывая все очереди",
+			"OUTBOUND_ANSWER_RATE": "Ответ всех исходящих вызовов",
+			"ABANDON_RATE": "Показатель несостоявшихся разговоров всех вызовов в очереди",
+			"UNMANAGED": "Общее число неуправляемых очереди вызовов с учетом всех созданных очередей. Она включает в себя вызовы, которые были потеряны для тайм-аута, joinempty, leavewhenempty и exitwithkey",
+			"TOTAL": "Общее число исходящих вызовов",
 			"TOT_DURATION": "Общая продолжительность всех исходящих вызовов",
 			"AVG_DURATION": "Средняя продолжительность всех завершенных исходящих вызовов",
-			"ORIGINATED": "Общее количество вызовов, набранных в кампаниях в очереди",
-			"ABANDONED_RATE": "Процент потерянных взаимодействий среди всех взаимодействий",
-			"AVG_MANAGED_TIME": "Среднее время взаимодействия, а именно: среднее время, затраченное при разговоре",
-			"MANAGED": "Общее количество завершенных взаимодействий",
-			"MANAGED_RATE": "Процент обработанных взаимодействий среди всех взаимодействий",
+			"ORIGINATED": "Общее число вызовов, для которых был набран номер в очереди кампаний",
+			"ABANDONED_RATE": "Отказ от всех взаимодействий",
+			"AVG_MANAGED_TIME": "Среднее время взаимодействия, а именно среднее время, проведенное во время разговора",
+			"MANAGED": "Общее количество выполненных взаимодействий",
+			"MANAGED_RATE": "Управляемая ставка всех взаимодействий",
 			"OPENED": "Общее количество активных взаимодействий",
-			"UNMANAGED_RATE": "Процент необработанных взаимодействий среди всех взаимодействий",
-			"VOICE_ABANDONED": "Общее количество потерянных вызовов в очереди ‒ с учетом всех имеющихся очередей. Обратите внимание: вызовы, которые были потеряны во время тайм-аута и добавления абонентов в очередь без агентов (joinempty), во внимание не принимаются",
-			"VOICE_ANSWERED": "Общее количество завершенных вызовов в очереди ‒ для всех имеющихся очередей",
-			"VOICE_ANSWER_RATE": "Процент ответов среди всех вызовов в очереди",
-			"VOICE_AVG_HOLD_TIME": "Среднее время ожидания в очереди, а именно: среднее время ожидания ответа агента ‒ для всех имеющихся очередей",
-			"VOICE_AVG_TALK_TIME": "Среднее время разговора в очереди, а именно: среднее время, затраченное во время разговора, ‒ для всех имеющихся очередей",
-			"VOICE_TALKING": "Общее количество активных вызовов в очереди ‒ для всех имеющихся очередей",
-			"VOICE_TOTAL_OFFERED": "Общее количество вызовов в очереди (завершенных + потерянных + необработанных в последней очереди потока). Обратите внимание: вызовы, которые относятся к IVR, а не к очереди, во внимание не принимаются",
-			"VOICE_UNMANAGED": "Общее количество необработанных вызовов в очереди ‒ для всех имеющихся очередей. Включает вызовы, которые были потеряны во время тайм-аута, joinempty, leavewhenempty и exitwithkey (см. дополнительную информацию в документе asterisk)",
-			"VOICE_WAITING": "Общее количество вызовов в очереди в режиме ожидания ‒ для всех имеющихся очередей",
-			"MANDATORY_DISPOSITION_ENABLED": "Для данной учетной записи включена обязательная диспозиция",
+			"UNMANAGED_RATE": "Неуправляемая скорость всех взаимодействий",
+			"VOICE_ABANDONED": "Общее количество заброшенных вызовов очереди, учитывая все существующие очереди. Обратите внимание, что вызовы, которые были оставлены для тайм-аута и объединения, не будут рассматриваться",
+			"VOICE_ANSWERED": "Общее количество завершенных вызовов очереди для всех существующих очередей",
+			"VOICE_ANSWER_RATE": "Скорость ответа всех вызовов в очереди",
+			"VOICE_AVG_HOLD_TIME": "Среднее время удержания в очереди, а именно среднее время, затрачиваемое на ожидание ответа агента, для всех существующих очередей",
+			"VOICE_AVG_TALK_TIME": "Среднее время разговора в очереди, а именно среднее время, проведенное во время разговора, для всех существующих очередей",
+			"VOICE_TALKING": "Общее количество активных вызовов очереди для всех существующих очередей",
+			"VOICE_TOTAL_OFFERED": "Общее количество вызовов очереди (завершено + заброшено). Обратите внимание, что вызовы, которые входят в IVR, а не в очередь, не будут рассматриваться",
+			"VOICE_UNMANAGED": "Общее количество неуправляемых вызовов очереди для всех существующих очередей. Он включает в себя вызовы, которые заброшены для тайм-аута, совместного использования, отложенного и exitwithkey (cfr. Asterisk doc для получения дополнительной информации)",
+			"VOICE_WAITING": "Общее количество вызовов очереди ожидания для всех существующих очередей",
+			"MANDATORY_DISPOSITION_ENABLED": "Для этого аккаунта включена обязательная утилизация",
 			"EXACT_MATCH_FILTER": "Поиск точного соответствия",
 			"LIKE_FILTER": "Поиск по указанному шаблону"
 		},
 		"ERRORS": {
-			"FIRSTNAME_REQUIRED": "Обязательное поле",
-			"PHONE_REQUIRED": "Обязательное поле",
+			"FIRSTNAME_REQUIRED": "Первое имя не требуется",
+			"PHONE_REQUIRED": "Номер телефона не требуется",
 			"DISPOSITION_REQUIRED": "Обязательное поле",
 			"AGENT_REQUIRED": "Обязательное поле",
 			"QUEUE_REQUIRED": "Обязательное поле",
 			"CAMPAIGN_REQUIRED": "Обязательное поле"
 		},
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"WELCOME_TO_MOTION": "Добро пожаловать в Motion",
-		"WELCOME_MESSAGE": "Используйте левую боковую панель для навигации по доступным разделам",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"WELCOME_TO_MOTION": "Добро пожаловать в движение",
+		"WELCOME_MESSAGE": "С помощью левой боковой панели для навигации по разделам.",
 		"ADD": "Добавить",
-		"CONTACTMANAGER": "Менеджер контактов",
-		"DASHBOARD": "Панель обработки",
-		"EDIT_CONTACT": "Редактирование контакта",
-		"EMAIL": "Электронная почта",
-		"FULLNAME": "Полное имя",
+		"CONTACTMANAGER": "Диспетчер контактов",
+		"DASHBOARD": "Приборной Панели",
+		"EDIT_CONTACT": "Редактирование контактной",
+		"EMAIL": "Адрес электронной почты",
+		"FULLNAME": "Fullname",
 		"LIST": "Список",
 		"NEW_CONTACT": "Новый контакт",
-		"PHONE": "Телефон",
+		"PHONE": "Номер телефона",
 		"SAVE": "Сохранить",
-		"INBOUND_WAITING_CALLS": "Входящие вызовы в режиме ожидания",
+		"INBOUND_WAITING_CALLS": "Входящих Вызовов ожидающих вызовов",
 		"CONTACTS": "Контакты",
 		"MYCONTACTS": "Мои контакты",
 		"ADD_CONTACT": "Добавить контакт",
-		"RELOAD": "Перезагрузка",
-		"WAITING_TEXT": "Взаимодействия в режиме ожидания",
-		"TALKING_TEXT": "Активные вызовы в очереди",
-		"INBOUND_ANSWERED_TEXT": "Отвеченные вызовы в очереди",
-		"ABANDONED_TEXT": "Потерянные взаимодействия",
-		"DROP_RATE_TEXT": "Процент прерванных вызовов в очереди",
-		"TOTAL_OFFERED_TEXT": "Предложенные взаимодействия",
-		"AVG_HOLD_TIME_TEXT": "Взаимодействия: СРЕДНЕЕ время ожидания",
-		"AVG_TALK_TIME_TEXT": "Вызовы в очереди: время разговора",
-		"INBOUND_ANSWER_RATE_TEXT": "Процент отвеченных вызовов среди вызовов в очереди",
-		"UNMANAGED_TEXT": "Необработанные взаимодействия",
-		"TOTAL_TEXT": "Всего исходящих вызовов",
-		"OUTBOUND_ANSWERED_TEXT": "Отвеченные исходящие вызовы",
-		"TOT_DURATION_TEXT": "Общая продолжительность исходящих вызовов",
-		"AVG_DURATION_TEXT": "Средняя продолжительность исходящих вызовов",
-		"OUTBOUND_ANSWER_RATE_TEXT": "Процент отвеченных вызовов среди исходящих вызовов",
+		"RELOAD": "Перезагрузить",
+		"WAITING_TEXT": "Ожидание в очереди вызовов",
+		"TALKING_TEXT": "Активные вызовы в очереди",
+		"INBOUND_ANSWERED_TEXT": "Ответили на очереди вызовов",
+		"ABANDONED_TEXT": "Отмененных вызовов в очереди",
+		"DROP_RATE_TEXT": "Вызовы в очереди скорость опускания",
+		"TOTAL_OFFERED_TEXT": "Общий объем вызовов в очереди",
+		"AVG_HOLD_TIME_TEXT": "Очереди вызовов среднее время удержания",
+		"AVG_TALK_TIME_TEXT": "Вызовы в очереди время разговора",
+		"INBOUND_ANSWER_RATE_TEXT": "Вызовы в очереди ответ ставки",
+		"UNMANAGED_TEXT": "Неуправляемые очереди вызовов",
+		"TOTAL_TEXT": "Общее количество исходящих вызовов",
+		"OUTBOUND_ANSWERED_TEXT": "Исходящий отвеченных вызовов",
+		"TOT_DURATION_TEXT": "Исходящие вызовы общей продолжительности",
+		"AVG_DURATION_TEXT": "Исходящие вызовы средняя продолжительность",
+		"OUTBOUND_ANSWER_RATE_TEXT": "Исходящие вызовы ответ ставки",
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"REPLY_PLACEHOLDER": "Введите сообщение и нажмите Enter, чтобы его отправить",
+		"OF": "В",
+		"REPLY_PLACEHOLDER": "Тип и нажмите enter для отправки сообщения",
 		"CONTACT_INFO": "Контактная информация",
-		"CLOSE_AND_DISPOSE": "Закрыть и обслужить вызов в очереди",
-		"DISPOSITIONS": "Диспозиции",
-		"CLOSE_WITHOUT_DISPOSE": "Закрыть без обслуживания вызова в очереди",
+		"CLOSE_AND_DISPOSE": "Закрыть и распоряжаться",
+		"DISPOSITIONS": "Распоряжения",
+		"CLOSE_WITHOUT_DISPOSE": "Чтобы закрыть окно без сохранения распоряжаться",
 		"ACCEPT": "Принять",
 		"REJECT": "Отклонить",
-		"CLOSED": "Закрытые",
-		"INFO": "Информация",
-		"NOTE": "Примечание",
-		"ACCEPT_ELSEWHERE": "Принимается в другом месте",
+		"CLOSED": "Закрыт",
+		"INFO": "Инфо",
+		"NOTE": "Примечание.",
+		"ACCEPT_ELSEWHERE": "Приемлемо для других",
 		"ATTENTION": "Внимание",
-		"SOCIAL": "Социальные медиа",
-		"NO_JSCRIPTY_PROJECTS_AVAILABLE": "Доступные проекты Jscripty отсутствуют",
-		"OPENED": "Открытые",
+		"SOCIAL": "Социальная",
+		"NO_JSCRIPTY_PROJECTS_AVAILABLE": "Ни Jscripty проекты",
+		"OPENED": "Открыть",
 		"FILTER": "Фильтр",
-		"SELECT_STATUS": "Выбрать статус",
-		"SELECT_ACCOUNT": "Выбрать учетную запись",
-		"SELECT_WEBSITE": "Выбрать сайт",
+		"SELECT_STATUS": "Выберите состояние",
+		"SELECT_ACCOUNT": "Выберите учетную запись",
+		"SELECT_WEBSITE": "Выберите веб-сайт",
 		"ALL": "Все",
-		"INTERACTIONS": "Взаимодействия",
-		"STARTEDAT": "Начато в",
+		"INTERACTIONS": "Взаимодействие",
+		"STARTEDAT": "Началась в",
 		"STATUS": "Состояние",
 		"OPEN": "Открыть",
 		"SHOW": "Показать",
-		"ME": "Меня/Мне",
-		"NOT_ASSIGNED": "Не назначено",
+		"ME": "Меня",
+		"NOT_ASSIGNED": "Не назначено",
 		"UNKNOWN": "Неизвестно",
-		"SELECT_USER": "Выбрать пользователя",
+		"SELECT_USER": "Выберите пользователя",
 		"LAST_MESSAGE": "Последнее сообщение",
 		"USER": "Пользователь",
-		"TAGS": "Теги",
-		"SELECT_TAG": "Выбрать тег",
+		"TAGS": "Tags",
+		"SELECT_TAG": "Выберите Метка",
 		"TYPE": "Тип",
 		"SOURCE": "Источник",
 		"DESTINATION": "Пункт назначения",
 		"CALLERID": "Идентификатор вызывающего абонента",
-		"END_AT": "Окончание в",
+		"END_AT": "В конце",
 		"DURATION": "Продолжительность",
 		"SHOW_DETAILS": "Показать детали",
-		"HIDE_DETAILS": "Скрыть детали",
+		"HIDE_DETAILS": "Скрыть подробности",
 		"EXTERNAL_URL": "Внешняя ссылка",
 		"SET_AS": "Установить как",
-		"PENDING": "Ожидание",
-		"CANNED_ANSWER_NOT_FOUND": "Готовые ответы не найдены",
-		"CANNED_ANSWER_SEARCH": "Ввести текст для поиска готового ответа",
-		"NO_MAIL_ACCOUNTS_AVAILABLE": "Доступные учетные записи электронной почты отсутствуют",
-		"NO_FAX_ACCOUNTS_AVAILABLE": "Доступные учетные записи факсов отсутствуют",
-		"NO_SMS_ACCOUNTS_AVAILABLE": "Доступные учетные записи SMS отсутствуют",
-		"FILTER_VOICE_QUEUES": "Фильтрация: очереди голосовой почты",
-		"LOADING_INTERACTION": "Мы загружаем данные: взаимодействие...",
-		"JANUARY": "Январь",
-		"FEBRUARY": "Февраль",
+		"PENDING": "В ожидании",
+		"CANNED_ANSWER_NOT_FOUND": "Нет консервов ответы были найдены",
+		"CANNED_ANSWER_SEARCH": "Введите текст для поиска ответа на консервы",
+		"NO_MAIL_ACCOUNTS_AVAILABLE": "Нет учетных записей электронной почты доступны",
+		"NO_FAX_ACCOUNTS_AVAILABLE": "Нет факсу счета доступны",
+		"NO_SMS_ACCOUNTS_AVAILABLE": "Без SMS счета доступны",
+		"FILTER_VOICE_QUEUES": "Фильтровать очереди голоса",
+		"LOADING_INTERACTION": "Мы загружаем взаимодействие ...",
+		"JANUARY": "январь",
+		"FEBRUARY": "февраль",
 		"MARCH": "Март",
-		"APRIL": "Апрель",
-		"MAY": "Май",
-		"JUNE": "Июнь",
-		"JULY": "Июль",
-		"AUGUST": "Август",
-		"SEPTEMBER": "Сентябрь",
-		"OCTOBER": "Октябрь",
-		"NOVEMBER": "Ноябрь",
+		"APRIL": "апрель",
+		"MAY": "май",
+		"JUNE": "июнь",
+		"JULY": "июль",
+		"AUGUST": "августейший",
+		"SEPTEMBER": "сентябрь",
+		"OCTOBER": "октября",
+		"NOVEMBER": "ноябрь",
 		"DECEMBER": "Декабрь",
-		"MON": "Понедельник",
-		"TUE": "Вторник",
-		"WED": "Среда",
-		"THU": "Четверг",
-		"FRI": "Пятница",
-		"SAT": "Суббота",
-		"SUN": "Воскресенье",
+		"MON": "понедельник",
+		"TUE": "вторник",
+		"WED": "Мы б",
+		"THU": "четверг",
+		"FRI": "пятница",
+		"SAT": "Сидел",
+		"SUN": "солнце",
 		"DELETE": "Удалить",
-		"LAST_3_DAYS": "Последние 3 дня",
-		"LAST_YEAR": "Прошлый год",
-		"THIS_YEAR": "Этот год",
+		"LAST_3_DAYS": "Последние 3 дня",
+		"LAST_YEAR": "В прошлом году",
+		"THIS_YEAR": "В этом году",
 		"LAST_MONTH": "Прошлый месяц",
 		"THIS_MONTH": "Этот месяц",
-		"LAST_WEEK": "Прошлая неделя",
-		"THIS_WEEK": "Эта неделя",
+		"LAST_WEEK": "На прошлой неделе",
+		"THIS_WEEK": "На этой неделе",
 		"YESTERDAY": "Вчера",
-		"TODAY": "Сегодня",
-		"SELECT_DATE": "Выбрать дату начала",
-		"SELECT_DATE_RANGE": "Выбрать диапазон дат",
+		"TODAY": "Cегодня",
+		"SELECT_DATE": "Выберите Дата начала",
+		"SELECT_DATE_RANGE": "Выберите диапазон дат",
 		"CLEAR": "Очистить",
 		"CALL_NUMBER": "Вызов",
-		"TRANSFER_NUMBER": "Перевод вызова",
-		"CALL_SAVED": "Вызов сохранен правильно",
-		"CALL_DISPOSED": "Обслуживание вызова в очереди выполнено правильно",
-		"CHANNEL_WAITING_TEXT": "Взаимодействия во время ожидания в очереди",
+		"TRANSFER_NUMBER": "Перевод",
+		"CALL_SAVED": "Правильно сохраненный вызов",
+		"CALL_DISPOSED": "Звоните правильно",
+		"CHANNEL_WAITING_TEXT": "Взаимодействие очереди ожидания",
 		"CHANNEL_QUEUE": "Очередь",
-		"CHANNEL_FROM": "От",
+		"CHANNEL_FROM": "Из",
 		"MARK_AS_UNREAD": "Отметить как непрочитанное",
-		"SELECT_AGENT": "Выбрать агента",
-		"READ": "Чтение",
-		"SELECT_READ_UNREAD": "Выбрать: Чтение/Непрочитанные",
-		"SELECT_SUBSTATUS": "Выбрать подстатус",
-		"UNREAD": "Непрочитанные",
-		"ABANDONAT": "Потерянные",
-		"ABANDONEDQUEUECALLS": "Потерянные вызовы в очереди",
+		"SELECT_AGENT": "Выбрать агент",
+		"READ": "Читать",
+		"SELECT_READ_UNREAD": "Выберите Чтение / Непрочитанное",
+		"SELECT_SUBSTATUS": "Выберите Substatus",
+		"UNREAD": "Не прочитано",
+		"ABANDONAT": "заброшенный",
+		"ABANDONEDQUEUECALLS": "Заброшенные звонки",
 		"FREE": "Свободно",
-		"LASTASSIGNEDTO": "Последний назначен",
+		"LASTASSIGNEDTO": "Последний присвоенный",
 		"QUEUE": "Очередь",
-		"QUEUECALLEREXITAT": "Прервано",
-		"QUEUECALLEREXITREASON": "Причина",
-		"RESERVED": "Зарезервировано",
-		"SELECT_CAMPAIGN": "Выбрать очередь",
-		"ASSIGNTO": "Назначить",
-		"CLICKRELOAD": "Новые потерянные вызовы! Перезагрузить",
-		"NOTAVAILABLE": "Отсутствует",
-		"CURRENTLY_IN_USE_BY": "В настоящее время используется",
-		"CUSTOMER_JOURNEY": "Цикл взаимодействия с клиентом",
-		"NO_DATA_AVAILABLE": "Данные отсутствуют",
+		"QUEUECALLEREXITAT": "брошено",
+		"QUEUECALLEREXITREASON": "причина",
+		"RESERVED": "Зарезервированный",
+		"SELECT_CAMPAIGN": "Выберите очередь",
+		"ASSIGNTO": "Назначить в",
+		"CLICKRELOAD": "Новые заброшенные звонки! Перезагрузить пожалуйста",
+		"NOTAVAILABLE": "Недоступен",
+		"CURRENTLY_IN_USE_BY": "В настоящее время используется",
+		"CUSTOMER_JOURNEY": "Путешествие клиента",
+		"NO_DATA_AVAILABLE": "Данные недоступны",
 		"AGENTS": "Агенты",
-		"TRANSFER": "Перевод вызова",
-		"NO_DISPOSITION_SET": "Диспозиция не установлена",
-		"ABANDONED_RATE": "Процент потерянных",
-		"ABANDONED_RATE_TEXT": "Процент потерянных взаимодействий",
-		"AVG_MANAGED_TIME": "СРЕДНЕЕ время обработки",
-		"AVG_MANAGED_TIME_TEXT": "Взаимодействия: СРЕДНЕЕ время обработки",
-		"MANAGED": "Обработанные",
-		"MANAGED_RATE": "Процент обработанных",
-		"MANAGED_RATE_TEXT": "Взаимодействия: процент обработанных ",
-		"MANAGED_TEXT": "Обработанные взаимодействия",
+		"TRANSFER": "Перевод",
+		"NO_DISPOSITION_SET": "Нет настройки",
+		"ABANDONED_RATE": "Заброшенная ставка",
+		"ABANDONED_RATE_TEXT": "Взаимодействие",
+		"AVG_MANAGED_TIME": "Время управления AVG",
+		"AVG_MANAGED_TIME_TEXT": "Взаимодействие Время управления AVG",
+		"MANAGED": "Удалось",
+		"MANAGED_RATE": "Управляемая ставка",
+		"MANAGED_RATE_TEXT": "Взаимодействие Управляемый тариф",
+		"MANAGED_TEXT": "Управляемые взаимодействия",
 		"OPENED_TEXT": "Открытые взаимодействия",
-		"TODAY_INTERACTIONS_STATS": "Взаимодействия: ежедневная статистика",
-		"UNMANAGED_RATE": "Процент необработанных",
-		"UNMANAGED_RATE_TEXT": "Взаимодействия: процент необработанных",
-		"VOICE_ABANDONED": "ПОТЕРЯННЫЕ",
-		"VOICE_ABANDONED_TEXT": "ПОТЕРЯННЫЕ ВЫЗОВЫ В ОЧЕРЕДИ",
-		"VOICE_ABANDON_RATE": "ПРОЦЕНТ ПОТЕРЯННЫХ ВЫЗОВОВ",
-		"VOICE_ABANDON_RATE_TEXT": "ВЫЗОВЫ В ОЧЕРЕДИ: ПРОЦЕНТ ПОТЕРЯННЫХ ВЫЗОВОВ",
-		"VOICE_ANSWERED": "ОТВЕЧЕННЫЕ",
-		"VOICE_ANSWERED_TEXT": "ОТВЕЧЕННЫЕ ВЫЗОВЫ В ОЧЕРЕДИ",
-		"VOICE_ANSWER_RATE": "ПРОЦЕНТ ОТВЕЧЕННЫХ ВЫЗОВОВ",
-		"VOICE_ANSWER_RATE_TEXT": "ВЫЗОВЫ В ОЧЕРЕДИ: ПРОЦЕНТ ОТВЕЧЕННЫХ ВЫЗОВОВ",
-		"VOICE_AVG_HOLD_TIME": "СРЕДНЕЕ ВРЕМЯ ОЖИДАНИЯ",
-		"VOICE_AVG_HOLD_TIME_TEXT": "ВЫЗОВЫ В ОЧЕРЕДИ: СРЕДНЕЕ ВРЕМЯ ОЖИДАНИЯ",
-		"VOICE_AVG_TALK_TIME": "СРЕДНЕЕ ВРЕМЯ РАЗГОВОРА",
-		"VOICE_AVG_TALK_TIME_TEXT": "ВЫЗОВЫ В ОЧЕРЕДИ: ВРЕМЯ РАЗГОВОРА",
-		"VOICE_TALKING": "ТЕКУЩИЙ ВЫЗОВ",
-		"VOICE_TALKING_TEXT": "АКТИВНЫЕ ВЫЗОВЫ В ОЧЕРЕДИ",
-		"VOICE_TOTAL_OFFERED": "ВСЕГО ПРЕДЛОЖЕННЫХ",
-		"VOICE_TOTAL_OFFERED_TEXT": "ВСЕГО ВЫЗОВОВ В ОЧЕРЕДИ",
-		"VOICE_UNMANAGED": "НЕОБРАБОТАННЫЕ",
-		"VOICE_UNMANAGED_TEXT": "НЕОБРАБОТАННЫЕ ВЫЗОВЫ В ОЧЕРЕДИ",
-		"VOICE_WAITING": "ОЖИДАНИЕ",
-		"VOICE_WAITING_TEXT": "ВЫЗОВЫ В ОЧЕРЕДИ В РЕЖИМЕ ОЖИДАНИЯ",
+		"TODAY_INTERACTIONS_STATS": "Взаимодействие",
+		"UNMANAGED_RATE": "Неуправляемая ставка",
+		"UNMANAGED_RATE_TEXT": "Взаимодействие Неуправляемая ставка",
+		"VOICE_ABANDONED": "ПОКИНУТАЯ",
+		"VOICE_ABANDONED_TEXT": "ЗАПРЕЩЕННЫЕ ЗВОНКИ",
+		"VOICE_ABANDON_RATE": "ABANDON RATE",
+		"VOICE_ABANDON_RATE_TEXT": "QUEUE ВЫЗЫВАЕТ СБРОС",
+		"VOICE_ANSWERED": "ОТВЕТЫ",
+		"VOICE_ANSWERED_TEXT": "ОТВЕТНЫЕ ЗВОНКИ",
+		"VOICE_ANSWER_RATE": "ОТВЕТ",
+		"VOICE_ANSWER_RATE_TEXT": "QUEUE ВЫЗЫВАЕТ ОТВЕТ",
+		"VOICE_AVG_HOLD_TIME": "СРЕДНЕЕ ВРЕМЯ",
+		"VOICE_AVG_HOLD_TIME_TEXT": "QUEUE CALLS AVG HOLD TIME",
+		"VOICE_AVG_TALK_TIME": "СРЕДНЕЕ ВРЕМЯ РАЗГОВОРОВ",
+		"VOICE_AVG_TALK_TIME_TEXT": "QUEUE CALLS TALK TIME",
+		"VOICE_TALKING": "ГОВОРЯ",
+		"VOICE_TALKING_TEXT": "АКТИВНЫЕ ЗВОНОЧНЫЕ ЗВОНКИ",
+		"VOICE_TOTAL_OFFERED": "ВСЕГО ПРЕДЛАГАЕТСЯ",
+		"VOICE_TOTAL_OFFERED_TEXT": "ОБЩИЕ ВОПРОСЫ",
+		"VOICE_UNMANAGED": "Неуправляемый",
+		"VOICE_UNMANAGED_TEXT": "НЕОПРЕДЕЛЕННЫЕ ВОПРОСЫ",
+		"VOICE_WAITING": "ОЖИДАНИЯ",
+		"VOICE_WAITING_TEXT": "ОЖИДАНИЕ ЗВОНОКОВ",
 		"DOWNLOAD": "Скачать",
-		"SCHEDULED_CALLS": "Запланированные вызовы",
-		"PRIVATE": "Закрытая",
-		"PUBLIC": "Открытая",
-		"PUBLIC_INTERACTION": "Взаимодействие является открытым",
-		"VISIBILITY": "Видимость",
-		"INTERACTION_CLOSED": "Взаимодействие закрыто правильно",
-		"INTERACTION_CLOSED_DISPOSED": "Взаимодействие закрыто правильно, и его обслуживание выполнено правильно",
-		"INTERACTION_DISPOSED": "Обслуживание взаимодействия выполнено правильно",
-		"ASSIGNED_TO_OTHERS": "Назначенные другим",
+		"SCHEDULED_CALLS": "Запланированные звонки",
+		"PRIVATE": "Частный",
+		"PUBLIC": "общественного",
+		"PUBLIC_INTERACTION": "Взаимодействие публично",
+		"VISIBILITY": "видимость",
+		"INTERACTION_CLOSED": "Взаимодействие правильно закрыто",
+		"INTERACTION_CLOSED_DISPOSED": "Взаимодействие правильно закрыто и расположено",
+		"INTERACTION_DISPOSED": "Взаимодействие правильно расположено",
+		"ASSIGNED_TO_OTHERS": "Назначено другим",
 		"SELECT_ALL": "Выбрать все",
-		"CHAT_INTERACTIONS": "Взаимодействия: чат",
-		"FAX_INTERACTIONS": "Взаимодействия: факс",
-		"ID": "Идентификатор",
-		"MAIL_INTERACTIONS": "Взаимодействия: электронная почта",
-		"OPENCHANNEL_INTERACTIONS": "Взаимодействия: открытый канал",
-		"SMS_INTERACTIONS": "Взаимодействия: SMS",
+		"CHAT_INTERACTIONS": "Чат Взаимодействия",
+		"FAX_INTERACTIONS": "Факс Взаимодействия",
+		"ID": "Id",
+		"MAIL_INTERACTIONS": "Взаимодействие по электронной почте",
+		"OPENCHANNEL_INTERACTIONS": "Взаимодействие открытого канала",
+		"SMS_INTERACTIONS": "SMS взаимодействия",
 		"CANCEL": "Отмена",
-		"DRAFT": "Черновик",
-		"DRAFT_SAVE_WARNING_MESSAGE": "По данному взаимодействию уже был сохранен черновик. Вы уверены, что хотите выполнить запись поверх существующего черновика?",
-		"DRAFT_SAVE_WARNING_TITLE": "Выполнить запись поверх существующего черновика?",
+		"DRAFT": "Черновой вариант",
+		"DRAFT_SAVE_WARNING_MESSAGE": "Для этого взаимодействия уже сохранен черновик. Вы уверены, что хотите перезаписать это?",
+		"DRAFT_SAVE_WARNING_TITLE": "Перезаписать существующий черновик?",
 		"OVERWRITE": "Переписать",
-		"SAVE_AS_DRAFT": "Сохранить черновик",
+		"SAVE_AS_DRAFT": "Сохранить как черновик",
 		"UNTITLED": "Без названия",
 		"UPDATE_DRAFT": "Обновить черновик",
-		"NO_AVAILABLE_INTERACTION": "Взаимодействие отсутствует",
+		"NO_AVAILABLE_INTERACTION": "Нет доступного взаимодействия",
 		"ACCOUNTINGDOC": "Учет",
 		"ADD_PRODUCTPRICELIST": "ДОБАВИТЬ ПРОДУКТ",
-		"AGENTFULLNAME": "Агент",
+		"AGENTFULLNAME": "агент",
 		"ALL_COMPANIES": "Все компании",
 		"ALL_PRODUCTS": "Все",
 		"ALL_STATUS": "Все",
@@ -351,198 +351,202 @@
 		"ALL_WORKFLOW": "Весь рабочий процесс",
 		"ATTENDACELASTINVOICE": "Последний счет",
 		"ATTENDACENEXTINVOICE": "Следующий счет",
-		"AUTHORIZED": "АВТОРИЗОВАННЫЙ",
-		"AUTOINVOICE": "СЧЕТ: САМОСТОЯТ.",
-		"AUTOPROFORMA": "ПРОФОРМА: САМОСТОЯТ.",
+		"AUTHORIZED": "УПОЛНОМОЧЕННЫЙ",
+		"AUTOINVOICE": "SELF-СЧЕТА",
+		"AUTOPROFORMA": "SELF-PROFORMA",
 		"BALANCE": "БАЛАНС",
 		"BY": "По",
-		"CLONEPROFORMA": "Клонирование",
+		"CLONEPROFORMA": "клон",
 		"COMPANIES": "Компании",
-		"COMPANYCITY": "Город",
+		"COMPANYCITY": "город",
 		"COMPANYCOUNTRY": "Страна",
 		"COMPANYDESC": "Описание",
-		"COMPANYEMAIL": "Электронная почта",
-		"COMPANYFAX": "Факс",
+		"COMPANYEMAIL": "Эл. адрес",
+		"COMPANYFAX": "факс",
 		"COMPANYNAME": "Компания",
-		"COMPANYNATION": "Страна",
-		"COMPANYPHONE": "Телефон",
-		"COMPANYPOSTALCODE": "Почтовый индекс",
-		"COMPANYSTREET": "Адрес",
-		"COMPANYVAT": "Фискальный код/НДС",
-		"CREATIONDATE": "Создано в",
-		"CREDITINOTENAME": "Имя",
-		"CREDITNOTE": "КРЕДИТ-НОТА",
-		"CREDITNOTEDETAILS": "Кредит-нота: детали",
-		"CREDITNOTE_INFO": "Кредит-нота",
+		"COMPANYNATION": "народ",
+		"COMPANYPHONE": "телефон",
+		"COMPANYPOSTALCODE": "Почтовый Код",
+		"COMPANYSTREET": "Улица / проспект / Площадь",
+		"COMPANYVAT": "Фискальный код / НДС",
+		"CREATIONDATE": "Создано на",
+		"CREDITINOTENAME": "имя",
+		"CREDITNOTE": "КРЕДИТНОЕ ПРИМЕЧАНИЕ",
+		"CREDITNOTEDETAILS": "Деталь кредитной ноты",
+		"CREDITNOTE_INFO": "Кредитная записка",
 		"DELETE_PRODUCT": "Удалить продукт",
 		"DEPOSIT": "ДЕПОЗИТ",
-		"DETAILS": "Реквизиты",
-		"DISCOUNT": "Скидка",
+		"DETAILS": "Детали",
+		"DISCOUNT": "скидка",
 		"DOSSIER": "Досье",
-		"DOSSIERID": "Идентификатор досье",
+		"DOSSIERID": "ID досье",
 		"DOSSIERNAME": "Имя досье",
-		"DOSSIERNOTES": "Примечание",
-		"DOSSIERS": "Досье",
+		"DOSSIERNOTES": "Заметка",
+		"DOSSIERS": "Dossiers",
 		"DOSSIER_INFO": "Информация",
 		"ENDDATE": "Дата истечения срока действия",
-		"FROM": "От",
-		"GRAPHINVOICES": "Таблица выставления счетов",
+		"FROM": "Из",
+		"GRAPHINVOICES": "Таблица эмиссии счетов",
 		"INASSET": "Актив",
-		"INVOICE": "СЧЕТ",
-		"INVOICEDETAILS": "РЕКВИЗИТЫ",
-		"INVOICEDISCOUNT": "Скидка",
-		"INVOICEEMITED": "Выставлен",
-		"INVOICEID": "Счет",
-		"INVOICENAME": "Имя счета",
+		"INVOICE": "ВЫСТАВЛЕННЫЙ СЧЕТ",
+		"INVOICEDETAILS": "ИНФОРМАЦИЯ О СЧЕТЕ",
+		"INVOICEDISCOUNT": "скидка",
+		"INVOICEEMITED": "Выпущен",
+		"INVOICEID": "Выставленный счет",
+		"INVOICENAME": "Название счета",
 		"INVOICENOPRODUCTAMOUNT": "Количество",
-		"INVOICENOPRODUCTDESCRIPTION": "Описание в счете",
+		"INVOICENOPRODUCTDESCRIPTION": "Описание на счете",
 		"INVOICENOPRODUCTSAVE": "Сохранить",
 		"INVOICENOPRODUCTUPDATE": "Обновить",
-		"INVOICENOTAXAMOUNT": "TAX",
-		"INVOICENOTES": "Примечание",
-		"INVOICEPAYED": "Оплачен",
+		"INVOICENOTAXAMOUNT": "НАЛОГОВЫЙ",
+		"INVOICENOTES": "Заметка",
+		"INVOICEPAYED": "оплаченный",
 		"INVOICES": "СЧЕТА",
-		"INVOICESTATUS": "Состояние",
-		"INVOICETOTAL": "Всего",
-		"INVOICE_INFO": "Счет",
+		"INVOICESTATUS": "состояние",
+		"INVOICETOTAL": "Общее количество",
+		"INVOICE_INFO": "Выставленный счет",
 		"MANAGESALES": "Подписки",
 		"MOVEASSET": "АКТИВ",
-		"MOVECREDITNOTE": "КРЕДИТ-НОТА: САМОСТОЯТ.",
+		"MOVECREDITNOTE": "АВТОКРЕДИТНОЕ ПРИМЕЧАНИЕ",
 		"NETPRICE": "Цена",
-		"NEW_COMPANY": "Новый",
+		"NEW_COMPANY": "новый",
 		"NEW_DOSSIER": "Новое досье",
 		"NEXTINVOICE": "Следующий счет",
-		"NOTES": "Примечание",
-		"NO_PRODUCTINVOICE_AVAILABLE": "Продукт отсутствует",
-		"NO_PRODUCTPRICELIST_AVAILABLE": "Данные отсутствуют",
-		"NO_PRODUCTPROFORMA_AVAILABLE": "Данные отсутствуют",
-		"NUMBER": "Номер",
-		"OPENDATE": "Дата открытия",
-		"ORDER": "Порядок",
+		"NOTES": "Заметка",
+		"NO_PRODUCTINVOICE_AVAILABLE": "Нет продукта",
+		"NO_PRODUCTPRICELIST_AVAILABLE": "Данные недоступны",
+		"NO_PRODUCTPROFORMA_AVAILABLE": "Данные недоступны",
+		"NUMBER": "номер",
+		"OPENDATE": "Открытая дата",
+		"ORDER": "порядок",
 		"ORDERCLIENTCODE": "Код клиента",
-		"ORDERID": "Порядок",
-		"ORDERNOTES": "Примечание",
-		"ORDERSTATUS": "Состояние",
-		"ORDER_INFO": "Порядок",
+		"ORDERID": "порядок",
+		"ORDERNOTES": "Заметка",
+		"ORDERSTATUS": "состояние",
+		"ORDER_INFO": "порядок",
 		"PAIDANDEXPIRED": "Оплата",
-		"PAYED_AY": "Оплачено",
+		"PAYED_AY": "Оплачено на",
 		"PAYMENT": "Оплата",
 		"PAYMENTMETHOD": "Способы оплаты",
-		"PAYMENTS": "ПЛАТЕЖИ",
+		"PAYMENTS": "ОПЛАТА",
 		"PAYMENT_INFO": "Платежная информация",
 		"PDFCREDITNOTE": "PDF",
 		"PDFINVOICE": "PDF",
 		"PDFPROFORMA": "PDF",
 		"PRICELIST": "Прайс-лист",
-		"PRICELISTDISCOUNT": "Прайс-лист: скидка",
+		"PRICELISTDISCOUNT": "Прайс-лист со скидкой",
 		"PRICELISTNAME": "Прайс-лист",
 		"PRICELISTNETPRICE": "Цена нетто",
-		"PRICESALELISTNETPRICE": "Прайс-лист",
-		"PRODUCTATUNIT": "Единица",
+		"PRICESALELISTNETPRICE": "Prezzo listino",
+		"PRODUCTATUNIT": "Единица измерения",
 		"PRODUCTCODE": "Код продукта",
 		"PRODUCTDESCRIPTION": "Описание",
 		"PRODUCTFILTERNAME": "Имя фильтра",
-		"PRODUCTININVOICE": "Продукты в счете",
-		"PRODUCTINPROFORMA": "Продукты в счете-проформе",
-		"PRODUCTINQUOTATION": "ИНФОРМАЦИЯ О ПРОДУКТЕ",
+		"PRODUCTININVOICE": "Продукты на счете",
+		"PRODUCTINPROFORMA": "Продукты в проформе",
+		"PRODUCTINQUOTATION": "ИНФОРМАЦИЯ О ПРОДУКТЕ",
 		"PRODUCTNAME": "Продукт",
-		"PRODUCTNOTE": "Примечание",
+		"PRODUCTNOTE": "Заметка",
 		"PRODUCTPRICE": "Цена",
 		"PRODUCTQTY": "Количество",
-		"PRODUCTS": "ПРОДУКТЫ",
-		"PRODUCTSUBSCRIPTION": "Продолжительность",
-		"PRODUCTTAX": "Налоговая ставка",
+		"PRODUCTS": "ТОВАРЫ",
+		"PRODUCTSUBSCRIPTION": "продолжительность",
+		"PRODUCTTAX": "Процент налога",
 		"PRODUCTTYPE": "Тип",
-		"PROFORMA": "ПРОФОРМА",
-		"PROFORMAAUTHORIZED": "Авторизованный счет-проформа",
-		"PROFORMADETAILS": "Реквизиты",
-		"PROFORMAID": "Идентификатор счета-проформы",
-		"PROFORMANAME": "Имя счета-проформы",
-		"PROFORMANOTES": "Примечание",
-		"PROFORMAS": "ПРОФОРМА",
-		"PROFORMASTATUS": "Состояние",
-		"PROFORMA_INFO": "Счет-проформа",
+		"PROFORMA": "PROFORMA",
+		"PROFORMAAUTHORIZED": "Авторизованная проформа",
+		"PROFORMADETAILS": "Детали",
+		"PROFORMAID": "Ид Проформа",
+		"PROFORMANAME": "Название проформы",
+		"PROFORMANOTES": "Заметка",
+		"PROFORMAS": "PROFORMA",
+		"PROFORMASTATUS": "состояние",
+		"PROFORMA_INFO": "Proforma",
 		"QUANTITY": "Количество",
-		"QUOTATION": "ПРЕДЛОЖЕНИЕ",
-		"QUOTATIONDISCOUNT": "Предложение: скидка",
-		"QUOTATIONID": "Предложение",
-		"QUOTATIONINVOICEID": "Идентификатор счета",
-		"QUOTATIONNAME": "Предложение: имя",
-		"QUOTATIONNOTES": "Предложение: примечания",
-		"QUOTATIONPRODUCTNOTE": "Продукт: примечание",
+		"QUOTATION": "ЦИТАТА",
+		"QUOTATIONDISCOUNT": "Цитата Скидка",
+		"QUOTATIONID": "Предлагает",
+		"QUOTATIONINVOICEID": "ID счета",
+		"QUOTATIONNAME": "Название цитаты",
+		"QUOTATIONNOTES": "Цитата Примечания",
+		"QUOTATIONPRODUCTNOTE": "Примечание продукта",
 		"QUOTATIONPRODUCTTYPE": "Тип",
-		"QUOTATIONPROFORMAID": "Идентификатор счета-проформы",
+		"QUOTATIONPROFORMAID": "Проформа ID",
 		"QUOTATIONQTY": "Количество",
-		"QUOTATIONSTATUS": "Состояние",
-		"QUOTATIONSUBSCRIPTION": "Продолжительность",
-		"QUOTATIONTAX": "Налог",
-		"QUOTATIONTOTAL": "ВСЕГО",
-		"QUOTATIONTOTALPRICE": "Всего, нетто",
-		"QUOTATIONTOTALS": "Всего",
-		"QUOTATIONTOTALTAX": "Всего, налог",
-		"QUOTATIONUNIT": "Единица",
-		"QUOTATIONVAT": "VAT",
-		"QUOTATION_INFO": "Предложение",
+		"QUOTATIONSTATUS": "состояние",
+		"QUOTATIONSUBSCRIPTION": "продолжительность",
+		"QUOTATIONTAX": "налог",
+		"QUOTATIONTOTAL": "ОБЩЕЕ КОЛИЧЕСТВО",
+		"QUOTATIONTOTALPRICE": "Всего нетто",
+		"QUOTATIONTOTALS": "Общее количество",
+		"QUOTATIONTOTALTAX": "Всего налога",
+		"QUOTATIONUNIT": "Единица измерения",
+		"QUOTATIONVAT": "НДС",
+		"QUOTATION_INFO": "Цитата",
 		"REQUEST": "ЗАПРОС",
 		"REQUESTID": "Запрос",
-		"REQUESTNAME": "Запрос: имя",
-		"REQUESTNOTES": "Запрос: примечания",
+		"REQUESTNAME": "Имя запроса",
+		"REQUESTNOTES": "Запрос примечаний",
 		"REQUEST_INFO": "Запрос",
-		"SELECT_COMPANY": "Выбрать компанию",
-		"SELECT_PERIOD": "Выбрать диапазон",
-		"SELECT_PERIOD_CREATION": "Выбрать дату создания",
-		"SELECT_PERIOD_EXPIRE": "Выбрать дату истечения срока действия",
-		"SELECT_PERIOD_START": "Выбрать дату",
-		"SELECT_PRODUCT": "Выбрать продукт",
-		"SELECT_PRODUCTTYPE": "Выбрать тип",
-		"SELECT_WORKFLOW": "Выбрать рабочий процесс",
-		"SELECT_WORKFLOWSTEPS": "Выбрать статус рабочего процесса",
+		"SELECT_COMPANY": "Выберите компанию",
+		"SELECT_PERIOD": "Выберите диапазон",
+		"SELECT_PERIOD_CREATION": "Выберите дату создания",
+		"SELECT_PERIOD_EXPIRE": "Выберите дату истечения",
+		"SELECT_PERIOD_START": "Выберите дату",
+		"SELECT_PRODUCT": "Выберите продукт",
+		"SELECT_PRODUCTTYPE": "Выберите тип",
+		"SELECT_WORKFLOW": "Выберите рабочий процесс",
+		"SELECT_WORKFLOWSTEPS": "Выберите состояние рабочего процесса",
 		"STARTDATE": "Дата счета",
-		"STATE": "Состояние",
-		"STEP": "Этап",
-		"SUBSCRIPTIONDETAIL": "Деталь",
+		"STATE": "состояние",
+		"STEP": "шаг",
+		"SUBSCRIPTIONDETAIL": "подробность",
 		"SUBSCRIPTIONNAME": "Подписка",
-		"SUBSCRIPTIONS": "ГРАФИК КЛИЕНТА",
-		"TAX": "Налог",
-		"TO": "Кому",
+		"SUBSCRIPTIONS": "РАСПИСАНИЕ КЛИЕНТОВ",
+		"TAX": "налог",
+		"TO": "к",
 		"TOTALPAYMENTS": "Всего платежей",
-		"UPDATED_AT": "Изменено",
+		"UPDATED_AT": "Изменено на",
 		"UPDATE_PRODUCT": "Обновить продукт",
-		"WORKFLOW": "Выбрать рабочий процесс",
-		"YEARS": "Годы",
-		"CUSTOMER_IP": "Исходящий IP-адрес",
-		"CUSTOMER_PORT": "Исходящий трафик: порт TCP",
+		"WORKFLOW": "Выберите рабочий процесс",
+		"YEARS": "лет",
+		"CUSTOMER_IP": "Исходящий IP-адрес",
+		"CUSTOMER_PORT": "Исходящий порт TCP",
 		"ADVANCED_SEARCH": "Расширенный поиск",
 		"AND": "И",
-		"APPLY": "Применить",
+		"APPLY": "Подать заявление",
 		"CONTAINS": "Содержит",
-		"DISABLED": "Отключено",
+		"DISABLED": "инвалид",
 		"ENABLED": "Включено",
 		"ENDING_DATE": "Дата окончания",
-		"ENDING_VALUE": "Конечное значение",
+		"ENDING_VALUE": "Конечная стоимость",
 		"ENDS_WITH": "Заканчивается на",
 		"EQUALS": "Равно",
 		"IS_AMONG": "Среди",
-		"IS_BETWEEN": "Между",
-		"IS_GREATER_THAN": "Больше чем",
-		"IS_GREATER_THAN_OR_EQUAL_TO": "Больше либо равно",
+		"IS_BETWEEN": "Находится между",
+		"IS_GREATER_THAN": "Больше, чем",
+		"IS_GREATER_THAN_OR_EQUAL_TO": "Больше или равно",
 		"IS_LESS_THAN": "Меньше чем",
-		"IS_LESS_THAN_OR_EQUAL_TO": "Меньше либо равно",
-		"IS_NOT_AMONG": "Не среди",
-		"IS_NOT_EQUAL": "Не равно",
-		"MEET_ALL_CONDITIONS": "Выполнить все условия",
-		"MEET_ANY_CONDITIONS": "Выполнить по крайней мере одно условие",
-		"NEW_CONDITION": "Новое условие",
-		"SELECT_FIELD": "Выбрать поле",
-		"SELECT_OPERATOR": "Выбрать оператора",
+		"IS_LESS_THAN_OR_EQUAL_TO": "Меньше или равно",
+		"IS_NOT_AMONG": "Не среди",
+		"IS_NOT_EQUAL": "Не равно",
+		"MEET_ALL_CONDITIONS": "Встретить все условия",
+		"MEET_ANY_CONDITIONS": "Выполнить хотя бы одно условие",
+		"NEW_CONDITION": "Новое состояние",
+		"SELECT_FIELD": "Выберите поле",
+		"SELECT_OPERATOR": "Выберите оператора",
 		"STARTING_DATE": "Дата начала",
 		"STARTING_VALUE": "Начальное значение",
 		"STARTS_WITH": "Начинается с",
 		"VALUE": "Значение",
-		"VALUES": "Значения",
+		"VALUES": "Ценности",
 		"VALUE_RANGE_CHECK": "Значение должно быть больше чем",
-		"CHOOSE": "Выбрать",
+		"CHOOSE": "выбирать",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Скачать без вложений",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Скачать с вложениями"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Скачать с вложениями",
+		"SELECT_QUEUE": "Выберите очередь",
+		"VIDAOOSESSION": "Начать видеозвонок",
+		"WHATSAPP": "Коннектор WhatsApp",
+		"WHATSAPP_INTERACTIONS": "Взаимодействие с соединителем WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/sv.json b/public/app/main/apps/dashboards/i18n/sv.json
index ce367b6..4b4070a 100644
--- a/public/app/main/apps/dashboards/i18n/sv.json
+++ b/public/app/main/apps/dashboards/i18n/sv.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "Värdet måste vara större än",
 		"CHOOSE": "Välja",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Ladda ner utan bilagor",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Ladda ner med bilagor"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Ladda ner med bilagor",
+		"SELECT_QUEUE": "Välj en kö",
+		"VIDAOOSESSION": "Starta videosamtal",
+		"WHATSAPP": "WhatsApp-anslutning",
+		"WHATSAPP_INTERACTIONS": "WhatsApp-anslutningsinteraktioner"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/tr.json b/public/app/main/apps/dashboards/i18n/tr.json
index ac72646..afb6066 100644
--- a/public/app/main/apps/dashboards/i18n/tr.json
+++ b/public/app/main/apps/dashboards/i18n/tr.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "Değer şundan büyük olmalıdır:",
 		"CHOOSE": "Seç",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Ekler olmadan indir",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Eklerle indir"
+		"DOWNLOAD_WITH_ATTACHMENTS": "Eklerle indir",
+		"SELECT_QUEUE": "Bir Sıra Seçin",
+		"VIDAOOSESSION": "Görüntülü Görüşmeyi Başlatın",
+		"WHATSAPP": "WhatsApp Bağlayıcısı",
+		"WHATSAPP_INTERACTIONS": "WhatsApp Bağlayıcı Etkileşimleri"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/zh-CN.json b/public/app/main/apps/dashboards/i18n/zh-CN.json
index 276e876..8aca8e0 100644
--- a/public/app/main/apps/dashboards/i18n/zh-CN.json
+++ b/public/app/main/apps/dashboards/i18n/zh-CN.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "值必须大于",
 		"CHOOSE": "选择",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "下载无附件",
-		"DOWNLOAD_WITH_ATTACHMENTS": "附件下载"
+		"DOWNLOAD_WITH_ATTACHMENTS": "附件下载",
+		"SELECT_QUEUE": "选择一个队列",
+		"VIDAOOSESSION": "开始视频通话",
+		"WHATSAPP": "WhatsApp连接器",
+		"WHATSAPP_INTERACTIONS": "WhatsApp连接器互动"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/dashboards/i18n/zh-TW.json b/public/app/main/apps/dashboards/i18n/zh-TW.json
index 601afb2..6b43168 100644
--- a/public/app/main/apps/dashboards/i18n/zh-TW.json
+++ b/public/app/main/apps/dashboards/i18n/zh-TW.json
@@ -543,6 +543,10 @@
 		"VALUE_RANGE_CHECK": "值必須大於",
 		"CHOOSE": "選擇",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "下載無附件",
-		"DOWNLOAD_WITH_ATTACHMENTS": "附件下載"
+		"DOWNLOAD_WITH_ATTACHMENTS": "附件下載",
+		"SELECT_QUEUE": "選擇一個隊列",
+		"VIDAOOSESSION": "開始視頻通話",
+		"WHATSAPP": "WhatsApp連接器",
+		"WHATSAPP_INTERACTIONS": "WhatsApp連接器互動"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/fax/i18n/lt.json b/public/app/main/apps/fax/i18n/lt.json
index 607ba56..f93cd3d 100644
--- a/public/app/main/apps/fax/i18n/lt.json
+++ b/public/app/main/apps/fax/i18n/lt.json
@@ -1,261 +1,261 @@
 {
 	"FAX": {
-		"LOGIN_TIME": "Login time",
-		"PAUSE_TIME": "Pause time",
-		"DOWNLOAD_INTERACTION": "Download",
-		"TRANSFER": "Transfer",
-		"QUEUETRANSFER": "Queue Transfer",
-		"QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-		"AGENTTRANSFER": "Agent Transfer",
-		"AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-		"TAG": "Tag",
-		"EDIT_TAG": "Edit Tag",
-		"WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-		"NOTIFICATION": "Notification",
-		"NOTIFICATIONSOUND": "Sound",
-		"NOTIFICATIONSHAKE": "Shake",
-		"NOTIFICATIONTEMPLATE": "Template",
-		"SYSTEM": "System",
-		"EDIT_SYSTEM": "Edit System",
-		"COMMAND": "Command",
-		"VARIABLE": "Variable",
-		"CANNEDANSWERS": "Canned Answers",
-		"FAXCANNEDANSWERS": "Canned Answers",
-		"NO_FAXCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-		"NEW_FAXCANNEDANSWER": "New Canned Answer",
-		"ADD_FAXCANNEDANSWER": "Add Canned Answer",
-		"EDIT_CHATCANNEDANSWER": "Edit Canned Answer",
-		"DELETE_CHATCANNEDANSWER": "Delete Canned Answer",
-		"SPYINTERACTION": "Spy",
-		"TAGS": "Tags",
-		"REPLY": "Reply",
-		"SEND": "Send",
-		"TO": "To",
-		"FROM": "From",
-		"NO_AGENT_ONLINE": "No Agent Online",
-		"GOTOREALTIME_FAXQUEUE": "Go To Realtime Fax Queue",
-		"EDIT_TRUNK": "Edit Trunk",
-		"REGISTERED": "Registered",
-		"UNREGISTERED": "Unregistered",
-		"EDIT_ACCOUNT": "Edit Fax Account",
-		"PARTIALPAUSE": "Partial Pause",
-		"BUSY": "Busy",
-		"TIMER": "Timer",
-		"IDLE": "Idle",
-		"CAPACITY": "Capacity",
-		"GOTO_FAXACCOUNT": "Go To Realtime Fax",
-		"ACCOUNTS": "Accounts",
-		"GOTOREALTIME_FAXACCOUNT": "Go To Realtime Fax",
-		"TRUNK_STATUS": "Trunk Status",
-		"TRUNKS": "Trunks",
-		"REGISTRY": "Registry",
-		"NO_REGISTRY": "No Registry",
-		"PAUSE": "Pause",
-		"INFO": "Info",
-		"FULLNAME": "Fullname",
-		"INTERNAL": "Internal",
-		"PHONE_STATE": "Phone State",
-		"PHONE_STATUS": "Phone Status",
+		"LOGIN_TIME": "Prisijungimo laikas",
+		"PAUSE_TIME": "Pauzės laikas",
+		"DOWNLOAD_INTERACTION": "Parsisiųsti",
+		"TRANSFER": "Perkėlimas",
+		"QUEUETRANSFER": "Eilės perkėlimas",
+		"QUEUETRANSFERTIMEOUT": "Eilės perkėlimo laikas",
+		"AGENTTRANSFER": "Agento perkėlimas",
+		"AGENTTRANSFERTIMEOUT": "Agento perkėlimo laikas",
+		"TAG": "Žyma",
+		"EDIT_TAG": "Redaguoti žymą",
+		"WAITFORTHEASSIGNEDAGENT": "Palaukite paskirto agento",
+		"NOTIFICATION": "Pranešimas",
+		"NOTIFICATIONSOUND": "Garsas",
+		"NOTIFICATIONSHAKE": "Vibravimas",
+		"NOTIFICATIONTEMPLATE": "Šablonas",
+		"SYSTEM": "Sistema",
+		"EDIT_SYSTEM": "Redaguoti sistemą",
+		"COMMAND": "Komanda",
+		"VARIABLE": "Kintamas",
+		"CANNEDANSWERS": "Įrašyti atsakymai",
+		"FAXCANNEDANSWERS": "Įrašyti atsakymai",
+		"NO_FAXCANNEDANSWER_AVAILABLE": "Nėra įrašytų atsakymų",
+		"NEW_FAXCANNEDANSWER": "Naujas įrašytas atsakymas",
+		"ADD_FAXCANNEDANSWER": "Pridėti įrašytą atsakymą",
+		"EDIT_CHATCANNEDANSWER": "Redaguoti įrašytą atsakymą",
+		"DELETE_CHATCANNEDANSWER": "Ištrinti įrašytą atsakymą",
+		"SPYINTERACTION": "Sekti",
+		"TAGS": "Žymos",
+		"REPLY": "Atsakyti",
+		"SEND": "Siųsti",
+		"TO": "Kam",
+		"FROM": "Nuo",
+		"NO_AGENT_ONLINE": "Nėra prisijungusio agento",
+		"GOTOREALTIME_FAXQUEUE": "Eiti į fakso eilę realiu laiku",
+		"EDIT_TRUNK": "Redaguoti ryšio kanalą",
+		"REGISTERED": "Registruotas",
+		"UNREGISTERED": "Neregistruotas",
+		"EDIT_ACCOUNT": "Redaguoti fakso paskyrą",
+		"PARTIALPAUSE": "Dalinė pauzė",
+		"BUSY": "Užimtas",
+		"TIMER": "Laikmatis",
+		"IDLE": "Laisvas",
+		"CAPACITY": "Našumas",
+		"GOTO_FAXACCOUNT": "Eiti į faksą realiu laiku",
+		"ACCOUNTS": "Paskyros",
+		"GOTOREALTIME_FAXACCOUNT": "Eiti į faksą realiu laiku",
+		"TRUNK_STATUS": "Ryšio kanalo statusas",
+		"TRUNKS": "Ryšio kanalai",
+		"REGISTRY": "Registras",
+		"NO_REGISTRY": "Nėra registro",
+		"PAUSE": "Pauzė",
+		"INFO": "Informacija",
+		"FULLNAME": "Vardas ir pavardė",
+		"INTERNAL": "Vidinis",
+		"PHONE_STATE": "Telefono būsena",
+		"PHONE_STATUS": "Telefono statusas",
 		"LOGOUT": "Logout",
-		"DEFAULT_PAUSE": "Default pause",
-		"AGENTADD_QUEUE": "Add Agent to Fax queue",
-		"AGENTSADD_QUEUE": "Add Agents to Fax queue",
-		"UNPAUSE": "End Pause",
-		"AGENTS": "Agents",
-		"QUEUES": "Queues",
-		"LOGGED_IN": "Logged in",
-		"PAUSED": "Paused",
-		"READY": "Ready",
-		"WAITING": "Waiting",
-		"PRIORITY": "Priority",
-		"CONDITION": "Condition",
-		"TRUEPRIORITY": "True Priority",
-		"FALSEPRIORITY": "False Priority",
-		"VALUE": "Value",
-		"EDIT_FAXQUEUE": "Edit Fax Queue",
-		"EDIT_AGENT": "Edit Agent",
-		"EDIT_GOTO": "Edit Goto",
-		"EDIT_NOOP": "Edit Noop",
-		"EDIT_GOTOP": "Edit GotoP",
-		"EDIT_GOTOIF": "Edit GotoIf",
-		"EDIT_QUEUE": "Edit Fax Queue",
-		"EDIT_CLOSE": "Edit Close",
-		"QUEUE": "Queue",
-		"GOTOIF": "GotoIf",
+		"DEFAULT_PAUSE": "Numatytoji pauzė",
+		"AGENTADD_QUEUE": "Pridėti agentą prie fakso eilės",
+		"AGENTSADD_QUEUE": "Pridėti agentus prie fakso eilės",
+		"UNPAUSE": "Nutraukti pauzę",
+		"AGENTS": "Agentai",
+		"QUEUES": "Eilės",
+		"LOGGED_IN": "Prisijungęs",
+		"PAUSED": "Pristabdyta",
+		"READY": "Parengta",
+		"WAITING": "Laukiama",
+		"PRIORITY": "Prioritetas",
+		"CONDITION": "Būklė",
+		"TRUEPRIORITY": "Teisingas prioritetas",
+		"FALSEPRIORITY": "Klaidingas prioritetas",
+		"VALUE": "Reikšmė",
+		"EDIT_FAXQUEUE": "Redaguoti fakso eilę",
+		"EDIT_AGENT": "Redaguoti agentą",
+		"EDIT_GOTO": "Redaguoti Eiti į",
+		"EDIT_NOOP": "Redaguoti Noop",
+		"EDIT_GOTOP": "Redaguoti GotoP",
+		"EDIT_GOTOIF": "Redaguoti Eiti į jei",
+		"EDIT_QUEUE": "Redaguoti fakso eilę",
+		"EDIT_CLOSE": "Redaguoti Uždaryti",
+		"QUEUE": "Eilė",
+		"GOTOIF": "Eiti į jei",
 		"GOTOP": "GotoP",
 		"NOOP": "Noop",
-		"AGENT": "Agent",
-		"NOTES": "Notes",
-		"CLOSEDAT": "Closed At",
-		"DISPOSITION": "Disposition",
-		"REALTIME": "Realtime",
-		"TEAMADD_FAXQUEUE": "Add Team to Fax Queue",
-		"AGENTADD_FAXQUEUE": "Add Agent to Fax Queue",
-		"NAME": "Name",
-		"FAXQUEUES": "Fax Queues",
-		"SEARCH_FOR_ANYONE": "Search",
-		"MANDATORYDISPOSITION": "Mandatory disposition",
-		"MANDATORYDISPOSITIONPAUSEID": "Pause status when in mandatory disposition",
+		"AGENT": "Agentas",
+		"NOTES": "Pastabos",
+		"CLOSEDAT": "Uždaryta",
+		"DISPOSITION": "Išdėstymas",
+		"REALTIME": "Realus laikas",
+		"TEAMADD_FAXQUEUE": "Pridėti komandą prie fakso eilės",
+		"AGENTADD_FAXQUEUE": "Pridėti agentą prie fakso eilės",
+		"NAME": "Pavadinimas",
+		"FAXQUEUES": "Fakso eilės",
+		"SEARCH_FOR_ANYONE": "Paieška",
+		"MANDATORYDISPOSITION": "Privalomas išdėstymas",
+		"MANDATORYDISPOSITIONPAUSEID": "Pauzės statusas esant privalomam išdėstymui",
 		"ERRORS": {
-			"QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-			"AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-			"TAG_REQUIRED": "Mandatory Field",
-			"WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-			"AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"NAME_MUST_VALID_PATTERN": "Wrong format",
-			"COMMAND_REQUIRED": "Mandatory Field",
-			"TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-			"TEXT_REQUIRED": "Mandatory Field",
-			"VALUE_REQUIRED": "Mandatory Field",
-			"PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"AGENT_REQUIRED": "Mandatory Field",
-			"QUEUE_REQUIRED": "Mandatory Field",
-			"TRUEPRIORITY_REQUIRED": "Mandatory Field",
-			"FALSEPRIORITY_REQUIRED": "Mandatory Field",
-			"CONDITION_REQUIRED": "Mandatory Field",
-			"PRIORITY_REQUIRED": "Mandatory Field",
-			"DISPOSITION_REQUIRED": "Mandatory Field",
-			"NAME_REQUIRED": "Mandatory Field",
-			"AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-			"MOTIONADDRESS_REQUIRED": "Mandatory Field",
-			"MOTIONADDRESS_MUST_VALID_URL": "Wrong format",
-			"LOCALSTATIONID_REQUIRED": "Mandatory Field",
-			"MODEM_REQUIRED": "Mandatory Field",
-			"GATEWAY_REQUIRED": "Mandatory Field",
-			"FAXDETECT_REQUIRED": "Mandatory Field",
-			"T38TIMEOUT_REQUIRED": "Mandatory Field",
-			"TIMEOUT_REQUIRED": "Mandatory Field",
-			"HEADERINFO_REQUIRED": "Mandatory Field",
-			"TRUNK_REQUIRED": "Mandatory Field",
-			"LIST_REQUIRED": "Mandatory Field",
-			"KEY_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-			"KEY_REQUIRED": "Mandatory Field",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "You should specify a pause status when in mandatory disposition"
+			"QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"QUEUETRANSFERTIMEOUT_REQUIRED": "Privalomas laukas",
+			"AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"AGENTTRANSFERTIMEOUT_REQUIRED": "Privalomas laukas",
+			"TAG_REQUIRED": "Privalomas laukas",
+			"WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"WAITFORTHEASSIGNEDAGENT_REQUIRED": "Privalomas laukas",
+			"AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"NAME_MUST_VALID_PATTERN": "Blogas formatas",
+			"COMMAND_REQUIRED": "Privalomas laukas",
+			"TEXT_MAX_LENGTH": "Reikšmės maksimalus ilgis turi būti lygus {{max}}",
+			"TEXT_REQUIRED": "Privalomas laukas",
+			"VALUE_REQUIRED": "Privalomas laukas",
+			"PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"AGENT_REQUIRED": "Privalomas laukas",
+			"QUEUE_REQUIRED": "Privalomas laukas",
+			"TRUEPRIORITY_REQUIRED": "Privalomas laukas",
+			"FALSEPRIORITY_REQUIRED": "Privalomas laukas",
+			"CONDITION_REQUIRED": "Privalomas laukas",
+			"PRIORITY_REQUIRED": "Privalomas laukas",
+			"DISPOSITION_REQUIRED": "Privalomas laukas",
+			"NAME_REQUIRED": "Privalomas laukas",
+			"AGENT_TIMEOUT_REQUIRED": "Privalomas laukas",
+			"MOTIONADDRESS_REQUIRED": "Privalomas laukas",
+			"MOTIONADDRESS_MUST_VALID_URL": "Blogas formatas",
+			"LOCALSTATIONID_REQUIRED": "Privalomas laukas",
+			"MODEM_REQUIRED": "Privalomas laukas",
+			"GATEWAY_REQUIRED": "Privalomas laukas",
+			"FAXDETECT_REQUIRED": "Privalomas laukas",
+			"T38TIMEOUT_REQUIRED": "Privalomas laukas",
+			"TIMEOUT_REQUIRED": "Privalomas laukas",
+			"HEADERINFO_REQUIRED": "Privalomas laukas",
+			"TRUNK_REQUIRED": "Privalomas laukas",
+			"LIST_REQUIRED": "Privalomas laukas",
+			"KEY_MAX_LENGTH": "Reikšmės maksimalus ilgis turi būti lygus {{max}}",
+			"KEY_REQUIRED": "Privalomas laukas",
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Privalomo išdėstymo metu turėtumėte nurodyti pauzės statusą"
 		},
-		"STRATEGY": "Strategy",
-		"AGENT_TIMEOUT": "Agent Timeout",
-		"DESCRIPTION": "Description",
-		"ADD_FAXQUEUE": "Add Fax Queue",
-		"DELETE_FAXQUEUE": "Delete Fax Queue",
-		"CREATED_AT": "Created At",
-		"SAVE": "Save",
-		"SETTINGS": "Settings",
-		"GENERAL": "General",
-		"FAXACCOUNTS": "Fax Accounts",
-		"MOTIONADDRESS": "Motion Address",
-		"ADD_FAXACCOUNT": "Add Fax Account",
-		"EDIT_FAXACCOUNT": "Edit Fax Account",
-		"DELETE_FAXACCOUNT": "Delete Fax Account",
-		"DISPOSITIONS": "Dispositions",
+		"STRATEGY": "Strategija",
+		"AGENT_TIMEOUT": "Agento laikas baigėsi",
+		"DESCRIPTION": "Aprašymas",
+		"ADD_FAXQUEUE": "Pridėti fakso eilę",
+		"DELETE_FAXQUEUE": "Ištrinti fakso eilę",
+		"CREATED_AT": "Sukurtas",
+		"SAVE": "Saugoti",
+		"SETTINGS": "Nustatymai",
+		"GENERAL": "Bendras",
+		"FAXACCOUNTS": "Fakso paskyros",
+		"MOTIONADDRESS": "Motion adresas",
+		"ADD_FAXACCOUNT": "Pridėti fakso paskyrą",
+		"EDIT_FAXACCOUNT": "Redaguoti fakso paskyrą",
+		"DELETE_FAXACCOUNT": "Ištrinti fakso paskyrą",
+		"DISPOSITIONS": "Išdėstymai",
 		"WEBHOOKS": "WebHooks",
-		"ACTIONS": "Actions",
-		"LIST": "List",
-		"FIDELITY": "Fidelity",
-		"ACCEPT": "Accept",
-		"ACCEPTMETHOD": "Accept Method",
-		"ACCEPTURL": "Accept URL",
-		"REJECT": "Reject",
-		"REJECTMETHOD": "Reject Method",
-		"REJECTURL": "Reject URL",
-		"CLOSE": "Close",
-		"CLOSEMETHOD": "Close Method",
-		"CLOSEURL": "Close URL",
-		"TRUNK": "Trunk",
-		"LOCALSTATIONID": "Local Station Identifier",
+		"ACTIONS": "Veiksmai",
+		"LIST": "Sąrašas",
+		"FIDELITY": "Tikslumas",
+		"ACCEPT": "Priimti",
+		"ACCEPTMETHOD": "Priimti metodą",
+		"ACCEPTURL": "Priimti URL",
+		"REJECT": "Atmesti",
+		"REJECTMETHOD": "Atmesti metodą",
+		"REJECTURL": "Atmesti URL",
+		"CLOSE": "Uždaryti",
+		"CLOSEMETHOD": "Uždaryti metodą",
+		"CLOSEURL": "Uždaryti URL",
+		"TRUNK": "Ryšio kanalas",
+		"LOCALSTATIONID": "Vietinės stoties identifikatorius",
 		"HELP": {
-			"LOCALSTATIONID": "Local Station Identifier (telephone number)",
-			"HEADERINFO": "Outbound Fax Header information",
-			"MODEM": "Modem Type (v17/v27/v29)",
-			"GATEWAY": "T.38 Fax Gateway, with optional fax activity timeout in seconds (yes/no/[timeout])",
-			"FAXDETECT": "Enable Fax Detect with optional timeout in seconds (yes/t38/cng/[timeout]/no)",
-			"T38TIMEOUT": "The timeout used for T.38 negotiation (minimum value=1000)",
-			"ECM": "Error Connection Mode (ECM)",
-			"MINRATE": "Minimum transfer rate set before transmission",
-			"MAXRATE": "Maximum transfer rate set before transmission",
-			"MANDATORYDISPOSITION": "Mandatory disposition",
-			"MANDATORYDISPOSITIONPAUSEID": "Pause status for mandatory disposition",
-			"NAME": "Only numbers, letters and specific characters (._) are supported"
+			"LOCALSTATIONID": "Vietinės stoties identifikatorius (telefono numeris)",
+			"HEADERINFO": "Išsiunčiamos fakso antraštės informacija",
+			"MODEM": "Modemo tipas (v17/v27/v29)",
+			"GATEWAY": "T.38 Fakso tinklų sąsaja, su pasirenkamu fakso veiklos laiko intervalu sekundėmis (taip/ne/[laikas])",
+			"FAXDETECT": "Įgalinti fakso aptikimą su pasirenkamu laiko intervalu sekundėmis (taip/t38/cng/[laikas]/ne)",
+			"T38TIMEOUT": "Laikas, naudojamas deryboms dėl T.38 (mažiausia reikšmė=1000)",
+			"ECM": "Klaida ryšio režime (ECM)",
+			"MINRATE": "Minimalus perkėlimo rodiklis, nustatytas prieš perdavimą",
+			"MAXRATE": "Maksimalus perkėlimo rodiklis, nustatytas prieš perdavimą",
+			"MANDATORYDISPOSITION": "Privalomas išdėstymas",
+			"MANDATORYDISPOSITIONPAUSEID": "Privalomo išdėstymo pauzės statusas",
+			"NAME": "Palaikomi tik skaičiai, raidės ir konkretūs simboliai (. _)"
 		},
-		"ADVANCED": "Advanced",
+		"ADVANCED": "Pažengęs",
 		"ECM": "ECM",
-		"MINRATE": "Min Rate",
-		"MAXRATE": "Max Rate",
-		"MODEM": "Modem",
-		"GATEWAY": "Gateway",
-		"FAXDETECT": "Fax Detect",
-		"T38TIMEOUT": "T.38 Timeout",
-		"SIP": "Technology",
-		"HEADERINFO": "Header Info",
-		"SELECTED": "Selected",
-		"SELECT_ALL": "Select All",
-		"SELECT_NONE": "Select None",
-		"BACK": "Back",
-		"FAX": "Fax",
+		"MINRATE": "Min. rodiklis",
+		"MAXRATE": "Maks. rodiklis",
+		"MODEM": "Modemas",
+		"GATEWAY": "Tinklų sąsaja",
+		"FAXDETECT": "Fakso aptikimas",
+		"T38TIMEOUT": "T.38 laikas",
+		"SIP": "Technologija",
+		"HEADERINFO": "Antraštės informacija",
+		"SELECTED": "Pasirinkta",
+		"SELECT_ALL": "Pasirinkti viską",
+		"SELECT_NONE": "Nieko nepasirinkti",
+		"BACK": "Atgal",
+		"FAX": "Faksas",
 		"ID": "Id",
-		"TIMEOUT": "Timeout",
-		"FAXDISPOSITIONS": "Fax Dispositions",
-		"NO_FAXDISPOSITION_AVAILABLE": "No Fax Dispositions available",
-		"NEW_FAXDISPOSITION": "New Fax Disposition",
-		"ADD_FAXDISPOSITION": "Add Fax Disposition",
-		"EDIT_FAXDISPOSITION": "Edit Fax Disposition",
-		"DELETE_FAXDISPOSITION": "Delete Fax Disposition",
-		"NEW_FAXQUEUE": "New Fax Queue",
-		"NEW_FAXACCOUNT": "New Fax Account",
-		"NO_AVAILABLE_INFO": "No available info",
-		"ALL_TEAMS": "All Teams",
-		"SELECTED_TEAMS": "Selected Teams",
-		"PAGE": "Page",
-		"ROWSPERPAGE": "Rows per page",
-		"OF": "of",
-		"DELETE": "Delete",
-		"KEY": "Key",
-		"ALL_AGENTS": "All Agents",
-		"SELECTED_AGENTS": "Selected Agents",
-		"FILTER": "Filter",
-		"SELECT_STATUS": "Select Status",
-		"ALL": "All",
-		"CLOSED": "Closed",
-		"OPENED": "Opened",
-		"SELECT_ACCOUNT": "Select Account",
-		"INTERACTIONS": "Interactions",
-		"CONTACT": "Contact",
-		"STARTEDAT": "Started At",
-		"LASTMESSAGE": "Last message",
-		"STATUS": "Status",
-		"ACCOUNT": "Account",
-		"UNKNOWN": "Unknown",
-		"UNAVAILABLE": "Unavailable",
-		"NOT_INUSE": "Not in use",
-		"REACHABLE": "Reachable",
-		"IN_USE": "In use",
-		"VOICE": "Voice",
-		"CHAT": "Chat",
-		"MAIL": "Email",
-		"SMS": "SMS",
-		"OPENCHANNEL": "Open Channel",
-		"TOTAL": "Total",
-		"IN": "In",
-		"OUT": "Out",
-		"NO_INTERACTION_AVAILABLE": "No interactions available",
-		"INTERACTIONS_FAXACCOUNT": "Go to Interactions",
-		"REFRESH_INTERACTIONS": "Refresh Interactions",
-		"DELETE_INTERACTION": "Delete Interaction",
-		"AGENTADD_FAXACCOUNT": "Add Agent to Fax Account",
-		"TEAMS_ASSOCIATION": "Teams Association",
-		"TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-		"TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments"
+		"TIMEOUT": "Laikas",
+		"FAXDISPOSITIONS": "Fakso išdėstymai",
+		"NO_FAXDISPOSITION_AVAILABLE": "Nėra fakso išdėstymų",
+		"NEW_FAXDISPOSITION": "Naujas fakso išdėstymas",
+		"ADD_FAXDISPOSITION": "Pridėti fakso išdėstymą",
+		"EDIT_FAXDISPOSITION": "Redaguoti fakso išdėstymą",
+		"DELETE_FAXDISPOSITION": "Ištrinti fakso išdėstymą",
+		"NEW_FAXQUEUE": "Nauja fakso eilė",
+		"NEW_FAXACCOUNT": "Nauja fakso paskyra",
+		"NO_AVAILABLE_INFO": "Informacijos nėra",
+		"ALL_TEAMS": "Visos komandos",
+		"SELECTED_TEAMS": "Pasirinktos komandos",
+		"PAGE": "Puslapis",
+		"ROWSPERPAGE": "Eilutės puslapyje",
+		"OF": "iš",
+		"DELETE": "Ištrinti",
+		"KEY": "Raktas",
+		"ALL_AGENTS": "Visi agentai",
+		"SELECTED_AGENTS": "Pasirinkti agentai",
+		"FILTER": "Filtras",
+		"SELECT_STATUS": "Pasirinkti statusą",
+		"ALL": "Visi",
+		"CLOSED": "Uždaryta",
+		"OPENED": "Atidaryta",
+		"SELECT_ACCOUNT": "Pasirinkti paskyrą",
+		"INTERACTIONS": "Sąveikos",
+		"CONTACT": "Kontaktas",
+		"STARTEDAT": "Pradėjo nuo",
+		"LASTMESSAGE": "Paskutinė žinutė",
+		"STATUS": "Statusas",
+		"ACCOUNT": "Paskyra",
+		"UNKNOWN": "Nežinomas",
+		"UNAVAILABLE": "Nepasiekiamas",
+		"NOT_INUSE": "Nenaudojamas",
+		"REACHABLE": "Pasiekiamas",
+		"IN_USE": "Naudojamas",
+		"VOICE": "Balsas",
+		"CHAT": "Pokalbis",
+		"MAIL": "El. paštas",
+		"SMS": "Trumpoji žinutė",
+		"OPENCHANNEL": "Atidaryti kanalą",
+		"TOTAL": "Iš viso",
+		"IN": "Į",
+		"OUT": "Iš",
+		"NO_INTERACTION_AVAILABLE": "Sąveikų nėra",
+		"INTERACTIONS_FAXACCOUNT": "Eiti į sąveikas",
+		"REFRESH_INTERACTIONS": "Atnaujinti sąveikas",
+		"DELETE_INTERACTION": "Ištrinti sąveiką",
+		"AGENTADD_FAXACCOUNT": "Pridėti agentą prie fakso paskyros",
+		"TEAMS_ASSOCIATION": "Komandų asociacija",
+		"TOOLTIP_SCREENRECORDING_ON": "Vyksta ekrano įrašymas",
+		"TOOLTIP_SCREENRECORDING_OFF": "Ekrano įrašas galimas",
+		"DOWNLOAD_WITH_ATTACHMENTS": "Atsisiųsti su priedais",
+		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Atsisiųsti be priedų"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/fax/i18n/ru.json b/public/app/main/apps/fax/i18n/ru.json
index b32a85f..5750f27 100644
--- a/public/app/main/apps/fax/i18n/ru.json
+++ b/public/app/main/apps/fax/i18n/ru.json
@@ -1,26 +1,26 @@
 {
 	"FAX": {
-		"TEAMADD_FAXQUEUE": "Добавить команду к очереди факсов",
-		"AGENTADD_FAXQUEUE": "Добавить агента к очереди факсов",
+		"TEAMADD_FAXQUEUE": "Добавить группы по очереди факса",
+		"AGENTADD_FAXQUEUE": "Добавить оператора в очереди по факсу",
 		"NAME": "Имя",
-		"FAXQUEUES": "Очереди факсов",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"FAXQUEUES": "Факс очередей",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"ERRORS": {
-			"NAME_REQUIRED": "Обязательное поле",
-			"AGENT_TIMEOUT_REQUIRED": "Обязательное поле",
-			"MOTIONADDRESS_REQUIRED": "Обязательное поле",
-			"MOTIONADDRESS_MUST_VALID_URL": "Неверный формат",
-			"LOCALSTATIONID_REQUIRED": "Обязательное поле",
-			"MODEM_REQUIRED": "Обязательное поле",
-			"GATEWAY_REQUIRED": "Обязательное поле",
-			"FAXDETECT_REQUIRED": "Обязательное поле",
-			"T38TIMEOUT_REQUIRED": "Обязательное поле",
-			"TIMEOUT_REQUIRED": "Обязательное поле",
-			"HEADERINFO_REQUIRED": "Обязательное поле",
-			"TRUNK_REQUIRED": "Обязательное поле",
-			"LIST_REQUIRED": "Обязательное поле",
-			"KEY_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
-			"KEY_REQUIRED": "Обязательное поле",
+			"NAME_REQUIRED": "Это имя требуется",
+			"AGENT_TIMEOUT_REQUIRED": "Оператор - тайм-аут требуется",
+			"MOTIONADDRESS_REQUIRED": "Движение адрес не требуется",
+			"MOTIONADDRESS_MUST_VALID_URL": "Движение адрес должен быть записан в действительный формат",
+			"LOCALSTATIONID_REQUIRED": "На локальной станции требуется идентификатор",
+			"MODEM_REQUIRED": "Модем не требуется",
+			"GATEWAY_REQUIRED": "Шлюз не требуется",
+			"FAXDETECT_REQUIRED": "На обнаружение факсов не требуется",
+			"T38TIMEOUT_REQUIRED": "T.38 Timeout не требуется",
+			"TIMEOUT_REQUIRED": "Тайм-аут не требуется",
+			"HEADERINFO_REQUIRED": "Жатка Info не требуется",
+			"TRUNK_REQUIRED": "Багажник не требуется",
+			"LIST_REQUIRED": "Список не требуется",
+			"KEY_MAX_LENGTH": "Ключ должен иметь максимальную длину равную {{max}}",
+			"KEY_REQUIRED": "Ключ не требуется",
 			"AGENT_REQUIRED": "Обязательное поле",
 			"QUEUE_REQUIRED": "Обязательное поле",
 			"TRUEPRIORITY_REQUIRED": "Обязательное поле",
@@ -50,212 +50,212 @@
 			"QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
 			"QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
 			"QUEUETRANSFERTIMEOUT_REQUIRED": "Обязательное поле",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Следует указать статус паузы при обязательной диспозиции"
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Вы должны указать статус паузы, когда в обязательном порядке"
 		},
 		"STRATEGY": "Стратегия",
-		"AGENT_TIMEOUT": "Тайм-аут агента",
+		"AGENT_TIMEOUT": "Время ожидания оператора",
 		"DESCRIPTION": "Описание",
 		"ADD_FAXQUEUE": "Добавить очередь факсов",
-		"EDIT_FAXQUEUE": "Редактировать очередь факсов",
+		"EDIT_FAXQUEUE": "Изменение номера факса в очереди",
 		"DELETE_FAXQUEUE": "Удалить очередь факсов",
-		"CREATED_AT": "Создано на",
+		"CREATED_AT": "Созданные в",
 		"SAVE": "Сохранить",
 		"SETTINGS": "Настройки",
-		"GENERAL": "Общие",
-		"FAXACCOUNTS": "Учетные записи факсов",
+		"GENERAL": "Генеральной",
+		"FAXACCOUNTS": "Факс",
 		"MOTIONADDRESS": "Адрес движения",
 		"ADD_FAXACCOUNT": "Добавление учетной записи факса",
 		"EDIT_FAXACCOUNT": "Редактирование учетной записи факса",
-		"DELETE_FAXACCOUNT": "Удалить учетную запись факса",
-		"DISPOSITIONS": "Диспозиции",
+		"DELETE_FAXACCOUNT": "Удаление учетной записи факса",
+		"DISPOSITIONS": "Распоряжения",
 		"WEBHOOKS": "WebHooks",
 		"ACTIONS": "Действия",
 		"LIST": "Список",
-		"FIDELITY": "Точность",
-		"ACCEPT": "Принять",
+		"FIDELITY": "Четкость",
+		"ACCEPT": "Согласиться с",
 		"ACCEPTMETHOD": "Принять метод",
-		"ACCEPTURL": "Принять URL",
+		"ACCEPTURL": "Согласиться с URL",
 		"REJECT": "Отклонить",
 		"REJECTMETHOD": "Отклонить метод",
-		"REJECTURL": "Отклонить URL",
+		"REJECTURL": "Отклонить URL",
 		"CLOSE": "Закрыть",
-		"CLOSEMETHOD": "Закрыть метод",
-		"CLOSEURL": "Закрыть URL",
-		"TRUNK": "Транк",
-		"LOCALSTATIONID": "Идентификатор локальной станции",
+		"CLOSEMETHOD": "Закройте метод",
+		"CLOSEURL": "Закрыть URL",
+		"TRUNK": "Сл",
+		"LOCALSTATIONID": "Местные идентификатором станции",
 		"HELP": {
-			"LOCALSTATIONID": "Идентификатор локальной станции (номер телефона)",
-			"HEADERINFO": "Информация о заголовке исходящего факса",
-			"MODEM": "Тип модема (v17/v27/v29)",
-			"GATEWAY": "Шлюз для факсов с поддержкой Т.38 с дополнительным тайм-аутом для активных факсов в секундах (да/нет/[тайм-аут])",
-			"FAXDETECT": "Включить функцию обнаружения факсов с дополнительным тайм-аутом в секундах (да/t38/cng/[тайм-аут]/нет)",
-			"T38TIMEOUT": "Тайм-аут, используемый для согласования параметров T.38 (минимальное значение = 1000)",
-			"ECM": "Режим исправления ошибок (ECM)",
-			"MINRATE": "Минимальная скорость передачи данных, установленная перед передачей",
-			"MAXRATE": "Максимальная скорость передачи данных, установленная перед передачей",
-			"NAME": "Поддерживаются только цифры, буквы и специальные символы (._)",
-			"MANDATORYDISPOSITION": "Обязательная диспозиция",
-			"MANDATORYDISPOSITIONPAUSEID": "Статус паузы для обязательной диспозиции"
+			"LOCALSTATIONID": "Местные идентификатором станции (номер телефона).",
+			"HEADERINFO": "Исходящий информации заголовка факса.",
+			"MODEM": "Типа модема (V17/V27/V29).",
+			"GATEWAY": "Факсы T.38 шлюза, с дополнительным факс активность время ожидания в секундах (да/нет/[timeout]).",
+			"FAXDETECT": "Включить обнаружение факсов с помощью дополнительного времени ожидания в секундах (да/t38/СПГ/[timeout]/нет).",
+			"T38TIMEOUT": "Время ожидания используется для T.38 переговоров. Минимальное значение - 1000.",
+			"ECM": "Ошибка связи режим (ECM).",
+			"MINRATE": "Минимальная скорость передачи данных до установки трансмиссии. Возможные значения: 2400, 4800, 7200, 9600, 12000 или 14400.",
+			"MAXRATE": "Максимальная скорость передачи до установки трансмиссии. Возможные значения: 2400, 4800, 7200, 9600, 12000 или 14400.",
+			"NAME": "Только цифры, буквы и специальные символы (_) поддерживаются",
+			"MANDATORYDISPOSITION": "Обязательное распоряжение",
+			"MANDATORYDISPOSITIONPAUSEID": "Статус паузы для обязательного распоряжения"
 		},
-		"ADVANCED": "Продвинутый",
+		"ADVANCED": "Расширенные возможности",
 		"ECM": "ECM",
-		"MINRATE": "Мин. скорость",
-		"MAXRATE": "Макс. скорость",
+		"MINRATE": "Мин скорость",
+		"MAXRATE": "Макс. скорость",
 		"MODEM": "Модем",
 		"GATEWAY": "Шлюз",
-		"FAXDETECT": "Обнаружение факса",
-		"T38TIMEOUT": "Тайм-аут на режим шлюза T.38",
-		"SIP": "Технология",
+		"FAXDETECT": "Обнаружение факсов",
+		"T38TIMEOUT": "T.38 Тайм-аут",
+		"SIP": "Технологии",
 		"HEADERINFO": "Информация заголовка",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
+		"SELECT_NONE": "Выберите пункт None",
 		"BACK": "Назад",
 		"FAX": "Факс",
-		"ID": "Идентификатор",
-		"TIMEOUT": "Тайм-аут",
-		"FAXDISPOSITIONS": "Диспозиции факсов",
-		"NO_FAXDISPOSITION_AVAILABLE": "Диспозиции факсов отсутствуют",
-		"NEW_FAXDISPOSITION": "Новая диспозиция факса",
-		"ADD_FAXDISPOSITION": "Добавление диспозиции факса",
-		"EDIT_FAXDISPOSITION": "Редактирование диспозиции факса",
-		"DELETE_FAXDISPOSITION": "Удалить диспозицию факса",
-		"NEW_FAXQUEUE": "Новая очередь факсов",
-		"NEW_FAXACCOUNT": "Новая учетная запись факса",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"ALL_TEAMS": "Все команды",
-		"SELECTED_TEAMS": "Избранные команды",
+		"ID": "Id",
+		"TIMEOUT": "Превышение лимита времени",
+		"FAXDISPOSITIONS": "Распоряжения факса",
+		"NO_FAXDISPOSITION_AVAILABLE": "Факс не распоряжения имеющихся",
+		"NEW_FAXDISPOSITION": "Новый факс распоряжения",
+		"ADD_FAXDISPOSITION": "Добавление номера факса распоряжения",
+		"EDIT_FAXDISPOSITION": "Редактирование результата факса",
+		"DELETE_FAXDISPOSITION": "Удаление номера факса распоряжения",
+		"NEW_FAXQUEUE": "Новый факс очереди",
+		"NEW_FAXACCOUNT": "Новый факс счета",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"ALL_TEAMS": "Все группы",
+		"SELECTED_TEAMS": "Выбранные группы",
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
+		"OF": "В",
 		"DELETE": "Удалить",
 		"KEY": "Ключ",
-		"ALL_AGENTS": "Все агенты",
-		"SELECTED_AGENTS": "Выбранные агенты",
+		"ALL_AGENTS": "Все операторы",
+		"SELECTED_AGENTS": "Выбранные операторы",
 		"FILTER": "Фильтр",
-		"SELECT_STATUS": "Выбрать статус",
+		"SELECT_STATUS": "Выберите состояние",
 		"ALL": "Все",
-		"CLOSED": "Закрытые",
-		"OPENED": "Открытые",
-		"SELECT_ACCOUNT": "Выбрать учетную запись",
-		"INTERACTIONS": "Взаимодействия",
-		"CONTACT": "Контакт",
-		"STARTEDAT": "Начато в",
+		"CLOSED": "Закрыт",
+		"OPENED": "Открыт",
+		"SELECT_ACCOUNT": "Выберите учетную запись",
+		"INTERACTIONS": "Взаимодействие",
+		"CONTACT": "Контакты",
+		"STARTEDAT": "Началась в",
 		"STATUS": "Состояние",
-		"ACCOUNT": "Учетная запись",
-		"GOTO_FAXACCOUNT": "Перейти к факсу в реальном времени",
+		"ACCOUNT": "Внимание",
+		"GOTO_FAXACCOUNT": "Перейдите к в реальном масштабе времени по факсу",
 		"ACCOUNTS": "Учетные записи",
-		"GOTOREALTIME_FAXACCOUNT": "Перейти к факсу в реальном времени",
-		"TRUNK_STATUS": "Статус транка",
-		"TRUNKS": "Транки",
+		"GOTOREALTIME_FAXACCOUNT": "Перейдите к в реальном масштабе времени по факсу",
+		"TRUNK_STATUS": "Состояние соединительной линии",
+		"TRUNKS": "Сл",
 		"REGISTRY": "Реестр",
-		"NO_REGISTRY": "Нет реестра",
+		"NO_REGISTRY": "Раздел реестра не",
 		"PAUSE": "Пауза",
-		"INFO": "Информация",
-		"FULLNAME": "Полное имя",
-		"INTERNAL": "Внутренний",
+		"INFO": "Инфо",
+		"FULLNAME": "Fullname",
+		"INTERNAL": "Внутренние",
 		"PHONE_STATE": "Состояние телефона",
-		"PHONE_STATUS": "Статус телефона",
-		"LOGOUT": "Выход",
-		"DEFAULT_PAUSE": "Пауза по умолчанию",
-		"AGENTADD_QUEUE": "Добавить агента к очереди факсов",
-		"AGENTSADD_QUEUE": "Добавить агентов к очереди факсов",
-		"UNPAUSE": "Конец паузы",
+		"PHONE_STATUS": "Состояние телефона",
+		"LOGOUT": "Выход из системы",
+		"DEFAULT_PAUSE": "По умолчанию пауза",
+		"AGENTADD_QUEUE": "Добавить оператора в очереди по факсу",
+		"AGENTSADD_QUEUE": "Добавить операторов в очереди по факсу",
+		"UNPAUSE": "Возобновить",
 		"AGENTS": "Агенты",
-		"QUEUES": "Очереди",
-		"LOGGED_IN": "Зарегистрирован в системе",
-		"PAUSED": "Поставлен на паузу",
+		"QUEUES": "Очередей",
+		"LOGGED_IN": "Вход в систему",
+		"PAUSED": "Приостановлено",
 		"READY": "Готов",
-		"WAITING": "Ожидание",
+		"WAITING": "Свободные",
 		"PRIORITY": "Приоритет",
-		"CONDITION": "Условие",
+		"CONDITION": "Состояние",
 		"TRUEPRIORITY": "Истинный приоритет",
 		"FALSEPRIORITY": "Ложный приоритет",
 		"VALUE": "Значение",
-		"EDIT_AGENT": "Редактировать агента",
-		"EDIT_GOTO": "Редактировать Перейти к",
-		"EDIT_NOOP": "Редактировать Noop",
-		"EDIT_GOTOP": "Редактировать GotoP",
-		"EDIT_GOTOIF": "Редактировать GotoIf",
-		"EDIT_QUEUE": "Редактировать очередь факсов",
+		"EDIT_AGENT": "Редактирование оператора",
+		"EDIT_GOTO": "Редактировать гото",
+		"EDIT_NOOP": "Редактировать Noop",
+		"EDIT_GOTOP": "GotoP редактировать",
+		"EDIT_GOTOIF": "GotoIf редактировать",
+		"EDIT_QUEUE": "Редактировать Факс очереди",
 		"EDIT_CLOSE": "Редактировать Закрыть",
-		"QUEUE": "Очередь",
-		"GOTOIF": "Переход по условию / GotoIf",
+		"QUEUE": "Очереди",
+		"GOTOIF": "GotoIf",
 		"GOTOP": "GotoP",
-		"NOOP": "Noop",
-		"AGENT": "Агент",
+		"NOOP": "Нооп",
+		"AGENT": "Оператор",
 		"NOTES": "Примечания",
-		"CLOSEDAT": "Закрыто в",
-		"DISPOSITION": "Диспозиция",
-		"REALTIME": "Режим реального времени",
+		"CLOSEDAT": "Закрыт",
+		"DISPOSITION": "Отчуждения",
+		"REALTIME": "В режиме реального времени",
 		"UNKNOWN": "Неизвестно",
-		"UNREGISTERED": "Не зарегистрирован",
-		"UNAVAILABLE": "Отсутствует",
-		"NOT_INUSE": "Не используется",
-		"REACHABLE": "Достижимые",
-		"IN_USE": "Используется",
+		"UNREGISTERED": "Незарегистрированный",
+		"UNAVAILABLE": "Недоступен",
+		"NOT_INUSE": "Не используется",
+		"REACHABLE": "Добраться",
+		"IN_USE": "В использовании",
 		"VOICE": "Голос",
 		"CHAT": "Чат",
-		"MAIL": "Электронная почта",
+		"MAIL": "Почта",
 		"SMS": "SMS",
-		"OPENCHANNEL": "Открытый канал",
-		"NO_AGENT_ONLINE": "Агент отсутствует онлайн",
-		"GOTOREALTIME_FAXQUEUE": "Перейти к очереди факсов в реальном времени",
-		"EDIT_TRUNK": "Редактировать транк",
-		"REGISTERED": "Зарегистрирован",
+		"OPENCHANNEL": "Открыть канал",
+		"NO_AGENT_ONLINE": "Ни один оператор На Сайте",
+		"GOTOREALTIME_FAXQUEUE": "Перейдите к в реальном масштабе времени очереди факса",
+		"EDIT_TRUNK": "Редактировать сл",
+		"REGISTERED": "Зарегистрированные",
 		"EDIT_ACCOUNT": "Редактирование учетной записи факса",
-		"PARTIALPAUSE": "Частичная пауза",
-		"BUSY": "Линия занята",
+		"PARTIALPAUSE": "Частичная приостановка",
+		"BUSY": "Занят",
 		"TIMER": "Таймер",
-		"IDLE": "Линия свободна",
+		"IDLE": "Обороты холостого хода",
 		"CAPACITY": "Емкость",
-		"TOTAL": "Всего",
-		"IN": "In",
-		"OUT": "Out",
-		"NO_INTERACTION_AVAILABLE": "Взаимодействия отсутствуют",
-		"TAGS": "Теги",
+		"TOTAL": "Итого",
+		"IN": "В",
+		"OUT": "Вне",
+		"NO_INTERACTION_AVAILABLE": "Нет доступных взаимодействий",
+		"TAGS": "Tags",
 		"REPLY": "Ответить",
 		"SEND": "Отправить",
-		"TO": "Кому",
+		"TO": "К",
 		"FROM": "От",
-		"INTERACTIONS_FAXACCOUNT": "Перейти к взаимодействиям",
-		"REFRESH_INTERACTIONS": "Обновить взаимодействия",
-		"NO_FAXCANNEDANSWER_AVAILABLE": "Заранее определенные ответы отсутствуют",
-		"NEW_FAXCANNEDANSWER": "Новый заранее определенный ответ",
-		"ADD_FAXCANNEDANSWER": "Добавить заранее определенный ответ",
-		"EDIT_CHATCANNEDANSWER": "Редактировать заранее определенный ответ",
-		"DELETE_CHATCANNEDANSWER": "Удалить заранее определенный ответ",
-		"SPYINTERACTION": "Шпион",
+		"INTERACTIONS_FAXACCOUNT": "Перейти к взаимодействию",
+		"REFRESH_INTERACTIONS": "Обновить взаимодействий",
+		"NO_FAXCANNEDANSWER_AVAILABLE": "Нет готовых ответов",
+		"NEW_FAXCANNEDANSWER": "Новый Консервированный Ответ",
+		"ADD_FAXCANNEDANSWER": "Добавить консервированный ответ",
+		"EDIT_CHATCANNEDANSWER": "Редактировать Консервированный ответ",
+		"DELETE_CHATCANNEDANSWER": "Удалить запрещенный ответ",
+		"SPYINTERACTION": "шпион",
 		"DELETE_INTERACTION": "Удалить взаимодействие",
-		"COMMAND": "Команда",
-		"EDIT_SYSTEM": "Редактировать систему",
-		"SYSTEM": "Система",
-		"VARIABLE": "Переменная",
-		"NOTIFICATION": "Уведомление",
-		"NOTIFICATIONSHAKE": "Shake",
-		"NOTIFICATIONSOUND": "Звук",
-		"NOTIFICATIONTEMPLATE": "Шаблон",
-		"WAITFORTHEASSIGNEDAGENT": "Ожидание ответа назначенного агента",
-		"EDIT_TAG": "Редактирование тега",
+		"COMMAND": "команда",
+		"EDIT_SYSTEM": "Изменить систему",
+		"SYSTEM": "система",
+		"VARIABLE": "переменная",
+		"NOTIFICATION": "уведомление",
+		"NOTIFICATIONSHAKE": "Встряска",
+		"NOTIFICATIONSOUND": "звук",
+		"NOTIFICATIONTEMPLATE": "шаблон",
+		"WAITFORTHEASSIGNEDAGENT": "Подождите, пока назначенный агент",
+		"EDIT_TAG": "Изменить тег",
 		"TAG": "Тег",
-		"AGENTADD_FAXACCOUNT": "Добавить агента к учетной записи факса",
-		"AGENTTRANSFER": "Передача агенту",
-		"AGENTTRANSFERTIMEOUT": "Тайм-аут передачи агенту",
-		"QUEUETRANSFER": "Передача в очередь",
-		"QUEUETRANSFERTIMEOUT": "Тайм-аут передачи в очередь",
-		"TRANSFER": "Перевод вызова",
-		"CANNEDANSWERS": "Заранее определенные ответы",
+		"AGENTADD_FAXACCOUNT": "Добавить агента в факс-аккаунт",
+		"AGENTTRANSFER": "Передача агента",
+		"AGENTTRANSFERTIMEOUT": "Тайм-аут передачи агента",
+		"QUEUETRANSFER": "Передача очереди",
+		"QUEUETRANSFERTIMEOUT": "Тайм-аут передачи очереди",
+		"TRANSFER": "Перечислить",
+		"CANNEDANSWERS": "Консервированные ответы",
 		"DOWNLOAD_INTERACTION": "Скачать",
-		"FAXCANNEDANSWERS": "Заранее определенные ответы",
-		"LOGIN_TIME": "Время входа в систему",
+		"FAXCANNEDANSWERS": "Консервированные ответы",
+		"LOGIN_TIME": "Время входа",
 		"PAUSE_TIME": "Время паузы",
 		"TEAMS_ASSOCIATION": "Ассоциация команд",
-		"MANDATORYDISPOSITION": "Обязательная диспозиция",
-		"MANDATORYDISPOSITIONPAUSEID": "Статус паузы при обязательной диспозиции",
-		"TOOLTIP_SCREENRECORDING_OFF": "Доступна запись с экрана",
-		"TOOLTIP_SCREENRECORDING_ON": "Идет запись с экрана",
+		"MANDATORYDISPOSITION": "Обязательное распоряжение",
+		"MANDATORYDISPOSITIONPAUSEID": "Состояние паузы, когда в обязательном порядке",
+		"TOOLTIP_SCREENRECORDING_OFF": "Запись экрана доступна",
+		"TOOLTIP_SCREENRECORDING_ON": "Идет запись экрана",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Скачать без вложений",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Скачать с вложениями",
+		"DOWNLOAD_WITH_ATTACHMENTS": "Скачать с вложениями",
 		"LASTMESSAGE": "Последнее сообщение"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/help/i18n/lt.json b/public/app/main/apps/help/i18n/lt.json
index 06a054c..ebeb9cb 100644
--- a/public/app/main/apps/help/i18n/lt.json
+++ b/public/app/main/apps/help/i18n/lt.json
@@ -1,8 +1,8 @@
 {
 	"HELP": {
-		"HELP": "Help",
-		"ABOUT": "About",
-		"USEFUL_LINKS": "Useful links",
-		"CONTACT_US": "Contact us"
+		"HELP": "Pagalba",
+		"ABOUT": "Apie",
+		"USEFUL_LINKS": "Naudingos nuorodos",
+		"CONTACT_US": "Susisiekite su mumis"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/help/i18n/ru.json b/public/app/main/apps/help/i18n/ru.json
index 0d983ab..8055121 100644
--- a/public/app/main/apps/help/i18n/ru.json
+++ b/public/app/main/apps/help/i18n/ru.json
@@ -1,8 +1,8 @@
 {
 	"HELP": {
-		"HELP": "Помощь",
-		"ABOUT": "О нас",
+		"HELP": "Справка",
+		"ABOUT": "О",
 		"USEFUL_LINKS": "Полезные ссылки",
-		"CONTACT_US": "Связаться с нами"
+		"CONTACT_US": "Свяжитесь с нами"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/integrations/i18n/lt.json b/public/app/main/apps/integrations/i18n/lt.json
index a6bb26e..966c8a2 100644
--- a/public/app/main/apps/integrations/i18n/lt.json
+++ b/public/app/main/apps/integrations/i18n/lt.json
@@ -1,237 +1,237 @@
 {
 	"INTEGRATIONS": {
-		"ZONE": "Zone",
-		"ADVANCED": "Advanced",
-		"MODULE_SEARCH": "Module Search",
-		"MODULE_CREATE": "Module Create",
-		"LEADS": "Lead",
-		"CONTACTS": "Contact",
-		"INTEGRATIONS": "Integrations",
-		"ZENDESKACCOUNTS": "Zendesk Accounts",
+		"ZONE": "Zona",
+		"ADVANCED": "Pažengęs",
+		"MODULE_SEARCH": "Modulio paieška",
+		"MODULE_CREATE": "Modulio kūrimas",
+		"LEADS": "Vadovauti",
+		"CONTACTS": "Kontaktas",
+		"INTEGRATIONS": "Integracijos",
+		"ZENDESKACCOUNTS": "Zendesk paskyros",
 		"ID": "Id",
-		"NAME": "Name",
-		"USERNAME": "Username",
+		"NAME": "Vardas",
+		"USERNAME": "Vartotojo vardas",
 		"URI": "URL",
-		"BACK": "Back",
-		"SELECTED": "Selected",
-		"SELECT_ALL": "Select All",
-		"SELECT_NONE": "Select None",
-		"EDIT_ZENDESKACCOUNT": "Edit Zendesk Account",
-		"DELETE_ZENDESKACCOUNT": "Delete Zendesk Account",
-		"NEW_ZENDESKACCOUNT": "New Zendesk Account",
-		"AUTHTYPE": "Authentication Type",
-		"PASSWORD": "Password",
-		"CONFIRM_PASSWORD": "Confirm Password",
-		"EMAIL": "Email",
-		"TOKEN": "Token",
-		"MOTIONPROXYADDRESS": "Motion or Proxy IP Address",
-		"DESCRIPTION": "Description",
-		"ADD_ZENDESKACCOUNT": "Add Zendesk Account",
+		"BACK": "Atgal",
+		"SELECTED": "Pasirinkta",
+		"SELECT_ALL": "Pasirinkti visus",
+		"SELECT_NONE": "Nieko nepasirinkti",
+		"EDIT_ZENDESKACCOUNT": "Redaguoti Zendesk paskyrą",
+		"DELETE_ZENDESKACCOUNT": "Ištrinti Zendesk paskyrą",
+		"NEW_ZENDESKACCOUNT": "Nauja Zendesk paskyra",
+		"AUTHTYPE": "Autentifikavimo tipas",
+		"PASSWORD": "Slaptažodis",
+		"CONFIRM_PASSWORD": "Patvirtinti slaptažodį",
+		"EMAIL": "El. paštas",
+		"TOKEN": "Atpažinimo ženklas",
+		"MOTIONPROXYADDRESS": "Motion arba Proxy IP adresas",
+		"DESCRIPTION": "Aprašymas",
+		"ADD_ZENDESKACCOUNT": "Pridėti Zendesk paskyrą",
 		"ERRORS": {
-			"NAME_REQUIRED": "Mandatory field",
-			"USERNAME_REQUIRED": "Mandatory field",
-			"URI_REQUIRED": "Mandatory field",
-			"URI_MUST_VALID_URL": "Wrong format",
-			"PASSWORD_REQUIRED": "Mandatory field",
-			"CONFIRM_NOT_MATCH": "The passwords don't match",
-			"TOKEN_REQUIRED": "Mandatory field",
-			"MOTIONPROXYADDRESS_MUST_VALID_URL": "Wrong format",
-			"CLIENTID_REQUIRED": "Mandatory field",
-			"CLIENTSECRET_REQUIRED": "Mandatory field",
-			"SECURITYTOKEN_REQUIRED": "Mandatory field",
-			"APIKEY_REQUIRED": "Mandatory field",
-			"CONTENT_REQUIRED": "Mandatory field",
-			"VARIABLENAME_REQUIRED": "Mandatory field",
-			"KEY_REQUIRED": "Mandatory field",
-			"TYPE_REQUIRED": "Mandatory field",
-			"VALUE_REQUIRED": "Mandatory field",
-			"FIELD_REQUIRED": "Mandatory field",
-			"CONSUMERKEY_REQUIRED": "Mandatory field",
-			"CONSUMERSECRET_REQUIRED": "Mandatory field",
-			"TOKENSECRET_REQUIRED": "Mandatory field",
-			"HOST_REQUIRED": "Mandatory field",
-			"AUTHTOKEN_REQUIRED": "Mandatory field",
-			"VTIGER_USER_NAME_REQUIRED": "Mandatory field",
-			"ACCESS_KEY_REQUIRED": "Mandatory field",
-			"EMAIL_REQUIRED": "Mandatory field",
-			"TENANTID_REQUIRED": "Mandatory field",
-			"CODE_REQUIRED": "Mandatory field"
+			"NAME_REQUIRED": "Privalomas laukas",
+			"USERNAME_REQUIRED": "Privalomas laukas",
+			"URI_REQUIRED": "Privalomas laukas",
+			"URI_MUST_VALID_URL": "Blogas formatas",
+			"PASSWORD_REQUIRED": "Privalomas laukas",
+			"CONFIRM_NOT_MATCH": "Slaptažodžiai nesutampa",
+			"TOKEN_REQUIRED": "Privalomas laukas",
+			"MOTIONPROXYADDRESS_MUST_VALID_URL": "Blogas formatas",
+			"CLIENTID_REQUIRED": "Privalomas laukas",
+			"CLIENTSECRET_REQUIRED": "Privalomas laukas",
+			"SECURITYTOKEN_REQUIRED": "Privalomas laukas",
+			"APIKEY_REQUIRED": "Privalomas laukas",
+			"CONTENT_REQUIRED": "Privalomas laukas",
+			"VARIABLENAME_REQUIRED": "Privalomas laukas",
+			"KEY_REQUIRED": "Privalomas laukas",
+			"TYPE_REQUIRED": "Privalomas laukas",
+			"VALUE_REQUIRED": "Privalomas laukas",
+			"FIELD_REQUIRED": "Privalomas laukas",
+			"CONSUMERKEY_REQUIRED": "Privalomas laukas",
+			"CONSUMERSECRET_REQUIRED": "Privalomas laukas",
+			"TOKENSECRET_REQUIRED": "Privalomas laukas",
+			"HOST_REQUIRED": "Privalomas laukas",
+			"AUTHTOKEN_REQUIRED": "Privalomas laukas",
+			"VTIGER_USER_NAME_REQUIRED": "Privalomas laukas",
+			"ACCESS_KEY_REQUIRED": "Privalomas laukas",
+			"EMAIL_REQUIRED": "Privalomas laukas",
+			"TENANTID_REQUIRED": "Privalomas laukas",
+			"CODE_REQUIRED": "Privalomas laukas"
 		},
 		"HELP": {
-			"MOTIONPROXYADDRESS": "Motion (Proxy) Address: it is reqired if you want to fill the ticket body with Recording URL. Enter the address in the following format: <protocol> : //<ipaddress>[:<port>]. Example: https://X.Y.Z.W",
-			"TICKETTYPE": "Ticket Type",
-			"ZONE": "Choose your geographic zone (US, AU, EU, IN, CN) to activate the domain-specific Zoho Accounts",
-			"CLIENTID": "The specific CLient Id of your application",
-			"CLIENTSECRET": "The specific CLientSecret of your application",
-			"CODE": "The specific code generated through Developer Console",
-			"REFRESHTOKEN": "The automatically generated refresh token used to refresh expired access tokens. Also the access token are automatically generated each time an api is launched."
+			"MOTIONPROXYADDRESS": "Motion (Proxy) adresas: jis reikalingas, jei norite užpildyti bilieto dalį įrašomuoju URL. Įveskite adresą tokiu formatu: <protokolas> : //<ipadresas>[:<portas>]. Pavyzdys: https://X.Y.Z.W",
+			"TICKETTYPE": "Bilieto tipas",
+			"ZONE": "Pasirinkite savo geografinę zoną (JAV, AS, ES, IN, CN), kad suaktyvintumėte specifines domeno Zoho paskyras",
+			"CLIENTID": "Konkretus jūsų programos kliento ID",
+			"CLIENTSECRET": "Konkretus jūsų programos kliento slėpinys",
+			"CODE": "Konkretus kodas, sugeneruotas per kūrėjų konsolę",
+			"REFRESHTOKEN": "Automatiškai generuojamas atnaujintas atpažinimo ženklas, naudojamas atnaujinti pasibaigusios prieigos atpažinimo ženklams. Taip pat prieigos atpažinimo ženklas automatiškai generuojamas kiekvieną kartą, kai paleidžiamas API."
 		},
-		"CODE": "Developer Console Code",
-		"REFRESHTOKEN": "Refresh Token (generated)",
-		"ACCOUNT": "Account",
-		"ZENDESKCONFIGURATIONS": "Zendesk Configurations",
-		"SALESFORCECONFIGURATIONS": "Salesforce Configurations",
-		"SUGARCRMCONFIGURATIONS": "SugarCRM Configurations",
-		"FRESHDESKCONFIGURATIONS": "Freshdesk Configurations",
-		"GENERAL": "General",
-		"CREATED_AT": "Created At",
-		"SAVE": "Save",
-		"NO_ZENDESKCONFIGURATION_AVAILABLE": "No Zendesk Configurations available",
-		"NEW_ZENDESKCONFIGURATION": "New Zendesk Configuration",
-		"ADD_ZENDESKCONFIGURATION": "Add Zendesk Configuration",
-		"EDIT_ZENDESKCONFIGURATION": "Edit Zendesk Configuration",
-		"DELETE_ZENDESKCONFIGURATION": "Delete Zendesk Configuration",
-		"NO_SALESFORCECONFIGURATION_AVAILABLE": "No Salesforce Configurations available",
-		"NEW_SALESFORCECONFIGURATION": "New Salesforce Configuration",
-		"ADD_SALESFORCECONFIGURATION": "Add Salesforce Configuration",
-		"EDIT_SALESFORCECONFIGURATION": "Edit Salesforce Configuration",
-		"DELETE_SALESFORCECONFIGURATION": "Delete Salesforce Configuration",
-		"NO_SUGARCRMCONFIGURATION_AVAILABLE": "No SugarCRM Configurations available",
-		"NEW_SUGARCRMCONFIGURATION": "New SugarCRM Configuration",
-		"ADD_SUGARCRMCONFIGURATION": "Add SugarCRM Configuration",
-		"EDIT_SUGARCRMCONFIGURATION": "Edit SugarCRM Configuration",
-		"DELETE_SUGARCRMCONFIGURATION": "Delete SugarCRM Configuration",
-		"NO_FRESHDESKCONFIGURATION_AVAILABLE": "No Freshdesk Configurations available",
-		"NEW_FRESHDESKCONFIGURATION": "New Freshdesk Configuration",
-		"ADD_FRESHDESKCONFIGURATION": "Add Freshdesk Configuration",
-		"EDIT_FRESHDESKCONFIGURATION": "Edit Freshdesk Configuration",
-		"DELETE_FRESHDESKCONFIGURATION": "Delete Freshdesk Configuration",
-		"SALESFORCEACCOUNTS": "Salesforce Accounts",
-		"EDIT_SALESFORCEACCOUNT": "Edit Salesforce Account",
-		"DELETE_SALESFORCEACCOUNT": "Delete Salesforce Account",
-		"NEW_SALESFORCEACCOUNT": "New Salesforce Account",
-		"ADD_SALESFORCEACCOUNT": "Add Salesforce Account",
-		"CLIENTID": "Client ID",
-		"CLIENTSECRET": "Client Secret",
-		"SECURITYTOKEN": "Security Token",
-		"SEARCH_FOR_ANYONE": "Search",
-		"APIKEY": "Api Key",
-		"FRESHDESKACCOUNTS": "Freshdesk Accounts",
-		"EDIT_FRESHDESKACCOUNT": "Edit Freshdesk Account",
-		"DELETE_FRESHDESKACCOUNT": "Delete Freshdesk Account",
-		"NEW_FRESHDESKACCOUNT": "New Freshdesk Account",
-		"ADD_FRESHDESKACCOUNT": "Add Freshdesk Account",
-		"SUGARCRMACCOUNTS": "SugarCRM Accounts",
-		"EDIT_SUGARCRMACCOUNT": "Edit SugarCRM Account",
-		"DELETE_SUGARCRMACCOUNT": "Delete SugarCRM Account",
-		"NEW_SUGARCRMACCOUNT": "New SugarCRM Account",
-		"ADD_SUGARCRMACCOUNT": "Add SugarCRM Account",
-		"CONFIGURATIONS": "Configurations",
-		"NO_CONFIGURATION_AVAILABLE": "No Configurations available",
-		"NEW_CONFIGURATION": "New Configuration",
-		"ADD_CONFIGURATION": "Add Configuration",
-		"EDIT_CONFIGURATION": "Edit Configuration",
-		"DELETE_CONFIGURATION": "Delete Configuration",
-		"SUBJECTS": "Subjects",
-		"DESCRIPTIONS": "Descriptions",
-		"FIELDS": "Fields",
-		"TAGS": "Tags",
-		"TYPE": "Type",
-		"CONTENT": "Content",
-		"EDIT_SUBJECT": "Edit Subject",
-		"DELETE_SUBJECT": "Delete Subject",
-		"NEW_SUBJECT": "New Subject",
-		"ADD_SUBJECT": "Add Subject",
-		"EDIT_DESCRIPTION": "Edit Description",
-		"DELETE_DESCRIPTION": "Delete Description",
-		"NEW_DESCRIPTION": "New Description",
-		"ADD_DESCRIPTION": "Add Description",
-		"EDIT_FIELD": "Edit Field",
-		"DELETE_FIELD": "Delete Field",
-		"NEW_FIELD": "New Field",
-		"ADD_FIELD": "Add Field",
-		"ADD": "Add",
-		"VOICE": "Voice",
-		"MAIL": "Email",
-		"CHAT": "Chat",
-		"SMS": "SMS",
-		"OPENCHANNEL": "Open Channel",
-		"INBOUND_IN_QUEUE": "Inbound in Queue",
-		"OUTBOUND_CALL": "Outbound Call",
-		"VALUE": "Value",
-		"FIELD": "Field",
-		"KEY": "Key",
-		"CHANNEL": "Channel",
-		"DELETE": "Delete",
-		"NO_AVAILABLE_INFO": "No available info",
-		"TEST_ZENDESKACCOUNT": "Test Zendesk Account",
-		"TEST_FRESHDESKACCOUNT": "Test Freshdesk Account",
-		"TEST_SUGARCRMACCOUNT": "Test SugerCRM Account",
-		"TEST_SALESFORCEACCOUNT": "Test Salesforce Account",
-		"INTEGRATION_TAB": "Integration Tab",
-		"NEW_TAB": "New Tab",
-		"DESKACCOUNTS": "Desk Accounts",
-		"EDIT_DESKACCOUNT": "Edit Desk Account",
-		"TEST_DESKACCOUNT": "Test Desk Account",
-		"DELETE_DESKACCOUNT": "Delete Desk Account",
-		"CONSUMERKEY": "Consumer Key",
-		"CONSUMERSECRET": "Consumer Secret",
-		"TOKENSECRET": "Token Secret",
-		"ADD_DESKACCOUNT": "Add Desk Account",
-		"NEW_DESKACCOUNT": "New Desk Account",
-		"ADD_DESKCONFIGURATION": "Add Desk Configuration",
-		"NEW_DESKCONFIGURATION": "New Desk Configuration",
-		"DELETE_DESKCONFIGURATION": "Delete Desk Configuration",
-		"ZOHOACCOUNTS": "Zoho Accounts",
-		"EDIT_ZOHOACCOUNT": "Edit Zoho Account",
-		"TEST_ZOHOACCOUNT": "Test Zoho Account",
-		"DELETE_ZOHOACCOUNT": "Delete Zoho Account",
-		"ADD_ZOHOACCOUNT": "Add Zoho Account",
-		"NEW_ZOHOACCOUNT": "New Zoho Account",
-		"ADD_ZOHOCONFIGURATION": "Add Zoho Configuration",
-		"NEW_ZOHOCONFIGURATION": "New Zoho Configuration",
-		"AUTHTOKEN": "Authorization Token",
-		"HOST": "Host",
-		"DELETE_ZOHOCONFIGURATION": "Delete Zoho Configuration",
-		"PAGE": "Page",
-		"ROWSPERPAGE": "Rows per page",
-		"OF": "of",
-		"VTIGERACCOUNTS": "vTiger Accounts",
-		"VTIGER_USER_NAME": "vTiger User Name",
-		"MODULE_NAME": "vTiger Module Name",
-		"ACCESS_KEY": "vTiger Access Key",
-		"ADD_VTIGERACCOUNT": "Add new vTiger Account",
-		"EDIT_VTIGERACCOUNT": "Edit vTiger Account",
-		"TEST_VTIGERACCOUNT": "Test vTiger Account",
-		"DELETE_VTIGERACCOUNT": "Delete vTiger Account",
-		"NEW_VTIGERACCOUNT": "New vTiger Account",
-		"NEW_VTIGERCONFIGURATION": "Create vTiger Configuration",
-		"DELETE_VTIGERCONFIGURATION": "Delete vTiger Configuration",
-		"ADD_VTIGERCONFIGURATION": "Add vTiger Configuration",
-		"FRESHSALESACCOUNTS": "Freshsales Accounts",
-		"EDIT_FRESHSALESACCOUNT": "Edit Freshsales Account",
-		"DELETE_FRESHSALESACCOUNT": "Delete Freshsales Account",
-		"NEW_FRESHSALESACCOUNT": "New Freshsales Account",
-		"ADD_FRESHSALESACCOUNT": "Add Freshsales Account",
-		"NO_FRESHSALESCONFIGURATION_AVAILABLE": "No Freshsales Configurations available",
-		"NEW_FRESHSALESCONFIGURATION": "New Freshsales Configuration",
-		"ADD_FRESHSALESCONFIGURATION": "Add Freshsales Configuration",
-		"EDIT_FRESHSALESCONFIGURATION": "Edit Freshsales Configuration",
-		"DELETE_FRESHSALESCONFIGURATION": "Delete Freshsales Configuration",
-		"TEST_FRESHSALESACCOUNT": "Test Freshsales Account",
-		"SERVICENOWACCOUNTS": "ServiceNow Accounts",
-		"ADD_SERVICENOWACCOUNT": "Add new ServiceNow Account",
-		"EDIT_SERVICENOWACCOUNT": "Edit ServiceNow Account",
-		"TEST_SERVICENOWACCOUNT": "Test ServiceNow Account",
-		"DELETE_SERVICENOWACCOUNT": "Delete ServiceNow Account",
-		"NEW_SERVICENOWACCOUNT": "New ServiceNow Account",
-		"NEW_SERVICENOWCONFIGURATION": "Create ServiceNow Configuration",
-		"DELETE_SERVICENOWCONFIGURATION": "Delete ServiceNow Configuration",
-		"ADD_SERVICENOWCONFIGURATION": "Add ServiceNow Configuration",
-		"DYNAMICS365ACCOUNTS": "Dynamics365 Accounts",
-		"TENANTID": "Tenant Id",
-		"ADD_DYNAMICS365ACCOUNT": "Add new Dynamics365 Account",
-		"EDIT_DYNAMICS365ACCOUNT": "Edit Dynamics365 Account",
-		"TEST_DYNAMICS365ACCOUNT": "Test Dynamics365 Account",
-		"DELETE_DYNAMICS365ACCOUNT": "Delete Dynamics365 Account",
-		"NEW_DYNAMICS365ACCOUNT": "New Dynamics365 Account",
-		"NEW_DYNAMICS365CONFIGURATION": "Create Dynamics365 Configuration",
-		"DELETE_DYNAMICS365CONFIGURATION": "Delete Dynamics365 Configuration",
-		"ADD_DYNAMICS365CONFIGURATION": "Add Dynamics365 Configuration",
-		"TICKETTYPE": "Ticket Type",
-		"CASE": "Case",
-		"PHONECALL": "Phonecall",
-		"TASK": "Task",
-		"MODULECREATE": "Module Create"
+		"CODE": "Kūrėjų konsolės kodas",
+		"REFRESHTOKEN": "Atnaujinti atpažinimo ženklą (sugeneruotas)",
+		"ACCOUNT": "Paskyra",
+		"ZENDESKCONFIGURATIONS": "Zendesk konfigūracijos",
+		"SALESFORCECONFIGURATIONS": "Salesforce konfigūracijos",
+		"SUGARCRMCONFIGURATIONS": "SugarCRM konfigūracijos",
+		"FRESHDESKCONFIGURATIONS": "Freshdesk konfigūracijos",
+		"GENERAL": "Bendras",
+		"CREATED_AT": "Sukurtas",
+		"SAVE": "Saugoti",
+		"NO_ZENDESKCONFIGURATION_AVAILABLE": "Nėra Zendesk konfigūracijų",
+		"NEW_ZENDESKCONFIGURATION": "Nauja Zendesk konfigūracija",
+		"ADD_ZENDESKCONFIGURATION": "Pridėti Zendesk konfigūraciją",
+		"EDIT_ZENDESKCONFIGURATION": "Redaguoti Zendesk konfigūraciją",
+		"DELETE_ZENDESKCONFIGURATION": "Ištrinti Zendesk konfigūraciją",
+		"NO_SALESFORCECONFIGURATION_AVAILABLE": "Nėra Salesforce konfigūracijų",
+		"NEW_SALESFORCECONFIGURATION": "Nauja Salesforce konfigūracija",
+		"ADD_SALESFORCECONFIGURATION": "Pridėti Salesforce konfigūraciją",
+		"EDIT_SALESFORCECONFIGURATION": "Redaguoti Salesforce konfigūraciją",
+		"DELETE_SALESFORCECONFIGURATION": "Ištrinti Salesforce konfigūraciją",
+		"NO_SUGARCRMCONFIGURATION_AVAILABLE": "Nėra SugarCRM konfigūracijų",
+		"NEW_SUGARCRMCONFIGURATION": "Nauja SugarCRM konfigūracija",
+		"ADD_SUGARCRMCONFIGURATION": "Pridėti SugarCRM konfigūraciją",
+		"EDIT_SUGARCRMCONFIGURATION": "Redaguoti SugarCRM konfigūraciją",
+		"DELETE_SUGARCRMCONFIGURATION": "Ištrinti SugarCRM konfigūraciją",
+		"NO_FRESHDESKCONFIGURATION_AVAILABLE": "Nėra Freshdesk konfigūracijų",
+		"NEW_FRESHDESKCONFIGURATION": "Nauja Freshdesk konfigūracija",
+		"ADD_FRESHDESKCONFIGURATION": "Pridėti Freshdesk konfigūraciją",
+		"EDIT_FRESHDESKCONFIGURATION": "Redaguoti Freshdesk konfigūraciją",
+		"DELETE_FRESHDESKCONFIGURATION": "Ištrinti Freshdesk konfigūraciją",
+		"SALESFORCEACCOUNTS": "Salesforce paskyros",
+		"EDIT_SALESFORCEACCOUNT": "Redaguoti Salesforce paskyrą",
+		"DELETE_SALESFORCEACCOUNT": "Ištrinti Salesforce paskyrą",
+		"NEW_SALESFORCEACCOUNT": "Nauja Salesforce paskyra",
+		"ADD_SALESFORCEACCOUNT": "Pridėti Salesforce paskyrą",
+		"CLIENTID": "Kliento ID",
+		"CLIENTSECRET": "Kliento slėpinys",
+		"SECURITYTOKEN": "Saugos atpažinimo ženklas",
+		"SEARCH_FOR_ANYONE": "Paieška",
+		"APIKEY": "Api raktas",
+		"FRESHDESKACCOUNTS": "Freshdesk paskyros",
+		"EDIT_FRESHDESKACCOUNT": "Redaguoti Freshdesk paskyrą",
+		"DELETE_FRESHDESKACCOUNT": "Ištrinti Freshdesk paskyrą",
+		"NEW_FRESHDESKACCOUNT": "Nauja Freshdesk paskyra",
+		"ADD_FRESHDESKACCOUNT": "Pridėti Freshdesk paskyrą",
+		"SUGARCRMACCOUNTS": "SugarCRM Paskyros",
+		"EDIT_SUGARCRMACCOUNT": "Redaguoti SugarCRM paskyrą",
+		"DELETE_SUGARCRMACCOUNT": "Ištrinti SugarCRM paskyrą",
+		"NEW_SUGARCRMACCOUNT": "Nauja SugarCRM paskyra",
+		"ADD_SUGARCRMACCOUNT": "Pridėti SugarCRM paskyrą",
+		"CONFIGURATIONS": "Konfigūracijos",
+		"NO_CONFIGURATION_AVAILABLE": "Nėra konfigūracijų",
+		"NEW_CONFIGURATION": "Nauja konfigūracija",
+		"ADD_CONFIGURATION": "Pridėti konfigūraciją",
+		"EDIT_CONFIGURATION": "Redaguoti konfigūraciją",
+		"DELETE_CONFIGURATION": "Ištrinti konfigūraciją",
+		"SUBJECTS": "Temos",
+		"DESCRIPTIONS": "Aprašymai",
+		"FIELDS": "Laukai",
+		"TAGS": "Žymos",
+		"TYPE": "Tipas",
+		"CONTENT": "Turinys",
+		"EDIT_SUBJECT": "Redaguoti temą",
+		"DELETE_SUBJECT": "Ištrinti temą",
+		"NEW_SUBJECT": "Nauja tema",
+		"ADD_SUBJECT": "Pridėti temą",
+		"EDIT_DESCRIPTION": "Redaguoti aprašymą",
+		"DELETE_DESCRIPTION": "Ištrinti aprašymą",
+		"NEW_DESCRIPTION": "Naujas aprašymas",
+		"ADD_DESCRIPTION": "Pridėti aprašymą",
+		"EDIT_FIELD": "Redaguoti lauką",
+		"DELETE_FIELD": "Ištrinti lauką",
+		"NEW_FIELD": "Naujas laukas",
+		"ADD_FIELD": "Pridėti lauką",
+		"ADD": "Pridėti",
+		"VOICE": "Balsas",
+		"MAIL": "El. paštas",
+		"CHAT": "Pokalbis",
+		"SMS": "Trumpoji žinutė",
+		"OPENCHANNEL": "Atidaryti kanalą",
+		"INBOUND_IN_QUEUE": "Įeinantis į eilę",
+		"OUTBOUND_CALL": "Išeinantis skambutis",
+		"VALUE": "Reikšmė",
+		"FIELD": "Laukas",
+		"KEY": "Raktas",
+		"CHANNEL": "Kanalas",
+		"DELETE": "Ištrinti",
+		"NO_AVAILABLE_INFO": "Informacijos nėra",
+		"TEST_ZENDESKACCOUNT": "Tikrinti Zendesk paskyrą",
+		"TEST_FRESHDESKACCOUNT": "Tikrinti Freshdesk paskyrą",
+		"TEST_SUGARCRMACCOUNT": "Tikrinti SugerCRM paskyrą",
+		"TEST_SALESFORCEACCOUNT": "Tikrinti Salesforce paskyrą",
+		"INTEGRATION_TAB": "Integracijos skirtukas",
+		"NEW_TAB": "Naujas skirtukas",
+		"DESKACCOUNTS": "Desk paskyros",
+		"EDIT_DESKACCOUNT": "Redaguoti Desk paskyrą",
+		"TEST_DESKACCOUNT": "Tikrinti Desk paskyrą",
+		"DELETE_DESKACCOUNT": "Ištrinti Desk paskyrą",
+		"CONSUMERKEY": "Vartotojo raktas",
+		"CONSUMERSECRET": "Vartotojo slėpinys",
+		"TOKENSECRET": "Atpažinimo ženklo slėpinys",
+		"ADD_DESKACCOUNT": "Pridėti Desk paskyrą",
+		"NEW_DESKACCOUNT": "Nauja Desk paskyra",
+		"ADD_DESKCONFIGURATION": "Pridėti Desk konfigūraciją",
+		"NEW_DESKCONFIGURATION": "Nauja Desk konfigūracija",
+		"DELETE_DESKCONFIGURATION": "Ištrinti Desk konfigūraciją",
+		"ZOHOACCOUNTS": "Zoho paskyros",
+		"EDIT_ZOHOACCOUNT": "Redaguoti Zoho paskyrą",
+		"TEST_ZOHOACCOUNT": "Tikrinti Zoho paskyrą",
+		"DELETE_ZOHOACCOUNT": "Ištrinti Zoho paskyrą",
+		"ADD_ZOHOACCOUNT": "Pridėti Zoho paskyrą",
+		"NEW_ZOHOACCOUNT": "Nauja Zoho paskyra",
+		"ADD_ZOHOCONFIGURATION": "Pridėti Zoho konfigūraciją",
+		"NEW_ZOHOCONFIGURATION": "Nauja Zoho konfigūracija",
+		"AUTHTOKEN": "Įgaliojimo atpažinimo ženklas",
+		"HOST": "Savininkas",
+		"DELETE_ZOHOCONFIGURATION": "Ištrinti Zoho konfigūraciją",
+		"PAGE": "Puslapis",
+		"ROWSPERPAGE": "Eilutės puslapyje",
+		"OF": "iš",
+		"VTIGERACCOUNTS": "vTiger paskyros",
+		"VTIGER_USER_NAME": "vTiger Vartotojo vardas",
+		"MODULE_NAME": "vTiger Modulio pavadinimas",
+		"ACCESS_KEY": "vTiger Prieigos raktas",
+		"ADD_VTIGERACCOUNT": "Pridėti naują vTiger paskyrą",
+		"EDIT_VTIGERACCOUNT": "Redaguoti vTiger paskyrą",
+		"TEST_VTIGERACCOUNT": "Tikrinti vTiger paskyrą",
+		"DELETE_VTIGERACCOUNT": "Ištrinti vTiger paskyrą",
+		"NEW_VTIGERACCOUNT": "Nauja vTiger paskyra",
+		"NEW_VTIGERCONFIGURATION": "Kurti vTiger konfigūraciją",
+		"DELETE_VTIGERCONFIGURATION": "Ištrinti vTiger konfigūraciją",
+		"ADD_VTIGERCONFIGURATION": "Pridėti vTiger konfigūraciją",
+		"FRESHSALESACCOUNTS": "Freshsales paskyros",
+		"EDIT_FRESHSALESACCOUNT": "Redaguoti Freshsales paskyrą",
+		"DELETE_FRESHSALESACCOUNT": "Ištrinti Freshsales paskyrą",
+		"NEW_FRESHSALESACCOUNT": "Nauja Freshsales paskyra",
+		"ADD_FRESHSALESACCOUNT": "Pridėti Freshsales paskyrą",
+		"NO_FRESHSALESCONFIGURATION_AVAILABLE": "Nėra Freshsales konfigūracijų",
+		"NEW_FRESHSALESCONFIGURATION": "Nauja Freshsales konfigūracija",
+		"ADD_FRESHSALESCONFIGURATION": "Pridėti Freshsales konfigūraciją",
+		"EDIT_FRESHSALESCONFIGURATION": "Redaguoti Freshsales konfigūraciją",
+		"DELETE_FRESHSALESCONFIGURATION": "Ištrinti Freshsales konfigūraciją",
+		"TEST_FRESHSALESACCOUNT": "Tikrinti Freshsales paskyrą",
+		"SERVICENOWACCOUNTS": "ServiceNow paskyros",
+		"ADD_SERVICENOWACCOUNT": "Pridėti naują ServiceNow paskyrą",
+		"EDIT_SERVICENOWACCOUNT": "Redaguoti ServiceNow paskyrą",
+		"TEST_SERVICENOWACCOUNT": "Tikrinti ServiceNow paskyrą",
+		"DELETE_SERVICENOWACCOUNT": "Ištrinti ServiceNow paskyrą",
+		"NEW_SERVICENOWACCOUNT": "Nauja ServiceNow paskyra",
+		"NEW_SERVICENOWCONFIGURATION": "Kurti ServiceNow konfigūraciją",
+		"DELETE_SERVICENOWCONFIGURATION": "Ištrinti ServiceNow konfigūraciją",
+		"ADD_SERVICENOWCONFIGURATION": "Pridėti ServiceNow konfigūraciją",
+		"DYNAMICS365ACCOUNTS": "Dynamics365 paskyros",
+		"TENANTID": "Nuomininko Id",
+		"ADD_DYNAMICS365ACCOUNT": "Pridėti naują Dynamics365 paskyrą",
+		"EDIT_DYNAMICS365ACCOUNT": "Redaguoti Dynamics365 paskyrą",
+		"TEST_DYNAMICS365ACCOUNT": "Tikrinti Dynamics365 paskyrą",
+		"DELETE_DYNAMICS365ACCOUNT": "Ištrinti Dynamics365 paskyrą",
+		"NEW_DYNAMICS365ACCOUNT": "Nauja Dynamics365 paskyra",
+		"NEW_DYNAMICS365CONFIGURATION": "Kurti Dynamics365 konfigūraciją",
+		"DELETE_DYNAMICS365CONFIGURATION": "Ištrinti Dynamics365 konfigūraciją",
+		"ADD_DYNAMICS365CONFIGURATION": "Pridėti Dynamics365 konfigūraciją",
+		"TICKETTYPE": "Bilieto tipas",
+		"CASE": "Atvejis",
+		"PHONECALL": "Skambutis",
+		"TASK": "Užduotis",
+		"MODULECREATE": "Modulio kūrimas"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/integrations/i18n/ru.json b/public/app/main/apps/integrations/i18n/ru.json
index e277778..9000552 100644
--- a/public/app/main/apps/integrations/i18n/ru.json
+++ b/public/app/main/apps/integrations/i18n/ru.json
@@ -1,49 +1,49 @@
 {
 	"INTEGRATIONS": {
-		"INTEGRATIONS": "Интеграции",
-		"ZENDESKACCOUNTS": "Учетные записи Zendesk",
-		"ID": "Идентификатор",
+		"INTEGRATIONS": "Интеграция",
+		"ZENDESKACCOUNTS": "Zendesk счетов",
+		"ID": "Id",
 		"NAME": "Имя",
 		"USERNAME": "Имя пользователя",
 		"URI": "URL",
 		"BACK": "Назад",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
+		"SELECT_NONE": "Выберите пункт None",
 		"EDIT_ZENDESKACCOUNT": "Редактировать учетную запись Zendesk",
 		"DELETE_ZENDESKACCOUNT": "Удалить учетную запись Zendesk",
 		"NEW_ZENDESKACCOUNT": "Новая учетная запись Zendesk",
-		"AUTHTYPE": "Тип аутентификации",
+		"AUTHTYPE": "Тип проверки подлинности",
 		"PASSWORD": "Пароль",
-		"CONFIRM_PASSWORD": "Подтверждение пароля",
-		"TOKEN": "Токен",
-		"MOTIONPROXYADDRESS": "IP-адрес Motion или Proxy",
+		"CONFIRM_PASSWORD": "Подтвердите пароль",
+		"TOKEN": "Маркер",
+		"MOTIONPROXYADDRESS": "Движение или прокси-сервера IP-адрес",
 		"DESCRIPTION": "Описание",
 		"ADD_ZENDESKACCOUNT": "Добавить учетную запись Zendesk",
 		"ERRORS": {
-			"NAME_REQUIRED": "Обязательное поле",
-			"USERNAME_REQUIRED": "Обязательное поле",
-			"URI_REQUIRED": "Обязательное поле",
-			"URI_MUST_VALID_URL": "Неверный формат",
-			"PASSWORD_REQUIRED": "Обязательное поле",
-			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
-			"TOKEN_REQUIRED": "Обязательное поле",
-			"MOTIONPROXYADDRESS_MUST_VALID_URL": "Неверный формат",
-			"CLIENTID_REQUIRED": "Обязательное поле",
-			"CLIENTSECRET_REQUIRED": "Обязательное поле",
-			"SECURITYTOKEN_REQUIRED": "Обязательное поле",
-			"APIKEY_REQUIRED": "Обязательное поле",
-			"CONTENT_REQUIRED": "Обязательное поле",
-			"VARIABLENAME_REQUIRED": "Обязательное поле",
-			"KEY_REQUIRED": "Обязательное поле",
-			"TYPE_REQUIRED": "Обязательное поле",
-			"VALUE_REQUIRED": "Обязательное поле",
-			"FIELD_REQUIRED": "Обязательное поле",
-			"CONSUMERKEY_REQUIRED": "Обязательное поле",
-			"CONSUMERSECRET_REQUIRED": "Обязательное поле",
-			"TOKENSECRET_REQUIRED": "Обязательное поле",
-			"HOST_REQUIRED": "Обязательное поле",
-			"AUTHTOKEN_REQUIRED": "Обязательное поле",
+			"NAME_REQUIRED": "Это имя требуется",
+			"USERNAME_REQUIRED": "Имя пользователя не требуется",
+			"URI_REQUIRED": "URL не требуется",
+			"URI_MUST_VALID_URL": "URL должен быть записан в действительный формат",
+			"PASSWORD_REQUIRED": "Пароль не требуется",
+			"CONFIRM_NOT_MATCH": "Пароли не' t соответствует",
+			"TOKEN_REQUIRED": "Маркер не требуется",
+			"MOTIONPROXYADDRESS_MUST_VALID_URL": "Этот адрес должен быть записан в действительный формат",
+			"CLIENTID_REQUIRED": "Код клиента не требуется",
+			"CLIENTSECRET_REQUIRED": "Клиент секрет не требуется",
+			"SECURITYTOKEN_REQUIRED": "В маркер безопасности не требуется",
+			"APIKEY_REQUIRED": "API не требуется ключ",
+			"CONTENT_REQUIRED": "Содержимое не требуется",
+			"VARIABLENAME_REQUIRED": "Переменная не требуется",
+			"KEY_REQUIRED": "Ключ не требуется",
+			"TYPE_REQUIRED": "Тип не требуется",
+			"VALUE_REQUIRED": "Это значение требуется",
+			"FIELD_REQUIRED": "Поле является обязательным",
+			"CONSUMERKEY_REQUIRED": "Потребителей не требуется ключ",
+			"CONSUMERSECRET_REQUIRED": "Потребитель тайного не требуется",
+			"TOKENSECRET_REQUIRED": "Маркер тайного не требуется",
+			"HOST_REQUIRED": "Хост не требуется",
+			"AUTHTOKEN_REQUIRED": "В Autorization маркер не требуется",
 			"ACCESS_KEY_REQUIRED": "Обязательное поле",
 			"VTIGER_USER_NAME_REQUIRED": "Обязательное поле",
 			"TENANTID_REQUIRED": "Обязательное поле",
@@ -51,187 +51,187 @@
 			"CODE_REQUIRED": "Обязательное поле"
 		},
 		"HELP": {
-			"MOTIONPROXYADDRESS": "Адрес Motion (Proxy): требуется, если вы хотите заполнить текст тикета, используя URL записи. Ввести адрес в следующем формате: <protocol> : //<ipaddress>[:<port>]. Пример: https://X.Y.Z.W",
-			"TICKETTYPE": "Тип тикета",
-			"CLIENTID": "Специальный идентификатор клиента вашего приложения",
-			"CLIENTSECRET": "Специальный секрет клиента вашего приложения",
-			"CODE": "Специальный код, сгенерированный посредством консоли разработчика",
-			"REFRESHTOKEN": "Автоматически сгенерированный токен обновления, используемый для обновления токенов доступа с истекшим сроком действия. Кроме того, токен доступа генерируется автоматически при каждом запуске API.",
-			"ZONE": "Выбрать свою географическую зону (US, AU, EU, IN, CN) для активации доменных учетных записей Zoho"
+			"MOTIONPROXYADDRESS": "Motion (прокси) Адрес: она является обязательным, если вы хотите заполнить билет тела с модификации URL. Пожалуйста, введите в следующем формате: &LT;протокола&GT; : //<ipaddress&GT;[:<порт&GT;]. Пример: https://X.Y.Z.W",
+			"TICKETTYPE": "Тип билета",
+			"CLIENTID": "Конкретный идентификатор клиента вашего приложения",
+			"CLIENTSECRET": "Конкретный CLientSecret вашего приложения",
+			"CODE": "Конкретный код, созданный с помощью консоли разработчика",
+			"REFRESHTOKEN": "Автоматически сгенерированный токен обновления, используемый для обновления токенов доступа с истекшим сроком действия. Также токен доступа генерируется автоматически при каждом запуске API.",
+			"ZONE": "Выберите свою географическую зону (США, АС, ЕС, IN, CN), чтобы активировать доменные учетные записи Zoho"
 		},
-		"ACCOUNT": "Учетная запись",
-		"ZENDESKCONFIGURATIONS": "Конфигурации Zendesk",
-		"SALESFORCECONFIGURATIONS": "Конфигурации Salesforce",
-		"SUGARCRMCONFIGURATIONS": "Конфигурации SugarCRM",
-		"FRESHDESKCONFIGURATIONS": "Конфигурации Freshdesk",
-		"GENERAL": "Общие",
-		"CREATED_AT": "Создано на",
+		"ACCOUNT": "Счета",
+		"ZENDESKCONFIGURATIONS": "Zendesk конфигураций",
+		"SALESFORCECONFIGURATIONS": "Salesforce конфигураций",
+		"SUGARCRMCONFIGURATIONS": "Вроде SugarCRM конфигураций",
+		"FRESHDESKCONFIGURATIONS": "Freshdesk конфигураций",
+		"GENERAL": "Генеральной",
+		"CREATED_AT": "Созданные в",
 		"SAVE": "Сохранить",
-		"NO_ZENDESKCONFIGURATION_AVAILABLE": "Доступные конфигурации Zendesk отсутствуют",
-		"NEW_ZENDESKCONFIGURATION": "Новая конфигурация Zendesk",
-		"ADD_ZENDESKCONFIGURATION": "Добавить конфигурацию Zendesk",
-		"EDIT_ZENDESKCONFIGURATION": "Редактировать конфигурацию Zendesk",
-		"DELETE_ZENDESKCONFIGURATION": "Удалить конфигурацию Zendesk",
-		"NO_SALESFORCECONFIGURATION_AVAILABLE": "Доступные конфигурации Salesforce отсутствуют",
-		"NEW_SALESFORCECONFIGURATION": "Новая конфигурация Salesforce",
+		"NO_ZENDESKCONFIGURATION_AVAILABLE": "Нет Zendesk доступные конфигурации",
+		"NEW_ZENDESKCONFIGURATION": "Новые конфигурации Zendesk",
+		"ADD_ZENDESKCONFIGURATION": "Добавить Zendesk конфигурации",
+		"EDIT_ZENDESKCONFIGURATION": "Редактирование конфигурации Zendesk",
+		"DELETE_ZENDESKCONFIGURATION": "Удалить конфигурации Zendesk",
+		"NO_SALESFORCECONFIGURATION_AVAILABLE": "Нет Salesforce доступные конфигурации",
+		"NEW_SALESFORCECONFIGURATION": "Новые конфигурации Salesforce",
 		"ADD_SALESFORCECONFIGURATION": "Добавить конфигурацию Salesforce",
-		"EDIT_SALESFORCECONFIGURATION": "Редактировать конфигурацию Salesforce",
-		"DELETE_SALESFORCECONFIGURATION": "Удалить конфигурацию Salesforce",
-		"NO_SUGARCRMCONFIGURATION_AVAILABLE": "Доступные конфигурации SugarCRM отсутствуют",
-		"NEW_SUGARCRMCONFIGURATION": "Новая конфигурация SugarCRM",
-		"ADD_SUGARCRMCONFIGURATION": "Добавить конфигурацию SugarCRM",
-		"EDIT_SUGARCRMCONFIGURATION": "Редактировать конфигурацию SugarCRM",
-		"DELETE_SUGARCRMCONFIGURATION": "Удалить конфигурацию SugarCRM",
-		"NO_FRESHDESKCONFIGURATION_AVAILABLE": "Доступные конфигурации Freshdesk отсутствуют",
-		"NEW_FRESHDESKCONFIGURATION": "Новая конфигурация Freshdesk",
-		"ADD_FRESHDESKCONFIGURATION": "Добавить конфигурацию Freshdesk",
-		"EDIT_FRESHDESKCONFIGURATION": "Редактировать конфигурацию Freshdesk",
-		"DELETE_FRESHDESKCONFIGURATION": "Удалить конфигурацию Freshdesk",
-		"SALESFORCEACCOUNTS": "Учетные записи Salesforce",
+		"EDIT_SALESFORCECONFIGURATION": "Редактирование конфигурации Salesforce",
+		"DELETE_SALESFORCECONFIGURATION": "Удалить конфигурации Salesforce",
+		"NO_SUGARCRMCONFIGURATION_AVAILABLE": "Нет вроде SugarCRM - Доступные конфигурации",
+		"NEW_SUGARCRMCONFIGURATION": "Новые конфигурации с возможностью дальнейшей пролонгации договора аренды",
+		"ADD_SUGARCRMCONFIGURATION": "Добавить вроде SugarCRM конфигурации",
+		"EDIT_SUGARCRMCONFIGURATION": "Редактирование конфигурации с возможностью дальнейшей пролонгации договора аренды",
+		"DELETE_SUGARCRMCONFIGURATION": "Удалить вроде SugarCRM конфигурации",
+		"NO_FRESHDESKCONFIGURATION_AVAILABLE": "Нет Freshdesk доступные конфигурации",
+		"NEW_FRESHDESKCONFIGURATION": "Новые конфигурации Freshdesk",
+		"ADD_FRESHDESKCONFIGURATION": "Добавить Freshdesk конфигурации",
+		"EDIT_FRESHDESKCONFIGURATION": "Редактирование конфигурации Freshdesk",
+		"DELETE_FRESHDESKCONFIGURATION": "Удалить конфигурации Freshdesk",
+		"SALESFORCEACCOUNTS": "Salesforce счетов",
 		"EDIT_SALESFORCEACCOUNT": "Редактировать учетную запись Salesforce",
 		"DELETE_SALESFORCEACCOUNT": "Удалить учетную запись Salesforce",
 		"NEW_SALESFORCEACCOUNT": "Новая учетная запись Salesforce",
 		"ADD_SALESFORCEACCOUNT": "Добавить учетную запись Salesforce",
 		"CLIENTID": "Идентификатор клиента",
-		"CLIENTSECRET": "Секрет клиента",
-		"SECURITYTOKEN": "Токен безопасности",
-		"SEARCH_FOR_ANYONE": "Поиск",
-		"APIKEY": "API Key",
-		"FRESHDESKACCOUNTS": "Учетные записи Freshdesk",
+		"CLIENTSECRET": "Клиент тайного",
+		"SECURITYTOKEN": "Маркер безопасности",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
+		"APIKEY": "Ключ API",
+		"FRESHDESKACCOUNTS": "Freshdesk счетов",
 		"EDIT_FRESHDESKACCOUNT": "Редактировать учетную запись Freshdesk",
 		"DELETE_FRESHDESKACCOUNT": "Удалить учетную запись Freshdesk",
 		"NEW_FRESHDESKACCOUNT": "Новая учетная запись Freshdesk",
 		"ADD_FRESHDESKACCOUNT": "Добавить учетную запись Freshdesk",
-		"SUGARCRMACCOUNTS": "Учетные записи SugarCRM",
-		"EDIT_SUGARCRMACCOUNT": "Редактировать учетную запись SugarCRM",
-		"DELETE_SUGARCRMACCOUNT": "Удалить учетную запись SugarCRM",
-		"NEW_SUGARCRMACCOUNT": "Новая учетная запись SugarCRM",
-		"ADD_SUGARCRMACCOUNT": "Добавить учетную запись SugarCRM",
+		"SUGARCRMACCOUNTS": "Вроде SugarCRM счетов",
+		"EDIT_SUGARCRMACCOUNT": "Редактировать учетную запись с возможностью дальнейшей пролонгации договора аренды",
+		"DELETE_SUGARCRMACCOUNT": "Удалить учетную запись с возможностью дальнейшей пролонгации договора аренды",
+		"NEW_SUGARCRMACCOUNT": "Новые вроде SugarCRM счета",
+		"ADD_SUGARCRMACCOUNT": "Добавить вроде SugarCRM счета",
 		"CONFIGURATIONS": "Конфигурации",
-		"NO_CONFIGURATION_AVAILABLE": "Конфигурации отсутствуют",
+		"NO_CONFIGURATION_AVAILABLE": "Нет доступных конфигураций",
 		"NEW_CONFIGURATION": "Новая конфигурация",
 		"ADD_CONFIGURATION": "Добавить конфигурацию",
-		"EDIT_CONFIGURATION": "Редактировать конфигурацию",
+		"EDIT_CONFIGURATION": "Изменение конфигурации",
 		"DELETE_CONFIGURATION": "Удалить конфигурацию",
-		"SUBJECTS": "Предметы",
-		"DESCRIPTIONS": "Описания",
+		"SUBJECTS": "Темы",
+		"DESCRIPTIONS": "Описание",
 		"FIELDS": "Поля",
-		"TAGS": "Теги",
+		"TAGS": "Теги индексов",
 		"TYPE": "Тип",
 		"CONTENT": "Содержание",
-		"EDIT_SUBJECT": "Изменить предмет",
-		"DELETE_SUBJECT": "Удалить предмет",
-		"NEW_SUBJECT": "Новый предмет",
-		"ADD_SUBJECT": "Добавить предмет",
-		"EDIT_DESCRIPTION": "Редактировать описание",
-		"DELETE_DESCRIPTION": "Удалить описание",
+		"EDIT_SUBJECT": "Редактировать при условии",
+		"DELETE_SUBJECT": "Удалить при условии",
+		"NEW_SUBJECT": "Новая тема",
+		"ADD_SUBJECT": "Добавить тему",
+		"EDIT_DESCRIPTION": "Изменить описание",
+		"DELETE_DESCRIPTION": "Удалить Описание",
 		"NEW_DESCRIPTION": "Новое описание",
 		"ADD_DESCRIPTION": "Добавить описание",
-		"EDIT_FIELD": "Редактировать поле",
+		"EDIT_FIELD": "Поля редактирования",
 		"DELETE_FIELD": "Удалить поле",
 		"NEW_FIELD": "Новое поле",
 		"ADD_FIELD": "Добавить поле",
 		"ADD": "Добавить",
-		"VOICE": "Голос",
-		"MAIL": "Электронная почта",
+		"VOICE": "Голосовой связи",
+		"MAIL": "По электронной почте",
 		"CHAT": "Чат",
 		"SMS": "SMS",
-		"OPENCHANNEL": "Открытый канал",
-		"INBOUND_IN_QUEUE": "Входящ. в очереди",
+		"OPENCHANNEL": "Открыть канал",
+		"INBOUND_IN_QUEUE": "Входящие вызовы в очереди",
 		"OUTBOUND_CALL": "Исходящий вызов",
 		"VALUE": "Значение",
 		"FIELD": "Поле",
-		"KEY": "Ключ",
+		"KEY": "Ключ зажигания",
 		"CHANNEL": "Канал",
 		"DELETE": "Удалить",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"TEST_ZENDESKACCOUNT": "Тестирование учетной записи Zendesk",
-		"TEST_FRESHDESKACCOUNT": "Тестирование учетной записи Freshdesk",
-		"TEST_SUGARCRMACCOUNT": "Тестирование учетной записи SugerCRM",
-		"TEST_SALESFORCEACCOUNT": "Тестирование учетной записи Salesforce",
-		"INTEGRATION_TAB": "Вкладка интеграции",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"TEST_ZENDESKACCOUNT": "Проверка учетной записи Zendesk",
+		"TEST_FRESHDESKACCOUNT": "Проверка учетной записи Freshdesk",
+		"TEST_SUGARCRMACCOUNT": "Проверка учетной записи SugerCRM",
+		"TEST_SALESFORCEACCOUNT": "Проверка учетной записи Salesforce",
+		"INTEGRATION_TAB": "На вкладке \"Интеграция",
 		"NEW_TAB": "Новая вкладка",
-		"DESKACCOUNTS": "Учетные записи Desk",
-		"EDIT_DESKACCOUNT": "Редактировать учетную запись Desk",
-		"TEST_DESKACCOUNT": "Тестирование учетной записи Desk",
-		"DELETE_DESKACCOUNT": "Удалить учетную запись Desk",
-		"CONSUMERKEY": "Ключ потребителя",
-		"CONSUMERSECRET": "Секрет потребителя",
-		"TOKENSECRET": "Секретный токен",
-		"ADD_DESKACCOUNT": "Добавить учетную запись Desk",
-		"NEW_DESKACCOUNT": "Новая учетная запись Desk",
-		"ADD_DESKCONFIGURATION": "Добавить конфигурацию Desk",
-		"NEW_DESKCONFIGURATION": "Новая конфигурация Desk",
-		"DELETE_DESKCONFIGURATION": "Удалить конфигурацию Desk",
-		"ZOHOACCOUNTS": "Учетные записи Zoho",
-		"EDIT_ZOHOACCOUNT": "Редактировать учетную запись Zoho",
-		"TEST_ZOHOACCOUNT": "Тестирование учетной записи Zoho",
-		"DELETE_ZOHOACCOUNT": "Удалить учетную запись Zoho",
-		"ADD_ZOHOACCOUNT": "Добавить учетную запись Zoho",
-		"NEW_ZOHOACCOUNT": "Новая учетная запись Zoho",
-		"ADD_ZOHOCONFIGURATION": "Добавить конфигурацию Zoho",
-		"NEW_ZOHOCONFIGURATION": "Новая конфигурация Zoho",
-		"AUTHTOKEN": "Токен авторизации",
-		"HOST": "Хост",
-		"DELETE_ZOHOCONFIGURATION": "Удалить конфигурацию Zoho",
+		"DESKACCOUNTS": "Стойка регистрации счетов",
+		"EDIT_DESKACCOUNT": "Редактировать учетную запись стол",
+		"TEST_DESKACCOUNT": "Проверка регистрации учетной записи",
+		"DELETE_DESKACCOUNT": "Удаление регистрации учетной записи",
+		"CONSUMERKEY": "Ключ потребителей",
+		"CONSUMERSECRET": "Секрет потребителей",
+		"TOKENSECRET": "Жетон тайного",
+		"ADD_DESKACCOUNT": "Добавить письменный стол счета",
+		"NEW_DESKACCOUNT": "Новая стойка регистрации учетной записи",
+		"ADD_DESKCONFIGURATION": "Добавить письменный стол конфигурации",
+		"NEW_DESKCONFIGURATION": "Новая конфигурация",
+		"DELETE_DESKCONFIGURATION": "Удаление регистрации конфигурации",
+		"ZOHOACCOUNTS": "Такое Zoho счетов",
+		"EDIT_ZOHOACCOUNT": "Изменить такое Zoho счета",
+		"TEST_ZOHOACCOUNT": "Такое Zoho проверки учетной записи",
+		"DELETE_ZOHOACCOUNT": "Удалить такое Zoho счета",
+		"ADD_ZOHOACCOUNT": "Добавить такое Zoho счета",
+		"NEW_ZOHOACCOUNT": "Новые такое Zoho счета",
+		"ADD_ZOHOCONFIGURATION": "Добавить такое Zoho конфигурации",
+		"NEW_ZOHOCONFIGURATION": "Новые такое Zoho конфигурации",
+		"AUTHTOKEN": "Маркер авторизации",
+		"HOST": "Принимающей",
+		"DELETE_ZOHOCONFIGURATION": "Удалить такое Zoho конфигурации",
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"ADVANCED": "Продвинутый",
+		"OF": "В",
+		"ADVANCED": "Расширенный",
 		"MODULE_SEARCH": "Модуль Поиск",
-		"MODULE_CREATE": "Модуль Создать",
-		"ACCESS_KEY": "Ключ доступа vTiger",
+		"MODULE_CREATE": "Модуль создания",
+		"ACCESS_KEY": "ключ доступа vTiger",
 		"ADD_VTIGERACCOUNT": "Добавить новую учетную запись vTiger",
 		"ADD_VTIGERCONFIGURATION": "Добавить конфигурацию vTiger",
 		"DELETE_VTIGERACCOUNT": "Удалить учетную запись vTiger",
 		"DELETE_VTIGERCONFIGURATION": "Удалить конфигурацию vTiger",
-		"EDIT_VTIGERACCOUNT": "Редактировать учетную запись vTiger",
+		"EDIT_VTIGERACCOUNT": "Изменить учетную запись vTiger",
 		"MODULE_NAME": "Имя модуля vTiger",
 		"NEW_VTIGERACCOUNT": "Новая учетная запись vTiger",
 		"NEW_VTIGERCONFIGURATION": "Создать конфигурацию vTiger",
-		"TEST_VTIGERACCOUNT": "Тестирование учетной записи vTiger",
-		"VTIGERACCOUNTS": "Учетные записи vTiger",
+		"TEST_VTIGERACCOUNT": "Проверить учетную запись vTiger",
+		"VTIGERACCOUNTS": "Аккаунты vTiger",
 		"VTIGER_USER_NAME": "Имя пользователя vTiger",
 		"ADD_DYNAMICS365ACCOUNT": "Добавить новую учетную запись Dynamics365",
 		"ADD_DYNAMICS365CONFIGURATION": "Добавить конфигурацию Dynamics365",
-		"CASE": "Кейс",
+		"CASE": "случай",
 		"DELETE_DYNAMICS365ACCOUNT": "Удалить учетную запись Dynamics365",
 		"DELETE_DYNAMICS365CONFIGURATION": "Удалить конфигурацию Dynamics365",
 		"DYNAMICS365ACCOUNTS": "Учетные записи Dynamics365",
-		"EDIT_DYNAMICS365ACCOUNT": "Редактировать учетную запись Dynamics365",
+		"EDIT_DYNAMICS365ACCOUNT": "Изменить учетную запись Dynamics365",
 		"NEW_DYNAMICS365ACCOUNT": "Новая учетная запись Dynamics365",
 		"NEW_DYNAMICS365CONFIGURATION": "Создать конфигурацию Dynamics365",
 		"PHONECALL": "Телефонный звонок",
-		"TENANTID": "Идентификатор тенанта",
+		"TENANTID": "Арендатор Id",
 		"TEST_DYNAMICS365ACCOUNT": "Тестирование учетной записи Dynamics365",
-		"TICKETTYPE": "Тип тикета",
+		"TICKETTYPE": "Тип билета",
 		"ADD_SERVICENOWACCOUNT": "Добавить новую учетную запись ServiceNow",
 		"ADD_SERVICENOWCONFIGURATION": "Добавить конфигурацию ServiceNow",
 		"DELETE_SERVICENOWACCOUNT": "Удалить учетную запись ServiceNow",
 		"DELETE_SERVICENOWCONFIGURATION": "Удалить конфигурацию ServiceNow",
-		"EDIT_SERVICENOWACCOUNT": "Редактировать учетную запись ServiceNow",
-		"EMAIL": "Электронная почта",
+		"EDIT_SERVICENOWACCOUNT": "Изменить учетную запись ServiceNow",
+		"EMAIL": "Эл. адрес",
 		"NEW_SERVICENOWACCOUNT": "Новая учетная запись ServiceNow",
 		"NEW_SERVICENOWCONFIGURATION": "Создать конфигурацию ServiceNow",
-		"SERVICENOWACCOUNTS": "Учетные записи ServiceNow",
-		"TEST_SERVICENOWACCOUNT": "Тестирование учетной записи ServiceNow",
-		"TASK": "Задача",
+		"SERVICENOWACCOUNTS": "Счета ServiceNow",
+		"TEST_SERVICENOWACCOUNT": "Тестовый аккаунт ServiceNow",
+		"TASK": "задача",
 		"CODE": "Код консоли разработчика",
 		"REFRESHTOKEN": "Обновить токен (сгенерировано)",
-		"ZONE": "Зона",
-		"CONTACTS": "Контакт",
-		"LEADS": "Лид",
+		"ZONE": "зона",
+		"CONTACTS": "контакт",
+		"LEADS": "привести",
 		"MODULECREATE": "Модуль Создать",
-		"ADD_FRESHSALESACCOUNT": "Добавить учетную запись Freshsales",
+		"ADD_FRESHSALESACCOUNT": "Добавить аккаунт Freshsales",
 		"ADD_FRESHSALESCONFIGURATION": "Добавить конфигурацию Freshsales",
 		"DELETE_FRESHSALESACCOUNT": "Удалить учетную запись Freshsales",
 		"DELETE_FRESHSALESCONFIGURATION": "Удалить конфигурацию Freshsales",
-		"EDIT_FRESHSALESACCOUNT": "Редактировать учетную запись Freshsales",
-		"EDIT_FRESHSALESCONFIGURATION": "Редактировать конфигурацию Freshsales",
-		"FRESHSALESACCOUNTS": "Учетные записи Freshsales",
+		"EDIT_FRESHSALESACCOUNT": "Изменить аккаунт Freshsales",
+		"EDIT_FRESHSALESCONFIGURATION": "Изменить конфигурацию Freshsales",
+		"FRESHSALESACCOUNTS": "Freshsales Accounts",
 		"NEW_FRESHSALESACCOUNT": "Новая учетная запись Freshsales",
 		"NEW_FRESHSALESCONFIGURATION": "Новая конфигурация Freshsales",
-		"NO_FRESHSALESCONFIGURATION_AVAILABLE": "Доступные конфигурации Freshsales отсутствуют",
-		"TEST_FRESHSALESACCOUNT": "Тестирование учетной записи Freshsales"
+		"NO_FRESHSALESCONFIGURATION_AVAILABLE": "Конфигурации Freshsales недоступны",
+		"TEST_FRESHSALESACCOUNT": "Тест аккаунта Freshsales"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/jscripty/i18n/lt.json b/public/app/main/apps/jscripty/i18n/lt.json
index 66b1772..b225304 100644
--- a/public/app/main/apps/jscripty/i18n/lt.json
+++ b/public/app/main/apps/jscripty/i18n/lt.json
@@ -1,228 +1,228 @@
 {
 	"JSCRIPTY": {
-		"CLONE_PROJECT": "Clone Project",
-		"NAME": "Name",
-		"SEARCH_FOR_ANYONE": "Search",
-		"BACK": "Back",
-		"SELECTED": "Selected",
-		"SELECT_ALL": "Select All",
-		"SELECT_NONE": "Select None",
-		"DESCRIPTION": "Description",
+		"CLONE_PROJECT": "Klono projektas",
+		"NAME": "Pavadinimas",
+		"SEARCH_FOR_ANYONE": "Paieška",
+		"BACK": "Atgal",
+		"SELECTED": "PAsirinkta",
+		"SELECT_ALL": "Pasirinkti visus",
+		"SELECT_NONE": "Nieko nepasirinkta",
+		"DESCRIPTION": "Aprašymas",
 		"ERRORS": {
-			"NAME_REQUIRED": "Mandatory field",
-			"PROJECT_REQUIRED": "Mandatory field",
-			"FIELD_REQUIRED": "Mandatory field",
-			"NAME_MUST_VALID_PATTERN": "Wrong format"
+			"NAME_REQUIRED": "Privalomas laukas",
+			"PROJECT_REQUIRED": "Privalomas laukas",
+			"FIELD_REQUIRED": "Privalomas laukas",
+			"NAME_MUST_VALID_PATTERN": "Blogas formatas"
 		},
-		"SAVE": "Save",
-		"PROJECTS": "Projects",
-		"ADD_PROJECT": "Add Project",
-		"EDIT_PROJECT": "Edit Project",
-		"DELETE_PROJECT": "Delete Project",
+		"SAVE": "Saugoti",
+		"PROJECTS": "Projektai",
+		"ADD_PROJECT": "Pridėti projektą",
+		"EDIT_PROJECT": "Redaguoti projektą",
+		"DELETE_PROJECT": "Ištrinti projektą",
 		"JSCRIPTY": "Jscripty",
 		"ID": "Id",
-		"PROJECT": "Project",
-		"CREATED_AT": "Created At",
-		"NEW_PROJECT": "New Project",
-		"EDIT": "Edit",
-		"SETTINGS": "Settings",
-		"GENERAL": "General",
-		"BUILDER": "Builder",
-		"PREVIEW": "Preview",
-		"OPEN_CONTACT": "Open Contact",
-		"SENDUNPAUSEONSUBMIT": "Unpause agent on Submit",
+		"PROJECT": "Projektas",
+		"CREATED_AT": "Sukurta",
+		"NEW_PROJECT": "Naujas projektas",
+		"EDIT": "Redaguoti",
+		"SETTINGS": "Nustatymai",
+		"GENERAL": "Bendras",
+		"BUILDER": "Statytojas",
+		"PREVIEW": "Peržiūra",
+		"OPEN_CONTACT": "Atidaryti kontaktą",
+		"SENDUNPAUSEONSUBMIT": "Nepristabdyti agento pateikiant",
 		"HELP": {
-			"NAME": "Only numbers, letters and specific characters (._) are supported",
-			"ENABLEUNCOMPLETESAVE": "Allow to save the agent session even if the survey is not complete",
-			"SENDUNPAUSEONSUBMIT": "At the end of the survey, automatically stop the agent's pause"
+			"NAME": "Palaikomi tik skaičiai, raidės ir konkretūs simboliai (._)",
+			"ENABLEUNCOMPLETESAVE": "Leisti išsaugoti agento sesiją, net jei apklausa nėra baigta",
+			"SENDUNPAUSEONSUBMIT": "Apklausos pabaigoje automatiškai sustabdyti agento pauzę"
 		},
-		"PAGE": "Page",
-		"ROWSPERPAGE": "Rows per page",
-		"OF": "of",
-		"JSCRIPTYSESSIONS": "Project Sessions",
-		"SESSIONS": "Sessions",
-		"STARTTIME": "Start Time",
-		"ENDTIME": "End Time",
-		"MEMBERNAME": "Member Name",
-		"CALLERIDNUM": "Caller Number",
-		"NO_SESSION_AVAILABLE": "No Sessions available",
-		"SESSION_RESULTS": "Session Results",
-		"SHOW_QUESTIONS_SESSION": "Show Session Results",
-		"ANSWERS": "Answers",
-		"NO_RESULTS_AVAILABLE": "No results available",
-		"TOTAL": "Total",
-		"ANSWER": "Answer",
-		"EXPORT_TO_CSV": "Export to CSV",
-		"NO_ANSWERS_AVAILABLE": "No answers available",
-		"DELETE_SESSION": "Delete Session",
-		"RESET_SESSION": "Reset Session",
-		"YES": "Yes",
-		"NO": "No",
-		"DO_YOU_WANT_TO_RESET_SESSION": "Do you want to reset the session?",
-		"ALL_SURVEY_DATA_WILL_BE_LOST": "All survey answers will be lost!",
-		"ENABLEUNCOMPLETESAVE": "Enable incomplete save",
-		"SUBMIT": "Submit",
-		"PROJECT_NOT_AVAILABLE": "Project is not available. Please contact the administrator",
-		"COMPLETE": "Complete",
-		"SESSIONS_PROJECT": "Go to Sessions"
+		"PAGE": "Puslapis",
+		"ROWSPERPAGE": "Eilutės puslapyje",
+		"OF": "iš",
+		"JSCRIPTYSESSIONS": "Projekto sesijos",
+		"SESSIONS": "Sesijos",
+		"STARTTIME": "Pradžios laikas",
+		"ENDTIME": "Pabaigos laikas",
+		"MEMBERNAME": "Nario vardas",
+		"CALLERIDNUM": "Skambintojo numeris",
+		"NO_SESSION_AVAILABLE": "Sesijų nėra",
+		"SESSION_RESULTS": "Sesijos rezultatai",
+		"SHOW_QUESTIONS_SESSION": "Rodyti sesijos rezultatus",
+		"ANSWERS": "Atsakymai",
+		"NO_RESULTS_AVAILABLE": "Rezultatų nėra",
+		"TOTAL": "Iš viso",
+		"ANSWER": "Atsakymas",
+		"EXPORT_TO_CSV": "Eksportuoti į CSV",
+		"NO_ANSWERS_AVAILABLE": "Atsakymų nėra",
+		"DELETE_SESSION": "Ištrinti sesiją",
+		"RESET_SESSION": "Atstatyti sesiją",
+		"YES": "Taip",
+		"NO": "Ne",
+		"DO_YOU_WANT_TO_RESET_SESSION": "Ar norite atstatyti sesiją?",
+		"ALL_SURVEY_DATA_WILL_BE_LOST": "Visi apklausos atsakymai bus prarasti!",
+		"ENABLEUNCOMPLETESAVE": "Įjungti neužbaigtą išsaugojimą",
+		"SUBMIT": "Pateikti",
+		"PROJECT_NOT_AVAILABLE": "Projektas negalimas. Kreipkitės į administratorių",
+		"COMPLETE": "Užbaigta",
+		"SESSIONS_PROJECT": "Eiti į sesijas"
 	},
 	"mwForm": {
 		"form": {
-			"name": "Title",
-			"name.placeholder": "Form title",
-			"description": "Description"
+			"name": "Pavadinimas",
+			"name.placeholder": "Formos pavadinimas",
+			"description": "Aprašymas"
 		},
 		"buttons": {
-			"addPage": "Add page",
-			"moveDown": "Move down",
-			"moveUp": "Move up",
-			"removePage": "Remove page",
-			"remove": "Remove",
-			"addElement": "Add element",
-			"questionReady": "Ready",
-			"next": "Next",
-			"back": "Back",
-			"submit": "Submit",
-			"begin": "Begin",
-			"fold": "Fold",
-			"unfold": "Unfold",
-			"edit": "Edit",
-			"clone": "Clone",
-			"view": "View"
+			"addPage": "Pridėti puslapį",
+			"moveDown": "Judėti žemyn",
+			"moveUp": "Judėti aukštyn",
+			"removePage": "Pašalinti puslapį",
+			"remove": "Pašalinti",
+			"addElement": "Pridėti elementą",
+			"questionReady": "Parengta",
+			"next": "Kitas",
+			"back": "Atgal",
+			"submit": "Pateikti",
+			"begin": "Pradėti",
+			"fold": "Suskleisti",
+			"unfold": "Atskleisti",
+			"edit": "Redaguoti",
+			"clone": "Klonas",
+			"view": "Peržiūra"
 		},
 		"page": {
 			"tab": {
-				"heading": "Page {{page}} of {{allPages}}"
+				"heading": "Puslapis {{puslapis}} is {{visi puslapiai}}"
 			},
 			"elements": {
-				"empty": "Empty page"
+				"empty": "Tuščias puslapis"
 			},
-			"pageWithNameCheckbox": "named",
-			"name": "Page name"
+			"pageWithNameCheckbox": "pavadintas",
+			"name": "Puslapio pavadinimas"
 		},
 		"pageFlow": {
-			"afterPage": "After page {{page}}:",
-			"afterQuestionAnswer": "Go to page based on answer",
-			"goToPage": "Go to page {{page.number}}",
-			"goToNextPage": "Continue to next page",
-			"submitForm": "Submit form"
+			"afterPage": "Po puslapiu {{puslapis}}:",
+			"afterQuestionAnswer": "Eiti į puslapį pagal atsakymą",
+			"goToPage": "Eiti į puslapį {{puslapis.numeris}}",
+			"goToNextPage": "Pereiti prie kito puslapio",
+			"submitForm": "Pateikti formą"
 		},
 		"elements": {
-			"question": "Question",
-			"image": "Image",
-			"paragraph": "Paragraph"
+			"question": "Klausimas",
+			"image": "Vaizdas",
+			"paragraph": "Pastraipa"
 		},
 		"question": {
 			"types": {
 				"text": {
-					"name": "Short text"
+					"name": "Trumpas tekstas"
 				},
 				"textarea": {
-					"name": "Long text"
+					"name": "Ilgas tekstas"
 				},
 				"radio": {
-					"name": "Radio"
+					"name": "Radijas"
 				},
 				"select": {
-					"name": "Select"
+					"name": "Pasirinkti"
 				},
 				"checkbox": {
-					"name": "Checkboxes"
+					"name": "Žymės langeliai"
 				},
 				"grid": {
-					"name": "Grid"
+					"name": "Tinklelis"
 				},
 				"priority": {
-					"name": "Priority"
+					"name": "Prioritetas"
 				},
 				"division": {
-					"name": "Division"
+					"name": "Padalijimas"
 				},
 				"number": {
-					"name": "Number"
+					"name": "Numeris"
 				},
 				"date": {
-					"name": "Date"
+					"name": "Data"
 				},
 				"datetime": {
-					"name": "Datetime"
+					"name": "Datos laikas"
 				},
 				"time": {
-					"name": "Time"
+					"name": "Laikas"
 				},
 				"email": {
-					"name": "Email"
+					"name": "El. paštas"
 				},
 				"range": {
-					"name": "Range"
+					"name": "Intervalas"
 				},
 				"url": {
 					"name": "URL"
 				}
 			},
-			"text": "Question text",
-			"type": "Question type",
-			"required": "Required",
+			"text": "Klausimo tekstas",
+			"type": "Klausimo tipas",
+			"required": "Privaloma",
 			"preview": {
-				"text": "Short answer text",
-				"textarea": "Long answer text",
-				"otherAnswer": "Other"
+				"text": "Trumpas atsakymo tekstas",
+				"textarea": "Ilgas atsakymo tekstas",
+				"otherAnswer": "Kiti"
 			},
 			"division": {
-				"quantity": "Quantity",
-				"unit": "Unit label",
-				"assignedSumLabel": "Assigned",
-				"fromRequiredLabel": "from required"
+				"quantity": "Kiekis",
+				"unit": "Vieneto etiketė",
+				"assignedSumLabel": "Paskirtas",
+				"fromRequiredLabel": "nuo privalomo"
 			},
 			"priority": {
-				"sorted": "Sorted",
-				"available": "Available",
-				"clickToAddItem": "Click to add item"
+				"sorted": "Rūšiuoti",
+				"available": "Prieinamas",
+				"clickToAddItem": "Spustelėkite, jei norite pridėti elementą"
 			},
 			"grid": {
-				"cellInputType": "Cell input type",
+				"cellInputType": "Langelio įvesties tipas",
 				"cellInputTypes": {
-					"radio": "Radio",
-					"checkbox": "Checkbox",
-					"text": "Text",
-					"number": "Number",
-					"date": "Date",
-					"time": "Time"
+					"radio": "Radijas",
+					"checkbox": "Žymės langeliai",
+					"text": "Tekstas",
+					"number": "Numeris",
+					"date": "Data",
+					"time": "Laikas"
 				},
-				"rowLabel": "Row {{row}}",
-				"clickToAddRow": "Click to add row",
-				"columnLabel": "Column {{col}}",
-				"clickToAddColumn": "Click to add column"
+				"rowLabel": "Eilutė {{eilutė}}",
+				"clickToAddRow": "Spustelėkite, jei norite pridėti eilutę",
+				"columnLabel": "Stulpelis {{stulpelis}}",
+				"clickToAddColumn": "Spustelėkite, jei norite pridėti stulpelį"
 			},
 			"range": {
-				"from": "Range from",
-				"to": "to"
+				"from": "Intervalas nuo",
+				"to": "iki"
 			},
 			"number": {
 				"min": "Min",
-				"max": "Max"
+				"max": "Maks"
 			},
-			"orLabel": "or ",
-			"otherLabel": "Other: ",
-			"userAnswer": "User answer",
+			"orLabel": "arba",
+			"otherLabel": "Kiti: ",
+			"userAnswer": "Vartotojo atsakymas",
 			"buttons": {
-				"addOption": "Click to add option",
-				"addOther": "Add 'Other'"
+				"addOption": "Spustelėkite, jei norite pridėti parinktį",
+				"addOther": "Pridėti 'Kiti'"
 			}
 		},
 		"image": {
-			"selectImageButton": "Select image",
-			"caption": "Image caption"
+			"selectImageButton": "Pasirinkti vaizdą",
+			"caption": "Vaizdo antraštė"
 		},
 		"paragraph": {
-			"placeholder": "Enter paragraph text"
+			"placeholder": "Įveskite pastraipos tekstą"
 		},
 		"confirmationPage": {
-			"title": "Confirmation page",
-			"customMessage": "Custom confirmation message",
-			"defaultMessage": "Your response has been saved",
-			"errorMessage": "Error! Your response has not been saved",
-			"pendingMessage": "Your response is being saved"
+			"title": "Patvirtinimo puslapis",
+			"customMessage": "Pasirinktinis patvirtinimo pranešimas",
+			"defaultMessage": "Jūsų atsakymas išsaugotas",
+			"errorMessage": "Klaida! Jūsų atsakymas neišsaugotas",
+			"pendingMessage": "Jūsų atsakymas išsaugotas"
 		}
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/jscripty/i18n/ru.json b/public/app/main/apps/jscripty/i18n/ru.json
index 1ead30b..2693417 100644
--- a/public/app/main/apps/jscripty/i18n/ru.json
+++ b/public/app/main/apps/jscripty/i18n/ru.json
@@ -1,228 +1,228 @@
 {
 	"JSCRIPTY": {
 		"NAME": "Имя",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"BACK": "Назад",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
+		"SELECT_NONE": "Выберите пункт None",
 		"DESCRIPTION": "Описание",
 		"ERRORS": {
-			"NAME_REQUIRED": "Обязательное поле",
-			"PROJECT_REQUIRED": "Обязательное поле",
-			"FIELD_REQUIRED": "Обязательное поле",
-			"NAME_MUST_VALID_PATTERN": "Неверный формат"
+			"NAME_REQUIRED": "Это имя требуется",
+			"PROJECT_REQUIRED": "В рамках этого проекта не требуется",
+			"FIELD_REQUIRED": "Поле является обязательным",
+			"NAME_MUST_VALID_PATTERN": "Имя должно быть записано в действительный формат"
 		},
 		"SAVE": "Сохранить",
 		"PROJECTS": "Проекты",
 		"ADD_PROJECT": "Добавить проект",
 		"EDIT_PROJECT": "Редактировать проект",
-		"DELETE_PROJECT": "Удалить проект",
+		"DELETE_PROJECT": "Удалить",
 		"JSCRIPTY": "Jscripty",
-		"ID": "Идентификатор",
+		"ID": "Id",
 		"PROJECT": "Проект",
-		"CREATED_AT": "Создано на",
+		"CREATED_AT": "Созданные в",
 		"NEW_PROJECT": "Новый проект",
-		"EDIT": "Редактировать",
+		"EDIT": "Изменить",
 		"SETTINGS": "Настройки",
-		"GENERAL": "Общие",
-		"BUILDER": "Строитель",
+		"GENERAL": "Генеральной",
+		"BUILDER": "Конструктор условий",
 		"PREVIEW": "Предварительный просмотр",
-		"OPEN_CONTACT": "Открытие контакта",
+		"OPEN_CONTACT": "Контакт разомкнут",
 		"HELP": {
-			"NAME": "Поддерживаются только цифры, буквы и специальные символы (._)",
-			"ENABLEUNCOMPLETESAVE": "Разрешить сохранение сессии агента, даже если опрос не завершен",
-			"SENDUNPAUSEONSUBMIT": "По окончании опроса автоматически остановить паузу агента"
+			"NAME": "Только цифры, буквы и специальные символы (_) поддерживаются",
+			"ENABLEUNCOMPLETESAVE": "Чтобы сохранить сеанс оператора, даже если обследование не завершена",
+			"SENDUNPAUSEONSUBMIT": "По окончании опроса автоматически останавливается пауза агента"
 		},
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"JSCRIPTYSESSIONS": "Сессии проекта",
-		"SESSIONS": "Сессии",
+		"OF": "В",
+		"JSCRIPTYSESSIONS": "Проект сессий",
+		"SESSIONS": "Сессиях",
 		"STARTTIME": "Время начала",
 		"ENDTIME": "Время окончания",
-		"MEMBERNAME": "Имя участника",
+		"MEMBERNAME": "Имя члена",
 		"CALLERIDNUM": "Номер вызывающего абонента",
-		"NO_SESSION_AVAILABLE": "Доступные сессии отсутствуют",
-		"SESSION_RESULTS": "Результаты сессии",
-		"SHOW_QUESTIONS_SESSION": "Показать результаты сессии",
+		"NO_SESSION_AVAILABLE": "Нет доступных сессий",
+		"SESSION_RESULTS": "Результатов сеанса",
+		"SHOW_QUESTIONS_SESSION": "Показать результатов сеанса",
 		"ANSWERS": "Ответы",
-		"NO_RESULTS_AVAILABLE": "Результаты отсутствуют",
-		"TOTAL": "Всего",
-		"ANSWER": "Ответ",
-		"EXPORT_TO_CSV": "Экспорт в CSV",
-		"NO_ANSWERS_AVAILABLE": "Ответы отсутствуют",
-		"DELETE_SESSION": "Удалить сессию",
-		"RESET_SESSION": "Сбросить сессию",
+		"NO_RESULTS_AVAILABLE": "Нет результатов",
+		"TOTAL": "Итого",
+		"ANSWER": "Ответить",
+		"EXPORT_TO_CSV": "Экспорт в CSV",
+		"NO_ANSWERS_AVAILABLE": "Нет ответов доступных",
+		"DELETE_SESSION": "Delete Session",
+		"RESET_SESSION": "Сбросить сеанс",
 		"YES": "Да",
 		"NO": "Нет",
-		"DO_YOU_WANT_TO_RESET_SESSION": "Вы хотите сбросить сессию?",
-		"ALL_SURVEY_DATA_WILL_BE_LOST": "Все ответы на вопросы будут потеряны!",
-		"ENABLEUNCOMPLETESAVE": "Включить возможность неполного сохранения",
+		"DO_YOU_WANT_TO_RESET_SESSION": "Вы хотите восстановить?",
+		"ALL_SURVEY_DATA_WILL_BE_LOST": "Все опрос ответы будут потеряны!",
+		"ENABLEUNCOMPLETESAVE": "Разрешить неполные сохранить",
 		"SUBMIT": "Отправить",
-		"PROJECT_NOT_AVAILABLE": "Проект недоступен. Пожалуйста, свяжитесь с администратором",
-		"COMPLETE": "Полный",
-		"CLONE_PROJECT": "Клонирование проекта",
-		"SESSIONS_PROJECT": "Перейти к сессиям",
+		"PROJECT_NOT_AVAILABLE": "Проект не доступны. Обратитесь к системному администратору",
+		"COMPLETE": "Завершить",
+		"CLONE_PROJECT": "Проект клонирования",
+		"SESSIONS_PROJECT": "Перейти к сеансам",
 		"SENDUNPAUSEONSUBMIT": "Отменить приостановку агента при отправке"
 	},
 	"mwForm": {
 		"form": {
-			"name": "Заголовок",
-			"name.placeholder": "Заголовок формы",
-			"description": "Описание"
+			"name": "Title",
+			"name.placeholder": "Form title",
+			"description": "Description"
 		},
 		"buttons": {
-			"addPage": "Добавить страницу",
-			"moveDown": "Двигаться вниз",
-			"moveUp": "Двигаться вверх",
-			"removePage": "Удалить страницу",
-			"remove": "Удалить",
-			"addElement": "Добавить элемент",
-			"questionReady": "Готов",
-			"next": "Следующий",
-			"back": "Назад",
-			"submit": "Отправить",
-			"begin": "Начать",
-			"fold": "Сворачивание",
-			"unfold": "Разворачивание",
-			"edit": "Редактировать",
-			"clone": "Клонирование",
-			"view": "Просмотр"
+			"addPage": "Add page",
+			"moveDown": "Move down",
+			"moveUp": "Move up",
+			"removePage": "Remove page",
+			"remove": "Remove",
+			"addElement": "Add element",
+			"questionReady": "Ready",
+			"next": "Next",
+			"back": "Back",
+			"submit": "Submit",
+			"begin": "Begin",
+			"fold": "Fold",
+			"unfold": "Unfold",
+			"edit": "Edit",
+			"clone": "Clone",
+			"view": "View"
 		},
 		"page": {
 			"tab": {
-				"heading": "Страница {{page}} из {{allPages}}"
+				"heading": "Page {{page}} of {{allPages}}"
 			},
 			"elements": {
-				"empty": "Пустая страница"
+				"empty": "Empty page"
 			},
-			"pageWithNameCheckbox": "названный",
-			"name": "Название страницы"
+			"pageWithNameCheckbox": "named",
+			"name": "Page name"
 		},
 		"pageFlow": {
-			"afterPage": "После страницы {{page}}:",
-			"afterQuestionAnswer": "Перейти к странице в зависимости от ответа",
-			"goToPage": "Перейти к странице {{page.number}}",
-			"goToNextPage": "Перейти к следующей странице",
-			"submitForm": "Отправка формы"
+			"afterPage": "After page {{page}}:",
+			"afterQuestionAnswer": "Go to page based on answer",
+			"goToPage": "Go to page {{page.number}}",
+			"goToNextPage": "Continue to next page",
+			"submitForm": "Submit form"
 		},
 		"elements": {
-			"question": "Вопрос",
-			"image": "Изображение",
-			"paragraph": "Абзац"
+			"question": "Question",
+			"image": "Image",
+			"paragraph": "Paragraph"
 		},
 		"question": {
 			"types": {
 				"text": {
-					"name": "Краткий текст"
+					"name": "Short text"
 				},
 				"textarea": {
-					"name": "Длинный текст"
+					"name": "Long text"
 				},
 				"radio": {
-					"name": "Радио"
+					"name": "Radio"
 				},
 				"select": {
-					"name": "Выбрать"
+					"name": "Select"
 				},
 				"checkbox": {
-					"name": "Флажки"
+					"name": "Checkboxes"
 				},
 				"grid": {
-					"name": "Сетка"
+					"name": "Grid"
 				},
 				"priority": {
-					"name": "Приоритет"
+					"name": "Priority"
 				},
 				"division": {
-					"name": "Разделение"
+					"name": "Division"
 				},
 				"number": {
-					"name": "Номер"
+					"name": "Number"
 				},
 				"date": {
-					"name": "Дата"
+					"name": "Date"
 				},
 				"datetime": {
 					"name": "Datetime"
 				},
 				"time": {
-					"name": "Время"
+					"name": "Time"
 				},
 				"email": {
-					"name": "Электронная почта"
+					"name": "Email"
 				},
 				"range": {
-					"name": "Диапазон"
+					"name": "Range"
 				},
 				"url": {
 					"name": "URL"
 				}
 			},
-			"text": "Текст вопроса",
-			"type": "Тип вопроса",
-			"required": "Необходимые",
+			"text": "Question text",
+			"type": "Question type",
+			"required": "Required",
 			"preview": {
-				"text": "Текст краткого ответа",
-				"textarea": "Текст длинного ответа",
-				"otherAnswer": "Другое"
+				"text": "Short answer text",
+				"textarea": "Long answer text",
+				"otherAnswer": "Other"
 			},
 			"division": {
-				"quantity": "Количество",
-				"unit": "Метка блока",
-				"assignedSumLabel": "Назначенный",
-				"fromRequiredLabel": "из обязательных"
+				"quantity": "Quantity",
+				"unit": "Unit label",
+				"assignedSumLabel": "Assigned",
+				"fromRequiredLabel": "from required"
 			},
 			"priority": {
-				"sorted": "Сортировка",
-				"available": "Доступный",
-				"clickToAddItem": "Нажмите, чтобы добавить элемент"
+				"sorted": "Sorted",
+				"available": "Available",
+				"clickToAddItem": "Click to add item"
 			},
 			"grid": {
-				"cellInputType": "Тип ввода: ячейка",
+				"cellInputType": "Cell input type",
 				"cellInputTypes": {
-					"radio": "Радио",
-					"checkbox": "Флажок",
-					"text": "Текст",
-					"number": "Номер",
-					"date": "Дата",
-					"time": "Время"
+					"radio": "Radio",
+					"checkbox": "Checkbox",
+					"text": "Text",
+					"number": "Number",
+					"date": "Date",
+					"time": "Time"
 				},
-				"rowLabel": "Строка {{row}}",
-				"clickToAddRow": "Нажмите, чтобы добавить строку",
-				"columnLabel": "Столбец {{col}}",
-				"clickToAddColumn": "Нажмите, чтобы добавить столбец"
+				"rowLabel": "Row {{row}}",
+				"clickToAddRow": "Click to add row",
+				"columnLabel": "Column {{col}}",
+				"clickToAddColumn": "Click to add column"
 			},
 			"range": {
-				"from": "Диапазон с",
-				"to": "по"
+				"from": "Range from",
+				"to": "to"
 			},
 			"number": {
-				"min": "Мин.",
-				"max": "Макс."
+				"min": "Min",
+				"max": "Max"
 			},
-			"orLabel": "или ",
-			"otherLabel": "Другое: ",
-			"userAnswer": "Ответ пользователя",
+			"orLabel": "or ",
+			"otherLabel": "Other: ",
+			"userAnswer": "User answer",
 			"buttons": {
-				"addOption": "Нажмите, чтобы добавить опцию",
-				"addOther": "Добавить «Другое»"
+				"addOption": "Click to add option",
+				"addOther": "Add 'Other'"
 			}
 		},
 		"image": {
-			"selectImageButton": "Выбрать изображение",
-			"caption": "Подпись к изображению"
+			"selectImageButton": "Select image",
+			"caption": "Image caption"
 		},
 		"paragraph": {
-			"placeholder": "Введите текст абзаца"
+			"placeholder": "Enter paragraph text"
 		},
 		"confirmationPage": {
-			"title": "Страница подтверждения",
-			"customMessage": "Пользовательское сообщение с подтверждением",
-			"defaultMessage": "Ваш ответ был сохранен",
-			"errorMessage": "Ошибка! Ваш ответ не был сохранен",
-			"pendingMessage": "Идет сохранение Вашего ответа"
+			"title": "Confirmation page",
+			"customMessage": "Custom confirmation message",
+			"defaultMessage": "Your response has been saved",
+			"errorMessage": "Error! Your response has not been saved",
+			"pendingMessage": "Your response is being saved."
 		}
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/mail/i18n/lt.json b/public/app/main/apps/mail/i18n/lt.json
index 417df2f..ab9ed43 100644
--- a/public/app/main/apps/mail/i18n/lt.json
+++ b/public/app/main/apps/mail/i18n/lt.json
@@ -1,324 +1,324 @@
 {
 	"MAIL": {
-		"ADVANCED": "Advanced",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Download with attachments",
-		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Download without attachments",
-		"DOWNLOAD": "Download",
-		"LOGIN_TIME": "Login time",
-		"PAUSE_TIME": "Pause time",
-		"DOWNLOAD_INTERACTION": "Download",
-		"YOU_ARE_REGISTERED_AS_A": "You are registered as a",
-		"TRANSFER": "Transfer",
-		"QUEUETRANSFER": "Queue Transfer",
-		"QUEUETRANSFERTIMEOUT": "Queue Transfer Timeout",
-		"AGENTTRANSFER": "Agent Transfer",
-		"AGENTTRANSFERTIMEOUT": "Agent Transfer Timeout",
-		"TAG": "Tag",
-		"EDIT_TAG": "Edit Tag",
-		"WAITFORTHEASSIGNEDAGENT": "Wait for the assigned agent",
-		"NOTIFICATION": "Notification",
-		"NOTIFICATIONSOUND": "Sound",
-		"NOTIFICATIONSHAKE": "Shake",
-		"NOTIFICATIONTEMPLATE": "Template",
-		"SYSTEM": "System",
-		"EDIT_SYSTEM": "Edit System",
-		"COMMAND": "Command",
-		"VARIABLE": "Variable",
-		"SEND_AS": "Send as",
-		"NEW_MAILSUBSTATUS": "New Sub Status",
-		"ADD_MAILSUBSTATUS": "Add Sub Status",
-		"MAILSUBSTATUSES": "Email Sub Statuses",
-		"EDIT_MAILSUBSTATUS": "Edit",
-		"DELETE_MAILSUBSTATUS": "Delete",
-		"FONT_FAMILY": "Font Family",
-		"FONT_SIZE": "Font Size",
-		"MARK_AS_UNREAD": "Mark as unread",
-		"ACCEPTED": "Accepted",
-		"CANNEDANSWERS": "Canned Answers",
-		"MAILCANNEDANSWERS": "Canned Answers",
-		"NO_MAILCANNEDANSWER_AVAILABLE": "No Canned Answers Available",
-		"NEW_MAILCANNEDANSWER": "New Canned Answer",
-		"ADD_MAILCANNEDANSWER": "Add Canned Answer",
-		"EDIT_MAILCANNEDANSWER": "Edit Canned Answer",
-		"DELETE_MAILCANNEDANSWER": "Delete Canned Answer",
-		"SHOW_ORIGINAL_MESSAGE": "Show original message",
-		"PENDING": "Pending",
-		"SEND_AS_PENDING": "Send as Pending",
-		"SEND_AND_CLOSE": "Send and Close",
-		"CANNED_ANSWER_NOT_FOUND": "No Canned Answers were found",
-		"CANNED_ANSWER_SEARCH": "Enter a text to search a Canned Answer",
-		"SPYINTERACTION": "Spy",
-		"ADD_NOTE": "Add note",
-		"NOTE": "Note",
-		"TAGS": "Tags",
-		"NO_AGENT_ONLINE": "No Agent Online",
-		"GOTOREALTIME_MAILQUEUE": "Go To Realtime Mail Queue",
-		"PARTIALPAUSE": "Parital Pause",
-		"BUSY": "Busy",
-		"TIMER": "Timer",
-		"IDLE": "Idle",
-		"CAPACITY": "Capacity",
-		"UNPAUSE": "End Pause",
-		"DEFAULT_PAUSE": "Default pause",
-		"LOGOUT": "Logout",
-		"AGENTADD_QUEUE": "Add agent to Email queue",
-		"VOICE": "Voice",
-		"CHAT": "Chat",
-		"SMS": "Sms",
-		"OPENCHANNEL": "Open channel",
-		"FAX": "Fax",
-		"REALTIME": "Realtime",
-		"AGENTS": "Agents",
-		"QUEUES": "Queues",
-		"ACCOUNTS": "Accounts",
-		"FULLNAME": "Full Name",
-		"INTERNAL": "Internal",
-		"PHONE_STATE": "Phone State",
-		"PHONE_STATUS": "Phone Status",
-		"PAUSE": "Pause",
-		"LOGGED_IN": "Logged In",
-		"PAUSED": "Paused",
-		"READY": "Ready",
-		"WAITING": "Waiting",
-		"TOTAL": "Total",
-		"IN": "In",
-		"OUT": "Out",
-		"IMAP_STATUS": "IMAP Status",
-		"SMTP_STATUS": "SMTP Status",
-		"DISABLED": "Disabled",
-		"CONNECTED": "Connected",
-		"NEVER_VERIFIED": "Never Verified",
-		"ERROR": "Error",
-		"EDIT_ACCOUNT": "Edit Account",
-		"VERIFY_SMTP": "Verify SMTP",
-		"VERIFIED": "Verified",
-		"VERIFYSMTP_MAILACCOUNT": "Verify SMTP",
-		"GOTOREALTIME_MAILACCOUNT": "Go to Realtime Email Account",
-		"GOTO_MAILACCOUNT": "Go to Realtime Email Account",
-		"TEXT": "Text",
-		"TIMES": "Number of times per interaction",
-		"EDIT_AUTOREPLY": "Edit Auto Reply",
-		"AUTOREPLY": "Auto Reply",
-		"SHOW_AUTOREPLY": "Show Auto Reply",
-		"SHOW_DETAILS": "Show details",
-		"HIDE_DETAILS": "Hide details",
-		"TO": "To",
-		"FROM": "From",
-		"DATE": "Date",
-		"CC": "Cc",
-		"REPLY": "Reply",
-		"REPLY_ALL": "Reply All",
-		"FORWARD": "Forward",
-		"SUBJECT": "Subject",
-		"BCC": "Bcc",
-		"SEND": "Send",
-		"ATTACHMENT": "Attachment",
-		"ATTACHMENTS": "Attachments",
-		"NAME": "Name",
-		"MAILQUEUES": "Email Queues",
-		"SEARCH_FOR_ANYONE": "Search",
-		"STRATEGY": "Strategy",
-		"MANDATORYDISPOSITION": "Mandatory disposition",
-		"MANDATORYDISPOSITIONPAUSEID": "Pause to use if mandatory disposition is enabled",
+		"ADVANCED": "Pažengęs",
+		"DOWNLOAD_WITH_ATTACHMENTS": "Atsisiųsti su priedais",
+		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Atsisiųsti be priedų",
+		"DOWNLOAD": "Atsisiųsti ",
+		"LOGIN_TIME": "Prisijungimo laikas",
+		"PAUSE_TIME": "Pauzės laikas",
+		"DOWNLOAD_INTERACTION": "Atsisiųsti ",
+		"YOU_ARE_REGISTERED_AS_A": "Jūs esate registruotas kaip",
+		"TRANSFER": "Perkėlimas",
+		"QUEUETRANSFER": "Eilės perkėlimas",
+		"QUEUETRANSFERTIMEOUT": "Eilės perdavimo laikas",
+		"AGENTTRANSFER": "Agento perkėlimas",
+		"AGENTTRANSFERTIMEOUT": "Agento perkėlimo laikas",
+		"TAG": "Žyma",
+		"EDIT_TAG": "Redaguoti žymą",
+		"WAITFORTHEASSIGNEDAGENT": "Palaukite paskirto agento",
+		"NOTIFICATION": "Pranešimas",
+		"NOTIFICATIONSOUND": "Garsas",
+		"NOTIFICATIONSHAKE": "Vibravimas",
+		"NOTIFICATIONTEMPLATE": "Šablonas",
+		"SYSTEM": "Sistema",
+		"EDIT_SYSTEM": "Redaguoti sistemą",
+		"COMMAND": "Komanda",
+		"VARIABLE": "Kintamas",
+		"SEND_AS": "Siųsti kaip",
+		"NEW_MAILSUBSTATUS": "Naujas antrinis statusas",
+		"ADD_MAILSUBSTATUS": "Pridėti antrinį statusą",
+		"MAILSUBSTATUSES": "El. pašto antriniai statusai",
+		"EDIT_MAILSUBSTATUS": "Redaguoti",
+		"DELETE_MAILSUBSTATUS": "Ištrinti",
+		"FONT_FAMILY": "Šrifto šeima",
+		"FONT_SIZE": "Šrifto dydis",
+		"MARK_AS_UNREAD": "Žymėti kaip neskaitytą",
+		"ACCEPTED": "Priimta",
+		"CANNEDANSWERS": "Įrašyti atsakymai",
+		"MAILCANNEDANSWERS": "Įrašyti atsakymai",
+		"NO_MAILCANNEDANSWER_AVAILABLE": "Nėra įrašytų atsakymų",
+		"NEW_MAILCANNEDANSWER": "Naujas įrašytas atsakymas",
+		"ADD_MAILCANNEDANSWER": "Pridėti įrašytą atsakymą",
+		"EDIT_MAILCANNEDANSWER": "Redaguoti įrašytą atsakymą",
+		"DELETE_MAILCANNEDANSWER": "Ištrinti įrašytą atsakymą",
+		"SHOW_ORIGINAL_MESSAGE": "Rodyti originalią žinutę",
+		"PENDING": "Laukiama",
+		"SEND_AS_PENDING": "Siųsti kaip laukiamą",
+		"SEND_AND_CLOSE": "Siųsti ir uždaryti",
+		"CANNED_ANSWER_NOT_FOUND": "Įrašytų atsakymų nerasta",
+		"CANNED_ANSWER_SEARCH": "Įveskite tekstą, norėdami ieškoti įrašyto atsakymo",
+		"SPYINTERACTION": "Sekti",
+		"ADD_NOTE": "Pridėti pastabą",
+		"NOTE": "Pastaba",
+		"TAGS": "Žymos",
+		"NO_AGENT_ONLINE": "Nėra prisijungusio agento",
+		"GOTOREALTIME_MAILQUEUE": "Eiti į realaus laiko pašto eilę",
+		"PARTIALPAUSE": "Dalinė pauzė",
+		"BUSY": "Užimtas",
+		"TIMER": "Laikmatis",
+		"IDLE": "Tuščias",
+		"CAPACITY": "Talpa",
+		"UNPAUSE": "Pauzės pabaiga",
+		"DEFAULT_PAUSE": "Numatytoji pauzė",
+		"LOGOUT": "Atsijungti",
+		"AGENTADD_QUEUE": "Pridėti agentą prie el. pašto eilės",
+		"VOICE": "Balsas",
+		"CHAT": "Pokalbis",
+		"SMS": "Trumpoji žinutė",
+		"OPENCHANNEL": "Atidaryti kanalą",
+		"FAX": "Faksas",
+		"REALTIME": "Realus laikas",
+		"AGENTS": "Agentai",
+		"QUEUES": "Eilės",
+		"ACCOUNTS": "Paskyros",
+		"FULLNAME": "Vardas ir pavardė",
+		"INTERNAL": "Vidinis",
+		"PHONE_STATE": "Telefono būsena",
+		"PHONE_STATUS": "Telefono statusas",
+		"PAUSE": "Pauzė",
+		"LOGGED_IN": "Prisijungęs",
+		"PAUSED": "Pristabdyta",
+		"READY": "Parengta",
+		"WAITING": "Laukia",
+		"TOTAL": "Iš viso",
+		"IN": "Į",
+		"OUT": "Iš",
+		"IMAP_STATUS": "IMAP statusas",
+		"SMTP_STATUS": "SMTP statusas",
+		"DISABLED": "Išjungtas",
+		"CONNECTED": "Prisijungta",
+		"NEVER_VERIFIED": "Niekada netikrinama",
+		"ERROR": "Klaida",
+		"EDIT_ACCOUNT": "Redaguoti paskyrą",
+		"VERIFY_SMTP": "Tikrinti SMTP",
+		"VERIFIED": "Patikrinta",
+		"VERIFYSMTP_MAILACCOUNT": "Tikrinti SMTP",
+		"GOTOREALTIME_MAILACCOUNT": "Eiti į el. pašto paskyrą realiu laiku",
+		"GOTO_MAILACCOUNT": "Eiti į el. pašto paskyrą realiu laiku",
+		"TEXT": "Tekstas",
+		"TIMES": "Sąveikos kartų skaičius",
+		"EDIT_AUTOREPLY": "Redaguoti automatinį atsakymą",
+		"AUTOREPLY": "Automatinis atsakymas",
+		"SHOW_AUTOREPLY": "Rodyti automatinį atsakymą",
+		"SHOW_DETAILS": "Rodyti išsamią informaciją",
+		"HIDE_DETAILS": "Slėpti išsamią informaciją",
+		"TO": "Į",
+		"FROM": "Nuo",
+		"DATE": "Data",
+		"CC": "Kopija",
+		"REPLY": "Atsakyti",
+		"REPLY_ALL": "Atsakyti visiems",
+		"FORWARD": "Persiųsti",
+		"SUBJECT": "Tema",
+		"BCC": "Nematoma kopija",
+		"SEND": "Siųsti",
+		"ATTACHMENT": "Priedas",
+		"ATTACHMENTS": "Priedai",
+		"NAME": "Vardas",
+		"MAILQUEUES": "El. pašto eilės",
+		"SEARCH_FOR_ANYONE": "Paieška",
+		"STRATEGY": "Strategija",
+		"MANDATORYDISPOSITION": "Privalomas išdėstymas",
+		"MANDATORYDISPOSITIONPAUSEID": "Pauzės naudojimas, jei įjungtas privalomas išdėstymas",
 		"ERRORS": {
-			"QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"QUEUETRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-			"AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"AGENTTRANSFERTIMEOUT_REQUIRED": "Mandatory Field",
-			"TAG_REQUIRED": "Mandatory Field",
-			"WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"WAITFORTHEASSIGNEDAGENT_REQUIRED": "Mandatory Field",
-			"AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"NAME_MUST_VALID_PATTERN": "Wrong format",
-			"COMMAND_REQUIRED": "Mandatory Field",
-			"FONT_SIZE_REQUIRED": "Mandatory Field",
-			"FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"TEXT_MAX_LENGTH": "The value must have a maximum length equal to {{max}}",
-			"VALUE_REQUIRED": "Mandatory Field",
-			"TEXT_REQUIRED": "Mandatory Field",
-			"NAME_REQUIRED": "Mandatory Field",
-			"AGENT_TIMEOUT_REQUIRED": "Mandatory Field",
-			"EMAIL_ADDRESS_REQUIRED": "Mandatory Field",
-			"EMAIL_ADDRESS_MUST_VALID": "Wrong format",
-			"HOST_REQUIRED": "Mandatory Field",
-			"USERNAME_REQUIRED": "Mandatory Field",
-			"PORT_REQUIRED": "Mandatory Field",
-			"CONNTIMEOUT_REQUIRED": "Mandatory Field",
-			"AUTHTIMEOUT_REQUIRED": "Mandatory Field",
-			"ACCEPTURL_MUST_VALID_URL": "Wrong format",
-			"TIMEOUT_REQUIRED": "Mandatory Field",
-			"REJECTURL_MUST_VALID_URL": "Wrong format",
-			"CLOSEURL_MUST_VALID_URL": "Wrong format",
-			"AGENT_REQUIRED": "Mandatory Field",
-			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"DISPOSITION_REQUIRED": "Mandatory Field",
-			"CONDITION_REQUIRED": "Mandatory Field",
-			"TRUEPRIORITY_REQUIRED": "Mandatory Field",
-			"FALSEPRIORITY_REQUIRED": "Mandatory Field",
-			"TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"PRIORITY_REQUIRED": "Mandatory Field",
-			"PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"QUEUE_REQUIRED": "Mandatory Field",
-			"LIST_REQUIRED": "Mandatory Field",
-			"PASSWORD_REQUIRED": "Mandatory Field",
-			"SERVICE_REQUIRED": "Mandatory Field",
-			"IMAP_HOST_REQUIRED": "Mandatory Field",
-			"IMAP_PORT_REQUIRED": "Mandatory Field",
-			"SMTP_HOST_REQUIRED": "Mandatory Field",
-			"SMTP_PORT_REQUIRED": "Mandatory Field",
-			"CONFIRM_NOT_MATCH": "The passwords inserted don't match",
-			"KEY_MAX_LENGTH": "Key must have a maximum length equal to {{max}}",
-			"KEY_REQUIRED": "Mandatory Field",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field"
+			"QUEUETRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"QUEUETRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"QUEUETRANSFERTIMEOUT_REQUIRED": "Privalomas laukas",
+			"AGENTTRANSFERTIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"AGENTTRANSFERTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"AGENTTRANSFERTIMEOUT_REQUIRED": "Privalomas laukas",
+			"TAG_REQUIRED": "Privalomas laukas",
+			"WAITFORTHEASSIGNEDAGENT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"WAITFORTHEASSIGNEDAGENT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"WAITFORTHEASSIGNEDAGENT_REQUIRED": "Privalomas laukas",
+			"AGENT_TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"AGENT_TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"NAME_MUST_VALID_PATTERN": "Blogas formatas",
+			"COMMAND_REQUIRED": "Privalomas laukas",
+			"FONT_SIZE_REQUIRED": "Privalomas laukas",
+			"FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"FONT_SIZE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"TEXT_MAX_LENGTH": "Reikšmė turi būti ne ilgesnė kaip {{maks}}",
+			"VALUE_REQUIRED": "Privalomas laukas",
+			"TEXT_REQUIRED": "Privalomas laukas",
+			"NAME_REQUIRED": "Privalomas laukas",
+			"AGENT_TIMEOUT_REQUIRED": "Privalomas laukas",
+			"EMAIL_ADDRESS_REQUIRED": "Privalomas laukas",
+			"EMAIL_ADDRESS_MUST_VALID": "Blogas formatas",
+			"HOST_REQUIRED": "Privalomas laukas",
+			"USERNAME_REQUIRED": "Privalomas laukas",
+			"PORT_REQUIRED": "Privalomas laukas",
+			"CONNTIMEOUT_REQUIRED": "Privalomas laukas",
+			"AUTHTIMEOUT_REQUIRED": "Privalomas laukas",
+			"ACCEPTURL_MUST_VALID_URL": "Blogas formatas",
+			"TIMEOUT_REQUIRED": "Privalomas laukas",
+			"REJECTURL_MUST_VALID_URL": "Blogas formatas",
+			"CLOSEURL_MUST_VALID_URL": "Blogas formatas",
+			"AGENT_REQUIRED": "Privalomas laukas",
+			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"DISPOSITION_REQUIRED": "Privalomas laukas",
+			"CONDITION_REQUIRED": "Privalomas laukas",
+			"TRUEPRIORITY_REQUIRED": "Privalomas laukas",
+			"FALSEPRIORITY_REQUIRED": "Privalomas laukas",
+			"TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"PRIORITY_REQUIRED": "Privalomas laukas",
+			"PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"QUEUE_REQUIRED": "Privalomas laukas",
+			"LIST_REQUIRED": "Privalomas laukas",
+			"PASSWORD_REQUIRED": "Privalomas laukas",
+			"SERVICE_REQUIRED": "Privalomas laukas",
+			"IMAP_HOST_REQUIRED": "Privalomas laukas",
+			"IMAP_PORT_REQUIRED": "Privalomas laukas",
+			"SMTP_HOST_REQUIRED": "Privalomas laukas",
+			"SMTP_PORT_REQUIRED": "Privalomas laukas",
+			"CONFIRM_NOT_MATCH": "Įvesti slaptažodžiai nesutampa",
+			"KEY_MAX_LENGTH": "Raktas turi būti ne ilgesnė kaip {{maks}}",
+			"KEY_REQUIRED": "Privalomas laukas",
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Privalomas laukas"
 		},
-		"AGENT_TIMEOUT": "Agent Timeout",
-		"DESCRIPTION": "Description",
-		"ADD_MAILQUEUE": "Add Email Queue",
-		"EDIT_MAILQUEUE": "Edit Email Queue",
-		"DELETE_MAILQUEUE": "Delete Email Queue",
-		"SETTINGS": "Settings",
-		"GENERAL": "General",
-		"SAVE": "Save",
-		"MAILACCOUNTS": "Email Accounts",
-		"EMAIL_ADDRESS": "Email Address",
-		"ADD_MAILACCOUNT": "Add Email Account",
-		"EDIT_MAILACCOUNT": "Edit Email Account",
-		"DELETE_MAILACCOUNT": "Delete Email Accounts",
-		"DISPOSITIONS": "Dispositions",
-		"WEBHOOKS": "WebHooks",
-		"ACTIONS": "Actions",
-		"OTHERS": "Others",
-		"LIST": "List",
-		"TEMPLATE": "Template",
-		"FIDELITY": "Fidelity",
-		"SERVICE": "Service",
-		"CREATED_AT": "Created At",
-		"ACCEPT": "Accept",
-		"ACCEPTMETHOD": "Accept Method",
-		"ACCEPTURL": "Accept URL",
-		"REJECT": "Reject",
-		"REJECTMETHOD": "Reject Method",
-		"REJECTURL": "Reject URL",
-		"CLOSE": "Close",
-		"CLOSEMETHOD": "Close Method",
-		"CLOSEURL": "Close URL",
-		"WHITELABEL": "White Label",
-		"SIGNATURE": "Signature",
+		"AGENT_TIMEOUT": "Agento laikas",
+		"DESCRIPTION": "Aprašymas",
+		"ADD_MAILQUEUE": "Pridėti el. pašto eilę",
+		"EDIT_MAILQUEUE": "Redaguoti el. pašto eilę",
+		"DELETE_MAILQUEUE": "Ištrinti el. pašto eilę",
+		"SETTINGS": "Nustatymai",
+		"GENERAL": "Bendras",
+		"SAVE": "Saugoti",
+		"MAILACCOUNTS": "El. pašto paskyros",
+		"EMAIL_ADDRESS": "El. pašto adresas",
+		"ADD_MAILACCOUNT": "Pridėti el. pašto paskyrą",
+		"EDIT_MAILACCOUNT": "Redaguoti el. pašto paskyrą",
+		"DELETE_MAILACCOUNT": "Ištrinti el. pašto paskyrą",
+		"DISPOSITIONS": "Išdėstymai",
+		"WEBHOOKS": "Internetinės svetainės",
+		"ACTIONS": "Veiksmai",
+		"OTHERS": "Kiti",
+		"LIST": "Sąrašas",
+		"TEMPLATE": "Šablonas",
+		"FIDELITY": "Tikslumas",
+		"SERVICE": "Paslauga",
+		"CREATED_AT": "Sukurta",
+		"ACCEPT": "Priimti",
+		"ACCEPTMETHOD": "Priimti metodą",
+		"ACCEPTURL": "Priimti URL",
+		"REJECT": "Atmesti",
+		"REJECTMETHOD": "Atmesti metodą",
+		"REJECTURL": "Atmesti URL",
+		"CLOSE": "Uždaryti",
+		"CLOSEMETHOD": "Uždaryti metodą",
+		"CLOSEURL": "Uždaryti URL",
+		"WHITELABEL": "Balta etiketė",
+		"SIGNATURE": "Parašas",
 		"IMAP": "IMAP",
-		"HOST": "Host",
-		"USERNAME": "Username",
-		"PORT": "Port",
-		"MAILBOX": "Mailbox",
-		"FILTER": "Filter",
-		"CONNTIMEOUT": "Connection Timeout [sec]",
-		"AUTHTIMEOUT": "Authentication Timeout [sec]",
-		"DELETE": "Delete Email From Server",
+		"HOST": "Savininkas",
+		"USERNAME": "Vartotojo vardas",
+		"PORT": "Portas",
+		"MAILBOX": "Pašto dėžutė",
+		"FILTER": "Filtras",
+		"CONNTIMEOUT": "Prisijungimo laikas [sek.]",
+		"AUTHTIMEOUT": "Autentifikavimo laikas [sek.]",
+		"DELETE": "Ištrinti el. paštą iš serverio",
 		"SSL": "SSL",
-		"KEEPALIVE": "Keepalive",
-		"POLLING": "Polling",
+		"KEEPALIVE": "Išlaikyti",
+		"POLLING": "Apklausa",
 		"SMTP": "SMTP",
-		"SELECTED": "Selected",
-		"SELECT_ALL": "Select All",
-		"SELECT_NONE": "Select None",
-		"BACK": "Back",
-		"MAIL": "Email",
+		"SELECTED": "Pasirinkta",
+		"SELECT_ALL": "Pasirinkti visus",
+		"SELECT_NONE": "Nieko nepasirinkti",
+		"BACK": "Atgal",
+		"MAIL": "El. paštas",
 		"ID": "Id",
-		"TIMEOUT": "Timeout",
-		"PASSWORD": "Password",
-		"NO_MAILDISPOSITION_AVAILABLE": "No Email Dispositions available",
-		"ADD_MAILDISPOSITION": "Add Email Disposition",
-		"NEW_MAILDISPOSITION": "New Email Disposition",
-		"EDIT_MAILDISPOSITION": "Edit Email Disposition",
-		"DELETE_MAILDISPOSITION": "Delete Email Disposition",
-		"MAILDISPOSITIONS": "Email Dispositions",
-		"NEW_MAILQUEUE": "New Email Queue",
-		"NEW_MAILACCOUNT": "New Email Account",
-		"NO_AVAILABLE_INFO": "No availables info",
-		"ALL_TEAMS": "All Teams",
-		"SELECTED_TEAMS": "Selected Teams",
+		"TIMEOUT": "Laikas",
+		"PASSWORD": "Slaptažodis",
+		"NO_MAILDISPOSITION_AVAILABLE": "Nėra el. pašto išdėstymų",
+		"ADD_MAILDISPOSITION": "Pridėti el. pašto išdėstymą",
+		"NEW_MAILDISPOSITION": "Naujas el. pašto išdėstymas",
+		"EDIT_MAILDISPOSITION": "Redaguoti el. pašto išdėstymą",
+		"DELETE_MAILDISPOSITION": "Ištrinti el. pašto išdėstymą",
+		"MAILDISPOSITIONS": "El. pašto išdėstymai",
+		"NEW_MAILQUEUE": "Nauja el. pašto eilė",
+		"NEW_MAILACCOUNT": "Nauja el. pašto paskyra",
+		"NO_AVAILABLE_INFO": "Informacijos nėra",
+		"ALL_TEAMS": "Visos komandos",
+		"SELECTED_TEAMS": "Pasirinktos komandos",
 		"HELP": {
-			"FONT_FAMILY": "Default Font Family",
-			"FONT_SIZE": "Default Font Size",
-			"NAME": "Only numbers, letters and specific characters (._) are supported",
-			"USERNAME": "Username used for authentication",
-			"PASSWORD": "Password used for authentication",
-			"SECURE": "If true, the connection will use TLS when connecting to server",
-			"MANDATORYDISPOSITION": "Mandatory disposition",
-			"MANDATORYDISPOSITIONPAUSEID": "Pause to use when mandatory disposition is enabled",
-			"MARK_AS_UNREAD": "Enable/Disable agent to mark as unread the last message of an interaction"
+			"FONT_FAMILY": "Numatytoji šrifto šeima",
+			"FONT_SIZE": "Numatytasis šrifto dydis",
+			"NAME": "Palaikomi tik skaičiai, raidės ir konkretūs simboliai (._)",
+			"USERNAME": "Vartotojo vardas naudojamas autentifikavimui",
+			"PASSWORD": "Slaptažodis naudojamas autentifikavimui",
+			"SECURE": "Jei teisinga, ryšys naudos TLS, jungiantis prie serverio",
+			"MANDATORYDISPOSITION": "Privalomas išdėstymas",
+			"MANDATORYDISPOSITIONPAUSEID": "Pauzės naudojimas, kai įjungtas privalomas išdėstymas",
+			"MARK_AS_UNREAD": "Įjungti/išjungti agentą pažymėti paskutinį sąveikos pranešimą kaip neskaitytą"
 		},
-		"PAGE": "Page",
-		"ROWSPERPAGE": "Rows per page",
-		"OF": "of",
-		"TEAMADD_MAILQUEUE": "Add Team to Email Queue",
-		"AGENTADD_MAILQUEUE": "Add Agent to Email Queue",
-		"ALL_AGENTS": "All Agents",
-		"SELECTED_AGENTS": "Selected Agents",
-		"AGENT": "Agent",
-		"EDIT_AGENT": "Edit Agent",
-		"EDIT_CLOSE": "Edit Close",
-		"DISPOSITION": "Disposition",
-		"GOTOIF": "GotoIf",
-		"EDIT_GOTOIF": "Edit GotoIf",
-		"CONDITION": "Condition",
-		"TRUEPRIORITY": "True Priority",
-		"FALSEPRIORITY": "False Priority",
-		"GOTOP": "GotoP",
-		"EDIT_GOTOP": "Edit GotoP",
-		"PRIORITY": "Priority",
+		"PAGE": "Puslapis",
+		"ROWSPERPAGE": "Eilutės puslapyje",
+		"OF": "iš",
+		"TEAMADD_MAILQUEUE": "Pridėti komandą į el. pašto eilę",
+		"AGENTADD_MAILQUEUE": "Pridėti agentą į el. pašto eilę",
+		"ALL_AGENTS": "Visi agentai",
+		"SELECTED_AGENTS": "Pasirinkti agentai",
+		"AGENT": "Agentas",
+		"EDIT_AGENT": "Redaguoti agentą",
+		"EDIT_CLOSE": "Redaguoti uždaryti",
+		"DISPOSITION": "Išdėstymas",
+		"GOTOIF": "Eiti į jei",
+		"EDIT_GOTOIF": "Redaguoti eiti į jei",
+		"CONDITION": "Padėtis",
+		"TRUEPRIORITY": "Teisingas prioritetas",
+		"FALSEPRIORITY": "Neteisingas prioritetas",
+		"GOTOP": "Eiti į P",
+		"EDIT_GOTOP": "Redaguoti eiti į P",
+		"PRIORITY": "Prioritetas",
 		"NOOP": "Noop",
-		"EDIT_NOOP": "Edit Noop",
-		"VALUE": "Value",
-		"QUEUE": "Queue",
-		"EDIT_QUEUE": "Edit Queue",
-		"INTERACTIONS": "Interactions",
-		"STARTEDAT": "Started At",
-		"LASTMESSAGE": "Last message",
-		"CONTACT": "Contact",
-		"CLOSEDAT": "Closed At",
-		"NOTES": "Notes",
-		"NO_INTERACTION_AVAILABLE": "No interactions available",
-		"ACTIVE": "Active",
-		"SECURE": "Secure",
-		"AUTHENTICATION": "Authentication",
-		"SMTP_HOST": "SMTP Host",
-		"SMTP_PORT": "SMTP Port",
-		"IMAP_HOST": "IMAP Host",
-		"IMAP_PORT": "IMAP Port",
-		"CONFIRM_PASSWORD": "Confirm Password",
-		"SELECT_STATUS": "Select Status",
-		"OPENED": "Open",
-		"CLOSED": "Closed",
-		"ALL": "All",
-		"SELECT_ACCOUNT": "Select Account",
-		"STATUS": "Status",
-		"ACCOUNT": "Account",
-		"OPEN": "Open",
-		"KEY": "Key",
-		"SMTPSERVICE": "SMTP Service",
-		"UNKNOWN": "Unknown",
-		"UNREGISTERED": "Unregistered",
-		"UNAVAILABLE": "Unavailable",
-		"NOT_INUSE": "Not in use",
-		"REACHABLE": "Reachable",
-		"IN_USE": "In use",
-		"AGENTSADD_QUEUE": "Add agents to Email Queue",
-		"INFO": "Info",
-		"INTERACTIONS_MAILACCOUNT": "Go to Interactions",
-		"REFRESH_INTERACTIONS": "Refresh Interactions",
-		"DELETE_INTERACTION": "Delete Interaction",
-		"AGENTADD_MAILACCOUNT": "Add Agent to Email Account",
-		"TEAMS_ASSOCIATION": "Teams Association",
-		"TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-		"TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
-		"DOWNLOAD_WITH_ATTACHMENT": "Download with attachment",
-		"DOWNLOAD_WITHOUT_ATTACHMENT": "Download without attachment"
+		"EDIT_NOOP": "Redaguoti Noop",
+		"VALUE": "Reikšmė",
+		"QUEUE": "Eilė",
+		"EDIT_QUEUE": "Redaguoti eilę",
+		"INTERACTIONS": "Sąveikos",
+		"STARTEDAT": "Prasidėjo nuo",
+		"LASTMESSAGE": "Paskutinė žinutė",
+		"CONTACT": "Kontaktas",
+		"CLOSEDAT": "Uždaryta",
+		"NOTES": "Pastabos",
+		"NO_INTERACTION_AVAILABLE": "Sąveikų nėra",
+		"ACTIVE": "Aktyvus",
+		"SECURE": "Saugus",
+		"AUTHENTICATION": "Autentifikavimas",
+		"SMTP_HOST": "SMTP savininkas",
+		"SMTP_PORT": "SMTP portas",
+		"IMAP_HOST": "IMAP savininkas",
+		"IMAP_PORT": "IMAP portas",
+		"CONFIRM_PASSWORD": "Patvirtinti slaptažodį",
+		"SELECT_STATUS": "Pasirinkti statusą",
+		"OPENED": "Atidaryta",
+		"CLOSED": "Uždaryta",
+		"ALL": "Visi",
+		"SELECT_ACCOUNT": "Pasirinkti paskyrą",
+		"STATUS": "Statusas",
+		"ACCOUNT": "Paskyra",
+		"OPEN": "Atidaryti",
+		"KEY": "Raktas",
+		"SMTPSERVICE": "SMTP paslauga",
+		"UNKNOWN": "Nežinomas",
+		"UNREGISTERED": "Neregistruotas",
+		"UNAVAILABLE": "Nepasiekiamas",
+		"NOT_INUSE": "Nenaudojamas",
+		"REACHABLE": "Pasiekiamas",
+		"IN_USE": "Naudojamas",
+		"AGENTSADD_QUEUE": "Pridėti agentus į el. pašto eilę",
+		"INFO": "Informacija",
+		"INTERACTIONS_MAILACCOUNT": "Eiti į sąveikas",
+		"REFRESH_INTERACTIONS": "Atnaujinti sąveikas",
+		"DELETE_INTERACTION": "Ištrinti sąveiką",
+		"AGENTADD_MAILACCOUNT": "Pridėti agentą į el. pašto paskyrą",
+		"TEAMS_ASSOCIATION": "Komandų asociacija",
+		"TOOLTIP_SCREENRECORDING_ON": "Vyksta ekrano įrašymas",
+		"TOOLTIP_SCREENRECORDING_OFF": "Ekrano įrašas galimas",
+		"DOWNLOAD_WITH_ATTACHMENT": "Atsisiųsti su priedu",
+		"DOWNLOAD_WITHOUT_ATTACHMENT": "Atsisiųsti be priedo"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/mail/i18n/ru.json b/public/app/main/apps/mail/i18n/ru.json
index 8ec4dbd..fecdb27 100644
--- a/public/app/main/apps/mail/i18n/ru.json
+++ b/public/app/main/apps/mail/i18n/ru.json
@@ -1,64 +1,64 @@
 {
 	"MAIL": {
 		"TEXT": "Текст",
-		"TIMES": "Количество раз за взаимодействие",
-		"EDIT_AUTOREPLY": "Редактирование автоответчика",
-		"AUTOREPLY": "Автоответчик",
-		"SHOW_AUTOREPLY": "Показать автоответчик",
+		"TIMES": "Количество раз в взаимодействие",
+		"EDIT_AUTOREPLY": "Редактировать автоматический ответ",
+		"AUTOREPLY": "Автоматический ответ",
+		"SHOW_AUTOREPLY": "Показать автоматический ответ",
 		"SHOW_DETAILS": "Показать детали",
-		"HIDE_DETAILS": "Скрыть детали",
-		"TO": "Кому",
+		"HIDE_DETAILS": "Скрыть подробности",
+		"TO": "К",
 		"FROM": "От",
 		"DATE": "Дата",
 		"CC": "Cc",
 		"REPLY": "Ответить",
 		"REPLY_ALL": "Ответить всем",
-		"FORWARD": "Переслать",
-		"SUBJECT": "Тема",
-		"BCC": "Bcc",
+		"FORWARD": "Вперед",
+		"SUBJECT": "При условии",
+		"BCC": "Ск",
 		"SEND": "Отправить",
-		"ATTACHMENT": "Вложение",
+		"ATTACHMENT": "Приложение",
 		"ATTACHMENTS": "Вложения",
 		"NAME": "Имя",
 		"MAILQUEUES": "Очереди сообщений электронной почты",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"STRATEGY": "Стратегия",
 		"ERRORS": {
-			"TEXT_REQUIRED": "Обязательное поле",
-			"NAME_REQUIRED": "Обязательное поле",
-			"AGENT_TIMEOUT_REQUIRED": "Обязательное поле",
-			"EMAIL_ADDRESS_REQUIRED": "Обязательное поле",
-			"EMAIL_ADDRESS_MUST_VALID": "Неверный формат",
-			"HOST_REQUIRED": "Обязательное поле",
-			"USERNAME_REQUIRED": "Обязательное поле",
-			"PORT_REQUIRED": "Обязательное поле",
-			"CONNTIMEOUT_REQUIRED": "Обязательное поле",
-			"AUTHTIMEOUT_REQUIRED": "Обязательное поле",
-			"ACCEPTURL_MUST_VALID_URL": "Неверный формат",
-			"TIMEOUT_REQUIRED": "Обязательное поле",
-			"REJECTURL_MUST_VALID_URL": "Неверный формат",
-			"CLOSEURL_MUST_VALID_URL": "Неверный формат",
-			"AGENT_REQUIRED": "Обязательное поле",
-			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"DISPOSITION_REQUIRED": "Обязательное поле",
-			"CONDITION_REQUIRED": "Обязательное поле",
-			"TRUEPRIORITY_REQUIRED": "Обязательное поле",
-			"FALSEPRIORITY_REQUIRED": "Обязательное поле",
-			"TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"PRIORITY_REQUIRED": "Обязательное поле",
-			"PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"QUEUE_REQUIRED": "Обязательное поле",
-			"LIST_REQUIRED": "Обязательное поле",
-			"PASSWORD_REQUIRED": "Обязательное поле",
-			"SERVICE_REQUIRED": "Обязательное поле",
-			"IMAP_HOST_REQUIRED": "Обязательное поле",
-			"IMAP_PORT_REQUIRED": "Обязательное поле",
-			"SMTP_HOST_REQUIRED": "Обязательное поле",
-			"SMTP_PORT_REQUIRED": "Обязательное поле",
-			"CONFIRM_NOT_MATCH": "Введенные пароли не совпадают",
-			"KEY_MAX_LENGTH": "Максимальная длина ключа должна быть равна {{max}}",
-			"KEY_REQUIRED": "Обязательное поле",
+			"TEXT_REQUIRED": "Поле text не требуется",
+			"NAME_REQUIRED": "Это имя требуется",
+			"AGENT_TIMEOUT_REQUIRED": "Оператор - тайм-аут требуется",
+			"EMAIL_ADDRESS_REQUIRED": "Адрес электронной почты не требуется",
+			"EMAIL_ADDRESS_MUST_VALID": "Адрес электронной почты должен быть написан в действительный формат",
+			"HOST_REQUIRED": "Хост не требуется",
+			"USERNAME_REQUIRED": "Имя пользователя не требуется",
+			"PORT_REQUIRED": "Порт не требуется",
+			"CONNTIMEOUT_REQUIRED": "На время ожидания подключения не требуется",
+			"AUTHTIMEOUT_REQUIRED": "В тайм-аут аутентификации не требуется",
+			"ACCEPTURL_MUST_VALID_URL": "Принять URL должен быть записан в действительный формат",
+			"TIMEOUT_REQUIRED": "Тайм-аут не требуется",
+			"REJECTURL_MUST_VALID_URL": "Отклонить URL должен быть записан в действительный формат",
+			"CLOSEURL_MUST_VALID_URL": "Закрыть адрес URL должен быть записан в действительный формат",
+			"AGENT_REQUIRED": "Агент обязан",
+			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Время тайм-аута должно быть больше или равно",
+			"DISPOSITION_REQUIRED": "Распоряжения не требуется",
+			"CONDITION_REQUIRED": "Это состояние требует",
+			"TRUEPRIORITY_REQUIRED": "Истинный приоритет не требуется",
+			"FALSEPRIORITY_REQUIRED": "Ложный Приоритет не требуется",
+			"TRUEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Истинный приоритет должно быть больше или равно",
+			"FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Ложным приоритетом должно быть больше или равно",
+			"PRIORITY_REQUIRED": "Приоритет не требуется",
+			"PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Приоритетным должно быть больше или равно",
+			"QUEUE_REQUIRED": "Очереди не требуется",
+			"LIST_REQUIRED": "Список не требуется",
+			"PASSWORD_REQUIRED": "Необходимо указать пароль.",
+			"SERVICE_REQUIRED": "О необходимости обслуживания",
+			"IMAP_HOST_REQUIRED": "IMAP хост не требуется",
+			"IMAP_PORT_REQUIRED": "IMAP порт не требуется",
+			"SMTP_HOST_REQUIRED": "На SMTP-сервер не требуется",
+			"SMTP_PORT_REQUIRED": "Порт SMTP не требуется",
+			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
+			"KEY_MAX_LENGTH": "Ключ должен иметь максимальную длину равную {{max}}",
+			"KEY_REQUIRED": "Ключ не требуется",
 			"TEXT_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
 			"VALUE_REQUIRED": "Обязательное поле",
 			"FONT_SIZE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
@@ -81,244 +81,244 @@
 			"QUEUETRANSFERTIMEOUT_REQUIRED": "Обязательное поле",
 			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Обязательное поле"
 		},
-		"AGENT_TIMEOUT": "Тайм-аут агента",
+		"AGENT_TIMEOUT": "Время ожидания оператора",
 		"DESCRIPTION": "Описание",
-		"ADD_MAILQUEUE": "Добавить очередь сообщений электронной почты",
-		"EDIT_MAILQUEUE": "Редактировать очередь сообщений электронной почты",
-		"DELETE_MAILQUEUE": "Удалить очередь сообщений электронной почты",
+		"ADD_MAILQUEUE": "Добавление очереди сообщений электронной почты",
+		"EDIT_MAILQUEUE": "Редактировать очереди сообщений электронной почты",
+		"DELETE_MAILQUEUE": "Удалить очереди сообщений электронной почты",
 		"SETTINGS": "Настройки",
-		"GENERAL": "Общие",
+		"GENERAL": "Генеральной",
 		"SAVE": "Сохранить",
 		"MAILACCOUNTS": "Учетные записи электронной почты",
-		"EMAIL_ADDRESS": "Электронная почта",
+		"EMAIL_ADDRESS": "Адрес электронной почты",
 		"ADD_MAILACCOUNT": "Добавить учетную запись электронной почты",
-		"EDIT_MAILACCOUNT": "Редактировать учетную запись электронной почты",
+		"EDIT_MAILACCOUNT": "Редактирование учетной записи электронной почты",
 		"DELETE_MAILACCOUNT": "Удалить учетные записи электронной почты",
-		"DISPOSITIONS": "Диспозиции",
+		"DISPOSITIONS": "Распоряжения",
 		"WEBHOOKS": "WebHooks",
 		"ACTIONS": "Действия",
 		"OTHERS": "Другие",
 		"LIST": "Список",
 		"TEMPLATE": "Шаблон",
-		"FIDELITY": "Точность",
+		"FIDELITY": "Четкость",
 		"SERVICE": "Сервис",
-		"CREATED_AT": "Создано на",
-		"ACCEPT": "Принять",
+		"CREATED_AT": "Созданные в",
+		"ACCEPT": "Согласиться с",
 		"ACCEPTMETHOD": "Принять метод",
-		"ACCEPTURL": "Принять URL",
+		"ACCEPTURL": "Согласиться с URL",
 		"REJECT": "Отклонить",
 		"REJECTMETHOD": "Отклонить метод",
-		"REJECTURL": "Отклонить URL",
+		"REJECTURL": "Отклонить URL",
 		"CLOSE": "Закрыть",
-		"CLOSEMETHOD": "Закрыть метод",
-		"CLOSEURL": "Закрыть URL",
-		"WHITELABEL": "White Label",
+		"CLOSEMETHOD": "Закройте метод",
+		"CLOSEURL": "Закрыть URL",
+		"WHITELABEL": "На этикетке белого цвета",
 		"SIGNATURE": "Подпись",
 		"IMAP": "IMAP",
-		"HOST": "Хост",
+		"HOST": "Принимающей",
 		"USERNAME": "Имя пользователя",
 		"PORT": "Порт",
 		"MAILBOX": "Почтовый ящик",
 		"FILTER": "Фильтр",
-		"CONNTIMEOUT": "Время ожидания соединения [с]",
-		"AUTHTIMEOUT": "Время ожидания аутентификации [с]",
-		"DELETE": "Удалить письмо с сервера",
+		"CONNTIMEOUT": "Время ожидания подключения [сек]",
+		"AUTHTIMEOUT": "Тайм-аут аутентификации [сек]",
+		"DELETE": "Удаление сообщений электронной почты с сервера",
 		"SSL": "SSL",
 		"KEEPALIVE": "Keepalive",
-		"POLLING": "Голосование",
-		"SMTP": "SMTP",
+		"POLLING": "Опрос",
+		"SMTP": "Сервер SMTP",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
+		"SELECT_NONE": "Выберите пункт None",
 		"BACK": "Назад",
-		"MAIL": "Электронная почта",
-		"ID": "Идентификатор",
-		"TIMEOUT": "Тайм-аут",
+		"MAIL": "По электронной почте",
+		"ID": "Id",
+		"TIMEOUT": "Превышение лимита времени",
 		"PASSWORD": "Пароль",
-		"NO_MAILDISPOSITION_AVAILABLE": "Диспозиции электронной почты отсутствуют",
-		"ADD_MAILDISPOSITION": "Добавить диспозицию электронной почты",
-		"NEW_MAILDISPOSITION": "Новая диспозиция электронной почты",
-		"EDIT_MAILDISPOSITION": "Редактировать диспозицию электронной почты",
-		"DELETE_MAILDISPOSITION": "Удалить диспозицию электронной почты",
-		"MAILDISPOSITIONS": "Диспозиции электронной почты",
-		"NEW_MAILQUEUE": "Новая очередь сообщений электронной почты",
+		"NO_MAILDISPOSITION_AVAILABLE": "Нет электронной почты доступны распоряжения",
+		"ADD_MAILDISPOSITION": "Добавить сообщение электронной почты распоряжения",
+		"NEW_MAILDISPOSITION": "Новая почта распоряжения",
+		"EDIT_MAILDISPOSITION": "Редактировать сообщения электронной почты распоряжения",
+		"DELETE_MAILDISPOSITION": "Удалить Mail распоряжения",
+		"MAILDISPOSITIONS": "Распоряжения электронной почты",
+		"NEW_MAILQUEUE": "Новое сообщение электронной почты в очередь",
 		"NEW_MAILACCOUNT": "Новая учетная запись электронной почты",
-		"NO_AVAILABLE_INFO": "Информация отсутствует",
-		"ALL_TEAMS": "Все команды",
-		"SELECTED_TEAMS": "Избранные команды",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"ALL_TEAMS": "Все группы",
+		"SELECTED_TEAMS": "Выбранные группы",
 		"HELP": {
-			"NAME": "Поддерживаются только цифры, буквы и специальные символы (._)",
-			"USERNAME": "Имя пользователя, используемое для аутентификации",
+			"NAME": "Только цифры, буквы и специальные символы (_) поддерживаются",
+			"USERNAME": "Имя пользователя для проверки подлинности",
 			"PASSWORD": "Пароль, используемый для аутентификации",
-			"SECURE": "Если в качестве параметра указано значение True, соединение будет использовать TLS при подключении к серверу",
+			"SECURE": "Если true соединение использовать TLS при подключении к серверу",
 			"FONT_FAMILY": "Семейство шрифтов по умолчанию",
 			"FONT_SIZE": "Размер шрифта по умолчанию",
-			"MARK_AS_UNREAD": "Включить/отключить агента, чтобы отметить последнее сообщение о взаимодействии как непрочитанное",
-			"MANDATORYDISPOSITION": "Обязательная диспозиция",
-			"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования в случае включения обязательной диспозиции"
+			"MARK_AS_UNREAD": "Включить / отключить агент для отметки как непрочитанное последнее сообщение о взаимодействии",
+			"MANDATORYDISPOSITION": "Обязательное распоряжение",
+			"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования, когда включена обязательная утилизация"
 		},
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"TEAMADD_MAILQUEUE": "Добавить команду в очередь сообщений электронной почты",
-		"AGENTADD_MAILQUEUE": "Добавить агента в очередь сообщений электронной почты",
-		"ALL_AGENTS": "Все агенты",
-		"SELECTED_AGENTS": "Выбранные агенты",
-		"AGENT": "Агент",
-		"EDIT_AGENT": "Редактировать агента",
+		"OF": "В",
+		"TEAMADD_MAILQUEUE": "Добавить группы по очереди Чат",
+		"AGENTADD_MAILQUEUE": "Добавить оператора в чат очереди",
+		"ALL_AGENTS": "Все операторы",
+		"SELECTED_AGENTS": "Выбранные операторы",
+		"AGENT": "Оператор",
+		"EDIT_AGENT": "Редактирование оператора",
 		"EDIT_CLOSE": "Редактировать Закрыть",
-		"DISPOSITION": "Диспозиция",
-		"GOTOIF": "Переход по условию / GotoIf",
-		"EDIT_GOTOIF": "Редактировать GotoIf",
-		"CONDITION": "Условие",
+		"DISPOSITION": "Отчуждения",
+		"GOTOIF": "GotoIf",
+		"EDIT_GOTOIF": "GotoIf редактировать",
+		"CONDITION": "Состояние",
 		"TRUEPRIORITY": "Истинный приоритет",
 		"FALSEPRIORITY": "Ложный приоритет",
 		"GOTOP": "GotoP",
-		"EDIT_GOTOP": "Редактировать GotoP",
+		"EDIT_GOTOP": "GotoP редактировать",
 		"PRIORITY": "Приоритет",
-		"NOOP": "Noop",
-		"EDIT_NOOP": "Редактировать Noop",
+		"NOOP": "Нооп",
+		"EDIT_NOOP": "Редактировать Noop",
 		"VALUE": "Значение",
-		"QUEUE": "Очередь",
-		"EDIT_QUEUE": "Редактировать очередь",
-		"INTERACTIONS": "Взаимодействия",
-		"STARTEDAT": "Начато в",
-		"CONTACT": "Контакт",
-		"CLOSEDAT": "Закрыто в",
+		"QUEUE": "Очереди",
+		"EDIT_QUEUE": "Редактирование очереди",
+		"INTERACTIONS": "Взаимодействие",
+		"STARTEDAT": "Началась в",
+		"CONTACT": "Контакты",
+		"CLOSEDAT": "Закрыт",
 		"NOTES": "Примечания",
-		"NO_INTERACTION_AVAILABLE": "Взаимодействия отсутствуют",
+		"NO_INTERACTION_AVAILABLE": "Нет доступных взаимодействий",
 		"ACTIVE": "Активные",
-		"SECURE": "Безопасные",
-		"AUTHENTICATION": "Аутентификация",
-		"SMTP_HOST": "Хост SMTP",
-		"SMTP_PORT": "Порт SMTP",
-		"IMAP_HOST": "Хост IMAP",
-		"IMAP_PORT": "Порт IMAP",
-		"CONFIRM_PASSWORD": "Подтверждение пароля",
-		"SELECT_STATUS": "Выбрать статус",
+		"SECURE": "Безопасный",
+		"AUTHENTICATION": "Проверка подлинности",
+		"SMTP_HOST": "SMTP-сервер",
+		"SMTP_PORT": "Порт SMTP",
+		"IMAP_HOST": "Хост IMAP",
+		"IMAP_PORT": "Порт IMAP",
+		"CONFIRM_PASSWORD": "Подтвердите пароль",
+		"SELECT_STATUS": "Выберите состояние",
 		"OPENED": "Открыть",
-		"CLOSED": "Закрытые",
+		"CLOSED": "Закрыт",
 		"ALL": "Все",
-		"SELECT_ACCOUNT": "Выбрать учетную запись",
+		"SELECT_ACCOUNT": "Выберите учетную запись",
 		"STATUS": "Состояние",
-		"ACCOUNT": "Учетная запись",
+		"ACCOUNT": "Внимание",
 		"OPEN": "Открыть",
 		"KEY": "Ключ",
-		"SMTPSERVICE": "Сервис SMTP",
-		"UNPAUSE": "Конец паузы",
-		"DEFAULT_PAUSE": "Пауза по умолчанию",
-		"LOGOUT": "Выход",
-		"AGENTADD_QUEUE": "Добавить агента в очередь сообщений электронной почты",
+		"SMTPSERVICE": "Служба SMTP",
+		"UNPAUSE": "Конец Пауза",
+		"DEFAULT_PAUSE": "По умолчанию пауза",
+		"LOGOUT": "Выход из системы",
+		"AGENTADD_QUEUE": "Добавить агента в почтовой очереди",
 		"VOICE": "Голос",
 		"CHAT": "Чат",
-		"SMS": "SMS",
-		"OPENCHANNEL": "Открытый канал",
+		"SMS": "Sms",
+		"OPENCHANNEL": "Открыть канал",
 		"FAX": "Факс",
-		"REALTIME": "Режим реального времени",
+		"REALTIME": "В режиме реального времени",
 		"AGENTS": "Агенты",
-		"QUEUES": "Очереди",
+		"QUEUES": "Очередей",
 		"ACCOUNTS": "Учетные записи",
 		"FULLNAME": "Полное имя",
-		"INTERNAL": "Внутренний",
+		"INTERNAL": "Внутренние",
 		"PHONE_STATE": "Состояние телефона",
-		"PHONE_STATUS": "Статус телефона",
+		"PHONE_STATUS": "Состояние телефона",
 		"PAUSE": "Пауза",
-		"LOGGED_IN": "Зарегистрирован в системе",
-		"PAUSED": "Поставлен на паузу",
+		"LOGGED_IN": "Вход в систему",
+		"PAUSED": "Приостановлено",
 		"READY": "Готов",
-		"WAITING": "Ожидание",
-		"TOTAL": "Всего",
-		"IN": "In",
-		"OUT": "Out",
-		"IMAP_STATUS": "Статус IMAP",
-		"SMTP_STATUS": "Статус SMTP",
-		"DISABLED": "Отключено",
-		"CONNECTED": "Соединение установлено",
-		"NEVER_VERIFIED": "Не проверено",
+		"WAITING": "Свободные",
+		"TOTAL": "Итого",
+		"IN": "В",
+		"OUT": "Вне",
+		"IMAP_STATUS": "Статус IMAP",
+		"SMTP_STATUS": "Состояние SMTP",
+		"DISABLED": "Disabled (Отключено)",
+		"CONNECTED": "Подключено",
+		"NEVER_VERIFIED": "Ни в коем случае не проверены",
 		"ERROR": "Ошибка",
 		"EDIT_ACCOUNT": "Редактировать учетную запись",
-		"VERIFY_SMTP": "Проверка SMTP",
+		"VERIFY_SMTP": "Убедитесь в том, что SMTP",
 		"VERIFIED": "Проверено",
-		"VERIFYSMTP_MAILACCOUNT": "Проверка SMTP",
-		"GOTOREALTIME_MAILACCOUNT": "Перейти к учетной записи электронной почты в режиме реального времени",
-		"GOTO_MAILACCOUNT": "Перейти к учетной записи электронной почты в режиме реального времени",
+		"VERIFYSMTP_MAILACCOUNT": "Убедитесь в том, что SMTP",
+		"GOTOREALTIME_MAILACCOUNT": "Перейдите к в реальном масштабе времени почтовой учетной записи",
+		"GOTO_MAILACCOUNT": "Перейдите к в реальном масштабе времени почтовой учетной записи",
 		"UNKNOWN": "Неизвестно",
-		"UNREGISTERED": "Не зарегистрирован",
-		"UNAVAILABLE": "Отсутствует",
-		"NOT_INUSE": "Не используется",
-		"REACHABLE": "Достижимые",
-		"IN_USE": "Используется",
-		"AGENTSADD_QUEUE": "Добавить агентов в очередь сообщений электронной почты",
-		"INFO": "Информация",
-		"NO_AGENT_ONLINE": "Агент отсутствует онлайн",
-		"GOTOREALTIME_MAILQUEUE": "Перейти к очереди сообщений электронной почты в реальном времени",
-		"PARTIALPAUSE": "Частичная пауза",
-		"BUSY": "Линия занята",
+		"UNREGISTERED": "Незарегистрированный",
+		"UNAVAILABLE": "Недоступен",
+		"NOT_INUSE": "Не используется",
+		"REACHABLE": "Добраться",
+		"IN_USE": "В использовании",
+		"AGENTSADD_QUEUE": "Добавить операторов в почтовой очереди",
+		"INFO": "Инфо",
+		"NO_AGENT_ONLINE": "Ни один оператор На Сайте",
+		"GOTOREALTIME_MAILQUEUE": "Перейдите к в реальном масштабе времени почтовой очереди",
+		"PARTIALPAUSE": "Parital Пауза",
+		"BUSY": "Занят",
 		"TIMER": "Таймер",
-		"IDLE": "Линия свободна",
+		"IDLE": "Обороты холостого хода",
 		"CAPACITY": "Емкость",
-		"SPYINTERACTION": "Шпион",
+		"SPYINTERACTION": "Spy",
 		"ADD_NOTE": "Добавить примечание",
-		"NOTE": "Примечание",
-		"TAGS": "Теги",
-		"INTERACTIONS_MAILACCOUNT": "Перейти к взаимодействиям",
-		"REFRESH_INTERACTIONS": "Обновить взаимодействия",
-		"PENDING": "Ожидание",
-		"SEND_AS_PENDING": "Отложенная отправка",
-		"SEND_AND_CLOSE": "Отправить и закрыть",
-		"CANNED_ANSWER_NOT_FOUND": "Готовые ответы не найдены",
-		"CANNED_ANSWER_SEARCH": "Ввести текст для поиска готового ответа",
-		"NO_MAILCANNEDANSWER_AVAILABLE": "Заранее определенные ответы отсутствуют",
-		"NEW_MAILCANNEDANSWER": "Новый заранее определенный ответ",
-		"ADD_MAILCANNEDANSWER": "Добавить заранее определенный ответ",
-		"EDIT_MAILCANNEDANSWER": "Редактировать заранее определенный ответ",
-		"DELETE_MAILCANNEDANSWER": "Удалить заранее определенный ответ",
-		"SHOW_ORIGINAL_MESSAGE": "Показать оригинальное сообщение",
+		"NOTE": "Примечание.",
+		"TAGS": "Tags",
+		"INTERACTIONS_MAILACCOUNT": "Перейти к взаимодействию",
+		"REFRESH_INTERACTIONS": "Обновить взаимодействий",
+		"PENDING": "В ожидании",
+		"SEND_AS_PENDING": "Отправить как до",
+		"SEND_AND_CLOSE": "Отправить и закрыть",
+		"CANNED_ANSWER_NOT_FOUND": "Нет консервов ответы были найдены",
+		"CANNED_ANSWER_SEARCH": "Введите текст для поиска ответа на консервы",
+		"NO_MAILCANNEDANSWER_AVAILABLE": "Нет готовых ответов",
+		"NEW_MAILCANNEDANSWER": "Новый Консервированный Ответ",
+		"ADD_MAILCANNEDANSWER": "Добавить консервированный ответ",
+		"EDIT_MAILCANNEDANSWER": "редактировать",
+		"DELETE_MAILCANNEDANSWER": "Удалить",
+		"SHOW_ORIGINAL_MESSAGE": "Показать исходное сообщение",
 		"DELETE_INTERACTION": "Удалить взаимодействие",
-		"ACCEPTED": "Принятый",
+		"ACCEPTED": "Принято",
 		"FONT_FAMILY": "Семейство шрифтов",
 		"FONT_SIZE": "Размер шрифта",
 		"MARK_AS_UNREAD": "Отметить как непрочитанное",
-		"ADD_MAILSUBSTATUS": "Добавить подстатус",
+		"ADD_MAILSUBSTATUS": "Добавить дополнительный статус",
 		"DELETE_MAILSUBSTATUS": "Удалить",
-		"EDIT_MAILSUBSTATUS": "Редактировать",
-		"MAILSUBSTATUSES": "Подстатусы электронной почты",
-		"NEW_MAILSUBSTATUS": "Новый подстатус",
+		"EDIT_MAILSUBSTATUS": "редактировать",
+		"MAILSUBSTATUSES": "Подкатегории электронной почты",
+		"NEW_MAILSUBSTATUS": "Новый подчиненный статус",
 		"SEND_AS": "Отправить как",
-		"COMMAND": "Команда",
-		"EDIT_SYSTEM": "Редактировать систему",
-		"SYSTEM": "Система",
-		"VARIABLE": "Переменная",
-		"NOTIFICATION": "Уведомление",
-		"NOTIFICATIONSHAKE": "Shake",
-		"NOTIFICATIONSOUND": "Звук",
-		"NOTIFICATIONTEMPLATE": "Шаблон",
-		"WAITFORTHEASSIGNEDAGENT": "Ожидание ответа назначенного агента",
-		"EDIT_TAG": "Редактирование тега",
+		"COMMAND": "команда",
+		"EDIT_SYSTEM": "Изменить систему",
+		"SYSTEM": "система",
+		"VARIABLE": "переменная",
+		"NOTIFICATION": "уведомление",
+		"NOTIFICATIONSHAKE": "Встряска",
+		"NOTIFICATIONSOUND": "звук",
+		"NOTIFICATIONTEMPLATE": "шаблон",
+		"WAITFORTHEASSIGNEDAGENT": "Подождите, пока назначенный агент",
+		"EDIT_TAG": "Изменить тег",
 		"TAG": "Тег",
-		"AGENTTRANSFER": "Передача агенту",
-		"AGENTTRANSFERTIMEOUT": "Тайм-аут передачи агенту",
-		"QUEUETRANSFER": "Передача в очередь",
-		"QUEUETRANSFERTIMEOUT": "Тайм-аут передачи в очередь",
-		"TRANSFER": "Перевод вызова",
-		"AGENTADD_MAILACCOUNT": "Добавить агента к учетной записи электронной почты",
+		"AGENTTRANSFER": "Передача агента",
+		"AGENTTRANSFERTIMEOUT": "Тайм-аут передачи агента",
+		"QUEUETRANSFER": "Передача очереди",
+		"QUEUETRANSFERTIMEOUT": "Тайм-аут передачи очереди",
+		"TRANSFER": "Перевод",
+		"AGENTADD_MAILACCOUNT": "Добавить агента в почтовый аккаунт",
 		"YOU_ARE_REGISTERED_AS_A": "Вы зарегистрированы как",
-		"CANNEDANSWERS": "Заранее определенные ответы",
+		"CANNEDANSWERS": "Консервированные ответы",
 		"DOWNLOAD_INTERACTION": "Скачать",
-		"MAILCANNEDANSWERS": "Заранее определенные ответы",
-		"LOGIN_TIME": "Время входа в систему",
+		"MAILCANNEDANSWERS": "Консервированные ответы",
+		"LOGIN_TIME": "Время входа",
 		"PAUSE_TIME": "Время паузы",
 		"DOWNLOAD": "Скачать",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Скачать без вложений",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Скачать с вложениями",
+		"DOWNLOAD_WITH_ATTACHMENTS": "Скачать с вложениями",
 		"TEAMS_ASSOCIATION": "Ассоциация команд",
-		"MANDATORYDISPOSITION": "Обязательная диспозиция",
-		"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования в случае включения обязательной диспозиции",
-		"ADVANCED": "Продвинутый",
-		"TOOLTIP_SCREENRECORDING_OFF": "Доступна запись с экрана",
-		"TOOLTIP_SCREENRECORDING_ON": "Идет запись с экрана",
-		"DOWNLOAD_WITHOUT_ATTACHMENT": "Скачать без вложений",
-		"DOWNLOAD_WITH_ATTACHMENT": "Скачать с вложениями",
+		"MANDATORYDISPOSITION": "Обязательное распоряжение",
+		"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования, если включена обязательная утилизация",
+		"ADVANCED": "продвинутый",
+		"TOOLTIP_SCREENRECORDING_OFF": "Запись экрана доступна",
+		"TOOLTIP_SCREENRECORDING_ON": "Идет запись экрана",
+		"DOWNLOAD_WITHOUT_ATTACHMENT": "Скачать без вложения",
+		"DOWNLOAD_WITH_ATTACHMENT": "Скачать с приложением",
 		"LASTMESSAGE": "Последнее сообщение"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/marketplace/i18n/ru.json b/public/app/main/apps/marketplace/i18n/ru.json
index c3ade78..ad2ae1f 100644
--- a/public/app/main/apps/marketplace/i18n/ru.json
+++ b/public/app/main/apps/marketplace/i18n/ru.json
@@ -4,47 +4,47 @@
 			"URL_REQUIRED": "Обязательное поле"
 		},
 		"HELP": {},
-		"ACTIVE": "Активные",
+		"ACTIVE": "активный",
 		"ADMINURL": "URL-адрес администратора",
 		"AGENTURL": "URL-адрес агента",
-		"BACK": "Назад",
+		"BACK": "назад",
 		"CANCEL": "Отмена",
-		"CREATED_AT": "Создано в",
+		"CREATED_AT": "Создан в",
 		"DELETE": "Удалить",
 		"DELETE_PLUGIN": "Удалить плагин",
 		"DESCRIPTION": "Описание",
 		"DOWNLOAD_PLUGIN": "Скачать плагин",
-		"DROP_TO_UPLOAD": "Перетащить для загрузки",
-		"DROP_TO_UPLOAD_MESSAGE": "Перетащите ваш файл сюда для загрузки. Только файлы ZIP – макс. 2MB",
-		"EDITOR": "Редактор",
-		"EDIT_PLUGIN": "Редактировать плагин",
-		"FINISH": "Завершить",
-		"GENERAL": "Общие",
+		"DROP_TO_UPLOAD": "Загрузить",
+		"DROP_TO_UPLOAD_MESSAGE": "Отбросьте свой файл здесь, чтобы загрузить его. Только ZIP - Макс. 2MB",
+		"EDITOR": "редактор",
+		"EDIT_PLUGIN": "Изменить плагин",
+		"FINISH": "Конец",
+		"GENERAL": "Генеральная",
 		"ICON": "Значок",
 		"INSTALLING": "Установка",
 		"INSTALL_PLUGIN": "Установить плагин",
-		"MARKETPLACE": "Зона приложений",
+		"MARKETPLACE": "App Zone",
 		"MORE": "Больше",
-		"NAME": "Имя",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
+		"NAME": "имя",
+		"NO_AVAILABLE_INFO": "Нет информации",
 		"OF": "из",
-		"PAGE": "Страница",
+		"PAGE": "страница",
 		"PLUGINS": "Плагины",
 		"RESTART_PLUGIN": "Перезапустить плагин",
-		"ROWSPERPAGE": "Строк на странице",
+		"ROWSPERPAGE": "Строки на страницу",
 		"SAVE": "Сохранить",
 		"SCRIPTNAME": "Имя скрипта",
-		"SCRIPTPATH": "Путь к скрипту",
+		"SCRIPTPATH": "Путь скрипта",
 		"SEARCH_FOR_ANYONE": "Поиск",
-		"SELECTED": "Выбранные",
+		"SELECTED": "выбранный",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
-		"SETTINGS": "Настройки",
+		"SELECT_NONE": "Выберите ни одного",
+		"SETTINGS": "настройки",
 		"SIDEBAR": "Боковая панель",
 		"STOP_PLUGIN": "Остановить плагин",
 		"TYPE": "Тип",
-		"UNINSTALL_PLUGIN": "Деинсталлировать плагин",
-		"UPLOADING": "Загрузка",
+		"UNINSTALL_PLUGIN": "Удалить плагин",
+		"UPLOADING": "Выгрузка",
 		"UPLOAD_PLUGIN": "Загрузить плагин",
 		"VERSION": "Версия"
 	}
diff --git a/public/app/main/apps/motiondialer/i18n/ar.json b/public/app/main/apps/motiondialer/i18n/ar.json
index afd00c2..334e915 100644
--- a/public/app/main/apps/motiondialer/i18n/ar.json
+++ b/public/app/main/apps/motiondialer/i18n/ar.json
@@ -94,7 +94,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "حقل الزامي",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "حقل الزامي",
 			"CALLYSQUAREPROJECT_REQUIRED": "حقل الزامي",
-			"TRUNK_REQUIRED": "حقل الزامي"
+			"TRUNK_REQUIRED": "حقل الزامي",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أقل من أو تساوي"
 		},
 		"HELP": {
 			"ACTIVE": "نشيط",
@@ -192,7 +202,8 @@
 			"MACHINEMAXRETRY": "الحد الأقصى لعدد المرات التي يتم فيها الاتصال بجهة الاتصال قبل اعتبارها مغلقة ، عند فشل المكالمة في الجهاز",
 			"MACHINERETRYTIME": "الوقت في دقائق قبل محاولة الاتصال مرة أخرى جهة اتصال فاشلة بسبب الجهاز",
 			"NOSUCHNUMBERETRYTIME": "الوقت في دقائق قبل محاولة الاتصال مرة أخرى جهة اتصال فاشلة بسبب عدم وجود هذا الرقم",
-			"NOSUCHNUMBERMAXRETRY": "الحد الأقصى لعدد المرات التي يتم فيها الاتصال بجهة الاتصال قبل اعتبارها مغلقة ، عندما فشلت المكالمة لأي رقم من هذا القبيل"
+			"NOSUCHNUMBERMAXRETRY": "الحد الأقصى لعدد المرات التي يتم فيها الاتصال بجهة الاتصال قبل اعتبارها مغلقة ، عندما فشلت المكالمة لأي رقم من هذا القبيل",
+			"NOSUCHNUMBERRETRYTIME": "الوقت بالدقائق قبل محاولة الاتصال مرة أخرى بجهة اتصال فاشلة بسبب عدم وجود مثل هذا الرقم"
 		},
 		"ABANDONED": "المتروكة",
 		"ADD_IVRCAMPAIGN": "إضافه حمله الرد التفاعلى الآلى",
diff --git a/public/app/main/apps/motiondialer/i18n/cs.json b/public/app/main/apps/motiondialer/i18n/cs.json
index e455ca6..473fa24 100644
--- a/public/app/main/apps/motiondialer/i18n/cs.json
+++ b/public/app/main/apps/motiondialer/i18n/cs.json
@@ -219,7 +219,27 @@
 			"AGENT_REQUIRED": "Povinné pole",
 			"CALLYSQUAREPROJECT_REQUIRED": "Povinné pole",
 			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Povinné pole",
-			"TRUNK_REQUIRED": "Povinné pole"
+			"TRUNK_REQUIRED": "Povinné pole",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
+			"ABANDONEDMAXRETRY_REQUIRED": "Povinné pole",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
+			"ABANDONEDRETRYTIME_REQUIRED": "Povinné pole",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
+			"AGENTREJECTMAXRETRY_REQUIRED": "Povinné pole",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
+			"AGENTREJECTRETRYTIME_REQUIRED": "Povinné pole",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
+			"DROPMAXRETRY_REQUIRED": "Povinné pole",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
+			"DROPRETRYTIME_REQUIRED": "Povinné pole",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
+			"MACHINEMAXRETRY_REQUIRED": "Povinné pole",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
+			"MACHINERETRYTIME_REQUIRED": "Povinné pole",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
+			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Povinné pole",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Hodnota musí být menší nebo rovna",
+			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Povinné pole"
 		},
 		"GENERAL": "General",
 		"AGENTTIMEOUT": "Agent Timeout",
@@ -315,7 +335,17 @@
 			"NAME": "Only numbers, letters and specific characters (._) are supported",
 			"MANDATORYDISPOSITIONPAUSEID": "Pozastavte stav, který chcete nastavit během povinné dispozice",
 			"PREDICTIVEMAXTHRESHOLD": "Pokud procento agentů dostupných v časovém okně ve srovnání s agenty dostupnými v době predikce překročí nakonfigurovaný maximální limit, prediktivní přepočítá predikci.",
-			"PREDICTIVEMINTHRESHOLD": "Pokud procento agentů dostupných v časovém okně ve srovnání s agenty dostupnými v době predikce překročí nakonfigurovaný minimální limit, prediktivní přepočítá predikci."
+			"PREDICTIVEMINTHRESHOLD": "Pokud procento agentů dostupných v časovém okně ve srovnání s agenty dostupnými v době predikce překročí nakonfigurovaný minimální limit, prediktivní přepočítá predikci.",
+			"ABANDONEDMAXRETRY": "Maximální počet volání kontaktu, než se považuje za uzavřený, když volání selhalo kvůli opuštění",
+			"ABANDONEDRETRYTIME": "Čas v minutách před pokusem o opětovné volání neúspěšného kontaktu kvůli opuštění",
+			"AGENTREJECTMAXRETRY": "Maximální počet volání kontaktu, než se považuje za uzavřený, když volání selhalo pro odmítnutí agenta",
+			"AGENTREJECTRETRYTIME": "Čas v minutách před pokusem o opětovné volání neúspěšného kontaktu kvůli odmítnutí agenta",
+			"DROPMAXRETRY": "Maximální počet volání kontaktu, než se považuje za uzavřený, když se hovor nepodařilo zrušit",
+			"DROPRETRYTIME": "Čas v minutách, než se pokusíte znovu zavolat neúspěšnému kontaktu kvůli pádu",
+			"MACHINEMAXRETRY": "Maximální počet volání kontaktu, než se považuje za uzavřený, když se volání nezdařilo pro stroj",
+			"MACHINERETRYTIME": "Čas v minutách před pokusem o opětovné volání neúspěšného kontaktu kvůli zařízení",
+			"NOSUCHNUMBERMAXRETRY": "Maximální počet volání kontaktu, než se považuje za uzavřený, když volání selhalo pro žádné takové číslo",
+			"NOSUCHNUMBERRETRYTIME": "Čas v minutách před pokusem o opětovné volání neúspěšného kontaktu z důvodu neexistence takového čísla"
 		},
 		"MUSICONHOLD": "Music On Hold",
 		"ANNOUNCETOAGENT": "Announce To Agent",
@@ -640,6 +670,20 @@
 		"THRESHOLDS": "Prahové hodnoty",
 		"TOOLTIP_SCREENRECORDING_OFF": "K dispozici je nahrávání obrazovky",
 		"TOOLTIP_SCREENRECORDING_ON": "Probíhá nahrávání obrazovky",
-		"TOTAL_CALLS": "Celkový počet volání"
+		"TOTAL_CALLS": "Celkový počet volání",
+		"ABANDONEDMAXRETRY": "Max",
+		"ABANDONEDRETRYTIME": "Čas opakování [min]",
+		"AGENTREJECT": "Agent odmítnout",
+		"AGENTREJECTMAXRETRY": "Max",
+		"AGENTREJECTRETRYTIME": "Čas opakování [min]",
+		"DROP": "Upustit",
+		"DROPMAXRETRY": "Max",
+		"DROPRETRYTIME": "Čas opakování [min]",
+		"MACHINE": "Stroj",
+		"MACHINEMAXRETRY": "Max",
+		"MACHINERETRYTIME": "Čas opakování [min]",
+		"NOSUCHNUMBER": "Žádné takové číslo",
+		"NOSUCHNUMBERMAXRETRY": "Max",
+		"NOSUCHNUMBERRETRYTIME": "Čas opakování [min]"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/motiondialer/i18n/da.json b/public/app/main/apps/motiondialer/i18n/da.json
index 3281d91..381afe5 100644
--- a/public/app/main/apps/motiondialer/i18n/da.json
+++ b/public/app/main/apps/motiondialer/i18n/da.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Obligatorisk felt",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Obligatorisk felt",
 			"CALLYSQUAREPROJECT_REQUIRED": "Obligatorisk felt",
-			"TRUNK_REQUIRED": "Obligatorisk felt"
+			"TRUNK_REQUIRED": "Obligatorisk felt",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Værdien skal være mindre end eller lig med"
 		},
 		"GENERAL": "Generel",
 		"AGENTTIMEOUT": "Agent Timeout",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "Maksimalt antal gange, der ringer til en kontakt, før den overvejer at være lukket, når opkaldet mislykkedes for maskinen",
 			"MACHINERETRYTIME": "Tid i minutter, før du forsøger at ringe igen en mislykket kontakt på grund af maskinen",
 			"NOSUCHNUMBERETRYTIME": "Tid i minutter, før du forsøger at ringe igen en mislykket kontakt på grund af intet sådant nummer",
-			"NOSUCHNUMBERMAXRETRY": "Maksimalt antal gange, der ringes til en kontakt, inden den overvejer at være lukket, når opkaldet mislykkedes uden noget sådant nummer"
+			"NOSUCHNUMBERMAXRETRY": "Maksimalt antal gange, der ringes til en kontakt, inden den overvejer at være lukket, når opkaldet mislykkedes uden noget sådant nummer",
+			"NOSUCHNUMBERRETRYTIME": "Tid i minutter, før du prøver at ringe til en mislykket kontakt på grund af intet sådant nummer"
 		},
 		"MUSICONHOLD": "Musik ved parkeret opkald",
 		"ANNOUNCETOAGENT": "Annoncere til agent",
diff --git a/public/app/main/apps/motiondialer/i18n/de.json b/public/app/main/apps/motiondialer/i18n/de.json
index df1fe29..86bab22 100644
--- a/public/app/main/apps/motiondialer/i18n/de.json
+++ b/public/app/main/apps/motiondialer/i18n/de.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Pflichtfeld",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Pflichtfeld",
 			"CALLYSQUAREPROJECT_REQUIRED": "Pflichtfeld",
-			"TRUNK_REQUIRED": "Pflichtfeld"
+			"TRUNK_REQUIRED": "Pflichtfeld",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Der Wert muss kleiner oder gleich sein"
 		},
 		"GENERAL": "Allgemein",
 		"AGENTTIMEOUT": "Agent Timeout",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf für die Maschine fehlgeschlagen ist",
 			"MACHINERETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt aufgrund der Maschine erneut anzurufen",
 			"NOSUCHNUMBERETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt erneut anzurufen, da keine solche Nummer vorhanden ist",
-			"NOSUCHNUMBERMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf für keine solche Nummer fehlgeschlagen ist"
+			"NOSUCHNUMBERMAXRETRY": "Maximale Häufigkeit, mit der ein Kontakt angerufen wird, bevor er als geschlossen betrachtet wird, wenn der Anruf für keine solche Nummer fehlgeschlagen ist",
+			"NOSUCHNUMBERRETRYTIME": "Zeit in Minuten, bevor versucht wird, einen fehlgeschlagenen Kontakt erneut anzurufen, da keine solche Nummer vorhanden ist"
 		},
 		"MUSICONHOLD": "Musik auf Halten",
 		"ANNOUNCETOAGENT": "Verkünden auf Agenten",
diff --git a/public/app/main/apps/motiondialer/i18n/en.json b/public/app/main/apps/motiondialer/i18n/en.json
index 9949432..8fa9367 100644
--- a/public/app/main/apps/motiondialer/i18n/en.json
+++ b/public/app/main/apps/motiondialer/i18n/en.json
@@ -265,7 +265,7 @@
 			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
 			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
 			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-            "ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
 			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
 			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
 			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
diff --git a/public/app/main/apps/motiondialer/i18n/es.json b/public/app/main/apps/motiondialer/i18n/es.json
index 88520e8..3209618 100644
--- a/public/app/main/apps/motiondialer/i18n/es.json
+++ b/public/app/main/apps/motiondialer/i18n/es.json
@@ -99,7 +99,8 @@
 			"MACHINEMAXRETRY": "Número máximo de veces que se llama a un contacto antes de considerarlo cerrado, cuando la llamada falló para la máquina",
 			"MACHINERETRYTIME": "Tiempo en minutos antes de intentar volver a llamar a un contacto fallido debido a la máquina",
 			"NOSUCHNUMBERETRYTIME": "Tiempo en minutos antes de intentar volver a llamar a un contacto fallido debido a que no existe ese número",
-			"NOSUCHNUMBERMAXRETRY": "Número máximo de veces que se llama a un contacto antes de considerarlo cerrado, cuando la llamada falló por dicho número"
+			"NOSUCHNUMBERMAXRETRY": "Número máximo de veces que se llama a un contacto antes de considerarlo cerrado, cuando la llamada falló por dicho número",
+			"NOSUCHNUMBERRETRYTIME": "Tiempo en minutos antes de intentar llamar de nuevo a un contacto fallido debido a que no existe dicho número"
 		},
 		"ERRORS": {
 			"AFTERCALLWORKDURATION_REQUIRED": "Campo obligatorio",
@@ -192,7 +193,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Campo obligatorio",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Campo obligatorio",
 			"CALLYSQUAREPROJECT_REQUIRED": "Campo obligatorio",
-			"TRUNK_REQUIRED": "Campo obligatorio"
+			"TRUNK_REQUIRED": "Campo obligatorio",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "El valor debe ser menor o igual que"
 		},
 		"ABANDONED": "Abandonado",
 		"ABANDONEDCALLS": "Llamadas de cola abandonadas",
diff --git a/public/app/main/apps/motiondialer/i18n/et.json b/public/app/main/apps/motiondialer/i18n/et.json
index af8c9cf..8849a16 100644
--- a/public/app/main/apps/motiondialer/i18n/et.json
+++ b/public/app/main/apps/motiondialer/i18n/et.json
@@ -219,7 +219,27 @@
 			"AGENT_REQUIRED": "Kohustuslik väli",
 			"CALLYSQUAREPROJECT_REQUIRED": "Kohustuslik väli",
 			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Kohustuslik väli",
-			"TRUNK_REQUIRED": "Kohustuslik väli"
+			"TRUNK_REQUIRED": "Kohustuslik väli",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+			"ABANDONEDMAXRETRY_REQUIRED": "Kohustuslik väli",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+			"ABANDONEDRETRYTIME_REQUIRED": "Kohustuslik väli",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+			"AGENTREJECTMAXRETRY_REQUIRED": "Kohustuslik väli",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+			"AGENTREJECTRETRYTIME_REQUIRED": "Kohustuslik väli",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+			"DROPMAXRETRY_REQUIRED": "Kohustuslik väli",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+			"DROPRETRYTIME_REQUIRED": "Kohustuslik väli",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+			"MACHINEMAXRETRY_REQUIRED": "Kohustuslik väli",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+			"MACHINERETRYTIME_REQUIRED": "Kohustuslik väli",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Kohustuslik väli",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Väärtus peab olema väiksem või võrdne",
+			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Kohustuslik väli"
 		},
 		"GENERAL": "General",
 		"AGENTTIMEOUT": "Agent Timeout",
@@ -315,7 +335,17 @@
 			"NAME": "Only numbers, letters and specific characters (._) are supported",
 			"MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
 			"PREDICTIVEMAXTHRESHOLD": "Kui ajaaknas saadaolevate agensite protsent ületab ennustamise ajal saadaolevate agendite protsent konfigureeritud maksimaalset piiri, arvutab ennustaja ennustuse uuesti.",
-			"PREDICTIVEMINTHRESHOLD": "Kui ajaaknas saadaolevate esindajate protsent ületab ennustamise ajal saadaolevate agendite protsenti konfigureeritud miinimumpiirist, arvutab ennustaja ennustuse uuesti."
+			"PREDICTIVEMINTHRESHOLD": "Kui ajaaknas saadaolevate esindajate protsent ületab ennustamise ajal saadaolevate agendite protsenti konfigureeritud miinimumpiirist, arvutab ennustaja ennustuse uuesti.",
+			"ABANDONEDMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne ei õnnestunud loobuda",
+			"ABANDONEDRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile loobumise tõttu",
+			"AGENTREJECTMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne nurjus agendi tagasilükkamise korral",
+			"AGENTREJECTRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada ebaõnnestunud kontaktile agendi tagasilükkamise tõttu",
+			"DROPMAXRETRY": "Maksimaalne kordade arv, mil kontaktile helistatakse enne selle lõpetatuks lugemist, kui kõne katkestamine ebaõnnestus",
+			"DROPRETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjumise tõttu ebaõnnestunud kontaktile",
+			"MACHINEMAXRETRY": "Maksimaalne kordade arv kontaktile enne sulgemise pidamist, kui kõne masinale nurjus",
+			"MACHINERETRYTIME": "Aeg minutites, enne kui proovite uuesti helistada nurjunud kontaktile masina tõttu",
+			"NOSUCHNUMBERMAXRETRY": "Maksimaalne kordade arv, millal kontaktile helistati enne selle lõpetatuks lugemist, kui kõne nurjus sellise numbri puudumisel",
+			"NOSUCHNUMBERRETRYTIME": "Aega minutites, enne kui proovite uuesti helistada nurjunud kontaktile, kuna sellist numbrit pole"
 		},
 		"MUSICONHOLD": "Music On Hold",
 		"ANNOUNCETOAGENT": "Announce To Agent",
@@ -640,6 +670,20 @@
 		"THRESHOLDS": "Künnised",
 		"TOOLTIP_SCREENRECORDING_OFF": "Ekraanisalvestus on saadaval",
 		"TOOLTIP_SCREENRECORDING_ON": "Ekraanisalvestus pooleli",
-		"TOTAL_CALLS": "Kõnesid kokku"
+		"TOTAL_CALLS": "Kõnesid kokku",
+		"ABANDONEDMAXRETRY": "Max proovib uuesti",
+		"ABANDONEDRETRYTIME": "Uuesti proovimise aeg [min]",
+		"AGENTREJECT": "Agent Keeldu",
+		"AGENTREJECTMAXRETRY": "Max proovib uuesti",
+		"AGENTREJECTRETRYTIME": "Uuesti proovimise aeg [min]",
+		"DROP": "Tilk",
+		"DROPMAXRETRY": "Max proovib uuesti",
+		"DROPRETRYTIME": "Uuesti proovimise aeg [min]",
+		"MACHINE": "Masin",
+		"MACHINEMAXRETRY": "Max proovib uuesti",
+		"MACHINERETRYTIME": "Uuesti proovimise aeg [min]",
+		"NOSUCHNUMBER": "Sellist numbrit pole",
+		"NOSUCHNUMBERMAXRETRY": "Max proovib uuesti",
+		"NOSUCHNUMBERRETRYTIME": "Uuesti proovimise aeg [min]"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/motiondialer/i18n/fa.json b/public/app/main/apps/motiondialer/i18n/fa.json
index 09f72af..10a8e2e 100644
--- a/public/app/main/apps/motiondialer/i18n/fa.json
+++ b/public/app/main/apps/motiondialer/i18n/fa.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "زمینه اجباری",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "زمینه اجباری",
 			"CALLYSQUAREPROJECT_REQUIRED": "زمینه اجباری",
-			"TRUNK_REQUIRED": "زمینه اجباری"
+			"TRUNK_REQUIRED": "زمینه اجباری",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "مقدار باید کمتر یا برابر باشد"
 		},
 		"GENERAL": "سردار",
 		"AGENTTIMEOUT": "عامل زمان مجاز",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "حداکثر تعداد تماس با ما تماس گرفته می شود قبل از بسته شدن آن ، هنگامی که تماس برای دستگاه قطع شد",
 			"MACHINERETRYTIME": "دقایقی قبل از تلاش برای تماس مجدد با شما به دلیل دستگاه تماس برقرار نشد",
 			"NOSUCHNUMBERETRYTIME": "دقایقی قبل از تلاش برای تماس مجدد با شما تماس ناموفق بخاطر وجود چنین شماره ای",
-			"NOSUCHNUMBERMAXRETRY": "حداکثر تعداد تماس با شما قبل از بسته شدن تماس گرفته می شود ، در صورت عدم موفقیت در چنین شماره ای"
+			"NOSUCHNUMBERMAXRETRY": "حداکثر تعداد تماس با شما قبل از بسته شدن تماس گرفته می شود ، در صورت عدم موفقیت در چنین شماره ای",
+			"NOSUCHNUMBERRETRYTIME": "چند دقیقه قبل از تلاش برای تماس مجدد با یک تماس ناموفق به دلیل نداشتن چنین شماره ای زمان بگذارید"
 		},
 		"MUSICONHOLD": "موسيقي را نگه دارید",
 		"ANNOUNCETOAGENT": "عامل را اعلام می کند",
diff --git a/public/app/main/apps/motiondialer/i18n/fi.json b/public/app/main/apps/motiondialer/i18n/fi.json
index 648fcd0..c8010e5 100644
--- a/public/app/main/apps/motiondialer/i18n/fi.json
+++ b/public/app/main/apps/motiondialer/i18n/fi.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Pakollinen kenttä",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Pakollinen kenttä",
 			"CALLYSQUAREPROJECT_REQUIRED": "Pakollinen kenttä",
-			"TRUNK_REQUIRED": "Pakollinen kenttä"
+			"TRUNK_REQUIRED": "Pakollinen kenttä",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Arvon on oltava pienempi tai yhtä suuri kuin"
 		},
 		"GENERAL": "Yleistä",
 		"AGENTTIMEOUT": "Agentti aikakatkaisu",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "Enimmäiskertojen lukumäärä, johon yhteyshenkilöön soitetaan, ennen kuin harkitaan sen sulkeutumista, kun koneen puhelu epäonnistui",
 			"MACHINERETRYTIME": "Aika minuutteina ennen kuin yrität soittaa uudestaan epäonnistuneelle konetalle koneesta johtuen",
 			"NOSUCHNUMBERETRYTIME": "Aika minuutteina ennen kuin yrität soittaa uudelleen epäonnistuneelle yhteyshenkilölle, koska sellaista numeroa ei ole",
-			"NOSUCHNUMBERMAXRETRY": "Enimmäiskertojen lukumäärä, johon yhteyshenkilöön on soitettu, ennen kuin harkitaan sen sulkeutumista, kun puhelu epäonnistui ilman tällaista numeroa"
+			"NOSUCHNUMBERMAXRETRY": "Enimmäiskertojen lukumäärä, johon yhteyshenkilöön on soitettu, ennen kuin harkitaan sen sulkeutumista, kun puhelu epäonnistui ilman tällaista numeroa",
+			"NOSUCHNUMBERRETRYTIME": "Aika minuutteina ennen kuin yrität soittaa uudelleen epäonnistuneelle yhteyshenkilölle, koska tällaista numeroa ei ole"
 		},
 		"MUSICONHOLD": "Musiikkia puhelun ollessa pidossa",
 		"ANNOUNCETOAGENT": "Ilmoittaa Agent",
diff --git a/public/app/main/apps/motiondialer/i18n/fr.json b/public/app/main/apps/motiondialer/i18n/fr.json
index 923d4db..035dd4e 100644
--- a/public/app/main/apps/motiondialer/i18n/fr.json
+++ b/public/app/main/apps/motiondialer/i18n/fr.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Champ obligatoire",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Champ obligatoire",
 			"CALLYSQUAREPROJECT_REQUIRED": "Champ obligatoire",
-			"TRUNK_REQUIRED": "Champ obligatoire"
+			"TRUNK_REQUIRED": "Champ obligatoire",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "La valeur doit être inférieure ou égale à"
 		},
 		"GENERAL": "Général",
 		"AGENTTIMEOUT": "Délai d'agent",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "Nombre maximal de fois qu'un contact est appelé avant de le considérer comme fermé, lorsque l'appel a échoué pour la machine",
 			"MACHINERETRYTIME": "Temps en minutes avant d'essayer de rappeler un contact ayant échoué en raison de la machine",
 			"NOSUCHNUMBERETRYTIME": "Temps en minutes avant d'essayer de rappeler un contact ayant échoué en raison d'un tel numéro",
-			"NOSUCHNUMBERMAXRETRY": "Nombre maximal de fois qu'un contact est appelé avant de le considérer comme fermé, lorsque l'appel a échoué pour un tel numéro"
+			"NOSUCHNUMBERMAXRETRY": "Nombre maximal de fois qu'un contact est appelé avant de le considérer comme fermé, lorsque l'appel a échoué pour un tel numéro",
+			"NOSUCHNUMBERRETRYTIME": "Temps en minutes avant de réessayer de rappeler un contact ayant échoué en raison d'un tel numéro"
 		},
 		"MUSICONHOLD": "La musique d'attente",
 		"ANNOUNCETOAGENT": "Annoncer à l'Agent",
diff --git a/public/app/main/apps/motiondialer/i18n/he.json b/public/app/main/apps/motiondialer/i18n/he.json
index 2ecde4d..685bc38 100644
--- a/public/app/main/apps/motiondialer/i18n/he.json
+++ b/public/app/main/apps/motiondialer/i18n/he.json
@@ -229,7 +229,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "שדה חובה",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "שדה חובה",
 			"CALLYSQUAREPROJECT_REQUIRED": "שדה חובה",
-			"TRUNK_REQUIRED": "שדה חובה"
+			"TRUNK_REQUIRED": "שדה חובה",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "הערך חייב להיות קטן או שווה ל-"
 		},
 		"GENERAL": "כללי",
 		"AGENTTIMEOUT": "סוף זמן קצוב לנציג",
@@ -335,7 +345,8 @@
 			"MACHINEMAXRETRY": "המספר המרבי של הפעמים שאיש קשר מתקשר לפני שהוא שוקל לסגור אותו, כאשר השיחה נכשלה בגלל המכונה",
 			"MACHINERETRYTIME": "זמן בתוך דקות לפני שניסה להתקשר שוב לאיש קשר כושל עקב מכשיר",
 			"NOSUCHNUMBERETRYTIME": "זמן בתוך דקות לפני שניסה להתקשר שוב לאיש קשר כושל מכיוון שאין מספר כזה",
-			"NOSUCHNUMBERMAXRETRY": "המספר המרבי של הפעמים שאיש קשר מתקשר לפני שהוא שוקל לסגור אותו, כאשר השיחה נכשלה ללא מספר כזה"
+			"NOSUCHNUMBERMAXRETRY": "המספר המרבי של הפעמים שאיש קשר מתקשר לפני שהוא שוקל לסגור אותו, כאשר השיחה נכשלה ללא מספר כזה",
+			"NOSUCHNUMBERRETRYTIME": "זמן בדקות לפני שניסה להתקשר שוב לאיש קשר נכשל בגלל מספר כזה"
 		},
 		"MUSICONHOLD": "מוזיקה בהמתנה",
 		"ANNOUNCETOAGENT": "הודעה לנציג",
diff --git a/public/app/main/apps/motiondialer/i18n/hi.json b/public/app/main/apps/motiondialer/i18n/hi.json
index 3a5326f..db1eb4c 100644
--- a/public/app/main/apps/motiondialer/i18n/hi.json
+++ b/public/app/main/apps/motiondialer/i18n/hi.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "आवश्यक स्थान",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "आवश्यक स्थान",
 			"CALLYSQUAREPROJECT_REQUIRED": "आवश्यक स्थान",
-			"TRUNK_REQUIRED": "आवश्यक स्थान"
+			"TRUNK_REQUIRED": "आवश्यक स्थान",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "मान इससे कम या बराबर होना चाहिए"
 		},
 		"GENERAL": "सामान्य",
 		"AGENTTIMEOUT": "एजेंट समयबाह्य",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "मशीन बंद होने पर कॉल बंद होने पर विचार करने से पहले अधिकतम बार संपर्क किया जाता है",
 			"MACHINERETRYTIME": "मशीन के कारण फिर से कॉल करने की कोशिश करने से पहले मिनटों में समय",
 			"NOSUCHNUMBERETRYTIME": "इस तरह की कोई संख्या नहीं होने के कारण फिर से कॉल करने की कोशिश करने से पहले मिनटों में समय",
-			"NOSUCHNUMBERMAXRETRY": "किसी संपर्क को बंद करने पर विचार करने से पहले अधिकतम बार कॉल किया जाता है, जब कॉल ऐसी किसी भी संख्या के लिए विफल रही"
+			"NOSUCHNUMBERMAXRETRY": "किसी संपर्क को बंद करने पर विचार करने से पहले अधिकतम बार कॉल किया जाता है, जब कॉल ऐसी किसी भी संख्या के लिए विफल रही",
+			"NOSUCHNUMBERRETRYTIME": "इस तरह की कोई संख्या नहीं होने के कारण फिर से कॉल करने की कोशिश करने से पहले मिनटों में समय"
 		},
 		"MUSICONHOLD": "संगीत पर रखें.",
 		"ANNOUNCETOAGENT": "घोषणा के एजेंट",
diff --git a/public/app/main/apps/motiondialer/i18n/id.json b/public/app/main/apps/motiondialer/i18n/id.json
index 915bd73..b5815c0 100644
--- a/public/app/main/apps/motiondialer/i18n/id.json
+++ b/public/app/main/apps/motiondialer/i18n/id.json
@@ -94,7 +94,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Bidang wajib",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Bidang wajib",
 			"CALLYSQUAREPROJECT_REQUIRED": "Bidang wajib",
-			"TRUNK_REQUIRED": "Bidang wajib"
+			"TRUNK_REQUIRED": "Bidang wajib",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Nilainya harus kurang dari atau sama dengan"
 		},
 		"HELP": {
 			"ACTIVE": "Aktif",
@@ -192,7 +202,8 @@
 			"MACHINEMAXRETRY": "Jumlah maksimum kontak dipanggil sebelum mempertimbangkannya ditutup, ketika panggilan gagal untuk mesin",
 			"MACHINERETRYTIME": "Waktu dalam beberapa menit sebelum mencoba menelepon lagi kontak yang gagal karena mesin",
 			"NOSUCHNUMBERETRYTIME": "Waktu dalam beberapa menit sebelum mencoba menelepon lagi kontak yang gagal karena tidak ada nomor tersebut",
-			"NOSUCHNUMBERMAXRETRY": "Jumlah maksimum kontak dipanggil sebelum mempertimbangkannya ditutup, ketika panggilan gagal karena tidak ada nomor tersebut"
+			"NOSUCHNUMBERMAXRETRY": "Jumlah maksimum kontak dipanggil sebelum mempertimbangkannya ditutup, ketika panggilan gagal karena tidak ada nomor tersebut",
+			"NOSUCHNUMBERRETRYTIME": "Waktu dalam menit sebelum mencoba menelepon lagi kontak yang gagal karena tidak ada nomor tersebut"
 		},
 		"ABANDONED": "Ditinggalkan",
 		"ABANDONEDCALLS": "Panggilan Antrian yang Ditinggalkan",
diff --git a/public/app/main/apps/motiondialer/i18n/it.json b/public/app/main/apps/motiondialer/i18n/it.json
index 8f9ee97..061b6ea 100644
--- a/public/app/main/apps/motiondialer/i18n/it.json
+++ b/public/app/main/apps/motiondialer/i18n/it.json
@@ -182,7 +182,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Campo obbligatorio",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Campo obbligatorio",
 			"CALLYSQUAREPROJECT_REQUIRED": "Campo obbligatorio",
-			"TRUNK_REQUIRED": "Campo obbligatorio"
+			"TRUNK_REQUIRED": "Campo obbligatorio",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore deve essere minore o uguale a"
 		},
 		"GENERAL": "Generale",
 		"TIMEOUT": "Timeout",
@@ -288,7 +298,8 @@
 			"MACHINEMAXRETRY": "Numero massimo di volte in cui un contatto viene chiamato prima di considerarlo chiuso, quando la chiamata non è riuscita per la macchina",
 			"MACHINERETRYTIME": "Tempo in minuti prima di provare a richiamare un contatto non riuscito a causa della macchina",
 			"NOSUCHNUMBERETRYTIME": "Tempo in minuti prima di provare a chiamare nuovamente un contatto non riuscito a causa di tale numero",
-			"NOSUCHNUMBERMAXRETRY": "Numero massimo di volte in cui un contatto viene chiamato prima di considerarlo chiuso, quando la chiamata non è riuscita senza tale numero"
+			"NOSUCHNUMBERMAXRETRY": "Numero massimo di volte in cui un contatto viene chiamato prima di considerarlo chiuso, quando la chiamata non è riuscita senza tale numero",
+			"NOSUCHNUMBERRETRYTIME": "Tempo in minuti prima di provare a chiamare di nuovo un contatto fallito a causa della mancanza di tale numero"
 		},
 		"MUSICONHOLD": "Musica di attesa",
 		"ANNOUNCETOAGENT": "Annuncio all'Agente",
diff --git a/public/app/main/apps/motiondialer/i18n/ja.json b/public/app/main/apps/motiondialer/i18n/ja.json
index acd3581..423f360 100644
--- a/public/app/main/apps/motiondialer/i18n/ja.json
+++ b/public/app/main/apps/motiondialer/i18n/ja.json
@@ -91,7 +91,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "必須フィールド",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "必須フィールド",
 			"CALLYSQUAREPROJECT_REQUIRED": "必須フィールド",
-			"TRUNK_REQUIRED": "必須フィールド"
+			"TRUNK_REQUIRED": "必須フィールド",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "値は以下でなければなりません"
 		},
 		"HELP": {
 			"ACTIVE": "アクティブ",
@@ -189,7 +199,8 @@
 			"MACHINEMAXRETRY": "マシンの呼び出しが失敗したときに、連絡先が閉じられたと見なされるまでに呼び出される最大回数",
 			"MACHINERETRYTIME": "マシンが原因で失敗した連絡先に再度電話をかけるまでの時間（分単位）",
 			"NOSUCHNUMBERETRYTIME": "そのような番号がないために失敗した連絡先に再度電話をかけるまでの時間（分単位）",
-			"NOSUCHNUMBERMAXRETRY": "連絡先が閉じられたと見なされる前に、そのような番号がないために失敗した場合に連絡先が呼び出される最大回数"
+			"NOSUCHNUMBERMAXRETRY": "連絡先が閉じられたと見なされる前に、そのような番号がないために失敗した場合に連絡先が呼び出される最大回数",
+			"NOSUCHNUMBERRETRYTIME": "そのような番号がないために失敗した連絡先に再度電話をかけるまでの時間（分）"
 		},
 		"LEGEND": {
 			"CUSTOM_APPLICATION": "(*) - カスタムアプリケーション"
diff --git a/public/app/main/apps/motiondialer/i18n/ko.json b/public/app/main/apps/motiondialer/i18n/ko.json
index 681d259..06250f6 100644
--- a/public/app/main/apps/motiondialer/i18n/ko.json
+++ b/public/app/main/apps/motiondialer/i18n/ko.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "필수 필드",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "필수 필드",
 			"CALLYSQUAREPROJECT_REQUIRED": "필수 필드",
-			"TRUNK_REQUIRED": "필수 필드"
+			"TRUNK_REQUIRED": "필수 필드",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다.",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "값은 다음보다 작거나 같아야합니다."
 		},
 		"GENERAL": "일반",
 		"AGENTTIMEOUT": "상담원 시간 초과",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "머신에 대한 통화가 실패한 경우, 컨택을 종료하기 전에 컨택이 호출 된 최대 횟수",
 			"MACHINERETRYTIME": "기계로 인해 실패한 컨택을 다시 호출하기 전의 시간 (분)",
 			"NOSUCHNUMBERETRYTIME": "해당 번호가 없어 실패한 연락처를 다시 호출하기 전의 시간 (분)",
-			"NOSUCHNUMBERMAXRETRY": "해당 번호가없는 통화에 실패한 경우, 통화 종료를 고려하기 전에 연락처가 전화를 건 최대 횟수"
+			"NOSUCHNUMBERMAXRETRY": "해당 번호가없는 통화에 실패한 경우, 통화 종료를 고려하기 전에 연락처가 전화를 건 최대 횟수",
+			"NOSUCHNUMBERRETRYTIME": "해당 번호가 없어 실패한 연락처로 다시 전화를 걸기 전의 시간 (분)"
 		},
 		"MUSICONHOLD": "대기 중 음악",
 		"ANNOUNCETOAGENT": "상담원에게 공지",
diff --git a/public/app/main/apps/motiondialer/i18n/lt.json b/public/app/main/apps/motiondialer/i18n/lt.json
index 2956fb7..8fc1b3f 100644
--- a/public/app/main/apps/motiondialer/i18n/lt.json
+++ b/public/app/main/apps/motiondialer/i18n/lt.json
@@ -1,310 +1,330 @@
 {
 	"MOTIONDIALER": {
-		"ONE_CALL_EVERY": "One call every",
-		"CURRENT_INTERVAL": "Current Interval",
-		"PREVIOUS_INTERVAL": "Previous Interval",
-		"PREDICTIVE_IS_RUNNING": "Predictive is running",
-		"PREDICTIVE_IS_NOT_RUNNING": "Predictive is not running",
-		"DATA_COLLECTION_IN_PROGRESSIVE": "Data collection in Progressive",
-		"SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Show Predictive Info",
-		"AVG_TALK_TIME": "Avg Talk Time",
-		"ANSWERED_CALLS": "Answered Calls",
-		"TOTAL_CALLS": "Total Calls",
-		"THRESHOLDS": "Thresholds",
-		"PREDICTIVEMAXTHRESHOLD": "Predictive Max Threshold [%]",
-		"PREDICTIVEMINTHRESHOLD": "Predictive Min Threshold [%]",
-		"REFRESH_SCHEDULED_CALLS": "Refresh Scheduled Calls",
-		"RECALLINQUEUE": "Recall in queue",
-		"SELECT_DATE": "Select Date",
-		"SELECT_TYPE": "Select Type",
-		"SELECT_CAMPAIGN": "Select Campaign",
-		"SCHEDULED_CALLS": "Scheduled Calls",
-		"LOGIN_TIME": "Login time",
-		"PAUSE_TIME": "Pause time",
-		"CUTDIGIT": "Cut Digits",
-		"RANDOMLASTDIGITCALLERIDNUMBER": "Random Outgoing CallerId Number",
-		"CLONE_IVRCAMPAIGN": "Clone Campaign",
-		"CLONE_QUEUECAMPAIGN": "Clone Queue Campaign",
-		"ABANDONEDCALLS": "Abandoned Queue Calls",
-		"HOPPERWIDGET": "Summary",
-		"RESETLIST_IVRCAMPAIGN": "Reset Lists",
-		"RESETLIST_QUEUECAMPAIGN": "Reset Lists",
-		"RESET": "Reset",
-		"RESETLIST": "Reset Lists",
-		"SELECTALL": "Select All",
-		"UNSELECTALL": "Un-Select All",
-		"NO_AVAILABLE_INFO": "No available info",
-		"TIMEOUT": "Timeout",
-		"CALLYSQUAREPROJECTPREVIEW": "Cally Square Project Preview",
-		"CALLYSQUAREPROJECTPREVIEW2": "Cally Square Project After Preview",
-		"RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-		"CALLYSQUAREPROJECT2": "Cally Square Project After Queue",
-		"NO_AGENT_ONLINE": "No Agent Online",
-		"PARTIALPAUSE": "Parital Pause",
-		"ALL": "All",
-		"IDLE": "Idle",
-		"TIMER": "Timer",
-		"MOVE_HOPPERFINAL": "Restore contact",
-		"RESTORECONTACTS": "Restore Contacts",
-		"NO_SUCH_NUMBER": "No Such Number",
-		"ANSWERING_MACHINE": "Answering machine",
-		"DIALORDERBYSCHEDULEDAT": "Order By scheduledat",
+		"ONE_CALL_EVERY": "Vienas skambutis kas",
+		"CURRENT_INTERVAL": "Dabartinis intervalas",
+		"PREVIOUS_INTERVAL": "Ankstesnis intervalas",
+		"PREDICTIVE_IS_RUNNING": "Prognozė veikia",
+		"PREDICTIVE_IS_NOT_RUNNING": "Prognozė neveikia",
+		"DATA_COLLECTION_IN_PROGRESSIVE": "Duomenų rinkimas progresyviai",
+		"SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Rodyti numatomą informaciją",
+		"AVG_TALK_TIME": "Vidutinis pokalbio laikas",
+		"ANSWERED_CALLS": "Atsiliepti skambučiai",
+		"TOTAL_CALLS": "Iš viso skambučių",
+		"THRESHOLDS": "Ribos",
+		"PREDICTIVEMAXTHRESHOLD": "Numatoma maksimali riba [%]",
+		"PREDICTIVEMINTHRESHOLD": "Numatoma minimali riba [%]",
+		"REFRESH_SCHEDULED_CALLS": "Atnaujinti suplanuotus skambučius",
+		"RECALLINQUEUE": "Perskambinimas eilėje",
+		"SELECT_DATE": "Pasirinkti datą",
+		"SELECT_TYPE": "Pasirinkti tipą",
+		"SELECT_CAMPAIGN": "Pasirinkti kampaniją",
+		"SCHEDULED_CALLS": "Suplanuoti skambučiai",
+		"LOGIN_TIME": "Prisijungimo laikas",
+		"PAUSE_TIME": "Pauzės laikas",
+		"CUTDIGIT": "Iškirpti skaitmenis",
+		"RANDOMLASTDIGITCALLERIDNUMBER": "Atsitiktinis išeinančio skambintojo Id numeris",
+		"CLONE_IVRCAMPAIGN": "Klonuoti kampaniją",
+		"CLONE_QUEUECAMPAIGN": "Klonuoti eilės kampaniją",
+		"ABANDONEDCALLS": "Pamesti eilės skambučiai",
+		"HOPPERWIDGET": "Suvestinė",
+		"RESETLIST_IVRCAMPAIGN": "Atstatyti sąrašus",
+		"RESETLIST_QUEUECAMPAIGN": "Atstatyti sąrašus",
+		"RESET": "Atstatyti",
+		"RESETLIST": "Atstatyti sąrašus",
+		"SELECTALL": "Pasirinkti visus",
+		"UNSELECTALL": "Panaikinti visų pasirinkimą",
+		"NO_AVAILABLE_INFO": "Informacijos nėra",
+		"TIMEOUT": "Laikas baigėsi",
+		"CALLYSQUAREPROJECTPREVIEW": "IVR programų valgymo įrankio projekto peržiūra",
+		"CALLYSQUAREPROJECTPREVIEW2": "IVR programų valgymo įrankio projektas po peržiūros",
+		"RUNIFHANGUPAGENT": "Vykdyti IVR programų valgymo įrankio projektą po to, kai agentas padėjo ragelį",
+		"CALLYSQUAREPROJECT2": "IVR programų valgymo įrankio projektas po eilės",
+		"NO_AGENT_ONLINE": "Nėra prisijungusio agento",
+		"PARTIALPAUSE": "Dalinė pauzė",
+		"ALL": "Visi",
+		"IDLE": "Laisvas",
+		"TIMER": "Laikmatis",
+		"MOVE_HOPPERFINAL": "Atkurti kontaktą",
+		"RESTORECONTACTS": "Atkurti kontaktus",
+		"NO_SUCH_NUMBER": "Tokio skaičiaus nėra",
+		"ANSWERING_MACHINE": "Atsakiklis",
+		"DIALORDERBYSCHEDULEDAT": "Užsakymas pagal tvarkaraštį",
 		"ASC": "ASC",
 		"DESC": "DESC",
-		"RECALLAGENT": "Recall Agent",
-		"DIALRECALLINQUEUE": "Recall In Queue",
-		"DIALRECALLMETIMEOUT": "Recall Me Timeout [min]",
-		"RECALLME": "Recall Me",
-		"RECALLFAILEDTIMEOUT": "Recall Failed",
-		"PREVIEW_CAMPAIGN": "Preview Campaigns",
-		"PREVIEW_CAMPAIGNS": "Preview Campaigns",
-		"AMD": "Asterisk Answering Machine Detection (AMD)",
-		"AMDTOTALANALYSISTIME": "Total Analysis Time",
+		"RECALLAGENT": "Perskambinimo agentas",
+		"DIALRECALLINQUEUE": "Perskambinimas eilėje",
+		"DIALRECALLMETIMEOUT": "Perskambinimo man laikas [min.]",
+		"RECALLME": "Perskambinimas man",
+		"RECALLFAILEDTIMEOUT": "Perskambinimas nepavyko",
+		"PREVIEW_CAMPAIGN": "Peržiūrėti kampanijas",
+		"PREVIEW_CAMPAIGNS": "Peržiūrėti kampanijas",
+		"AMD": "Asterisk atsakiklio aptikimas (AMD)",
+		"AMDTOTALANALYSISTIME": "Bendras analizės laikas",
 		"AMDACTIVE": "AMD",
-		"AMDINITIALSILENCE": "Initial Silence",
-		"AMDGREETING": "Greeting",
-		"AMDAFTERGREETINGSILENCE": "Silence after Greeting",
-		"AMDSILENCETHRESHOLD": "Silence Threshold",
-		"AMDMINWORDLENGTH": "Min Word Length",
-		"AMDBETWEENWORDSSILENCE": "Silence Between Words",
-		"AMDMAXIMUMWORDLENGTH": "Maximum Word Length",
+		"AMDINITIALSILENCE": "Pradinė tyla",
+		"AMDGREETING": "Pasisveikinimas",
+		"AMDAFTERGREETINGSILENCE": "Tyla po pasisveikinimo",
+		"AMDSILENCETHRESHOLD": "Tylos ribos",
+		"AMDMINWORDLENGTH": "Minimalus žodžio ilgis",
+		"AMDBETWEENWORDSSILENCE": "Tyla tarp žodžių",
+		"AMDMAXIMUMWORDLENGTH": "Maksimalus žodžio ilgis",
 		"AMDMAXIMUMNUMBEROFWORDS": "Maximum Number Of Words",
-		"GOTO_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-		"GOTOREALTIME_QUEUECAMPAIGN": "Go To Realtime Queue Campaigns",
-		"GOTO_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-		"GOTOREALTIME_IVRCAMPAIGN": "Go To Realtime IVR Campaigns",
-		"LOGOUT": "Logout",
-		"EDIT_CAMPAIGN": "Edit Campaign",
-		"LIMITED": "Limited",
-		"IVR_CAMPAIGNS": "IVR Campaigns",
+		"GOTO_QUEUECAMPAIGN": "Eiti į realaus laiko eilės kampanijas",
+		"GOTOREALTIME_QUEUECAMPAIGN": "Eiti į realaus laiko eilės kampanijas",
+		"GOTO_IVRCAMPAIGN": "Eiti į realaus laiko IVR kampanijas",
+		"GOTOREALTIME_IVRCAMPAIGN": "Eiti į realaus laiko IVR kampanijas",
+		"LOGOUT": "Atsijungti",
+		"EDIT_CAMPAIGN": "Redaguoti kampaniją",
+		"LIMITED": "Ribotas",
+		"IVR_CAMPAIGNS": "IVR kampanijos",
 		"MOTIONDIALER": "Motion Bull",
-		"QUEUECAMPAIGNS": "Queue Campaigns",
-		"IVRCAMPAIGNS": "IVR Campaigns",
-		"MANAGED": "Managed",
-		"AVAILABLE_CONTACTS_FINISHED": "Available contacts finished",
-		"HISTORY": "History",
-		"SCHEDULEDAT": "Scheduled At",
-		"HOPPERBLACKS": "Hopper Blacklist",
-		"NO_HOPPERBLACK_AVAILABLE": "No items available",
-		"HOPPERFINALS": "Hopper Final",
-		"NO_HOPPERFINAL_AVAILABLE": "No items available",
-		"HOPPERHISTORIES": "Call history",
-		"NO_HOPPERHISTORY_AVAILABLE": "No items available",
-		"DELETE_HOPPERHISTORY": "Delete",
-		"DELETE_HOPPERFINAL": "Delete",
-		"CONTACTID": "Contact ID",
-		"STARTTIME": "Start Time",
-		"RESPONSETIME": "Response Time",
-		"ENDTIME": "End Time",
-		"STATUS": "Status",
-		"HOPPERS": "Hopper",
-		"NO_HOPPER_AVAILABLE": "No items available",
-		"EDIT_HOPPER": "Edit Hopper",
-		"DELETE_HOPPER": "Delete Hopper",
-		"FINAL": "Final",
-		"BLACKLIST": "Blacklist",
-		"NAME": "Name",
-		"VOICEQUEUES": "Voice Queues",
-		"SEARCH_FOR_ANYONE": "Search",
-		"BACK": "Back",
-		"SELECTED": "Selected",
-		"SELECT_ALL": "Select All",
-		"SELECT_NONE": "Select None",
-		"DELETE_VOICEDISPOSITION": "Delete Voice Disposition",
-		"EDIT_VOICEDISPOSITION": "Edit Voice Disposition",
-		"EDIT_VOICEQUEUE": "Edit Voice Queue",
-		"DELETE_VOICEQUEUE": "Delete Voice Queue",
-		"MOHSOUNDS": "Moh Sounds",
-		"STRATEGY": "Strategy",
-		"DESCRIPTION": "Description",
-		"INTERVAL": "Time Interval",
-		"ADD_VOICEQUEUE": "Add Voice Queue",
-		"NEW_QUEUECAMPAIGN": "New Queue Campaign",
-		"ACTIVE": "Active",
-		"METHOD": "Method",
-		"POWERLEVEL": "Power Level",
-		"DROPRATE": "Drop Rate",
-		"AGENTBUSYFACTOR": "Agent Busy Factor",
-		"PREDICTIVEOPTIMIZATION": "Predictive Optimization",
-		"PREDICTIVEOPTIMIZATIONPERCENTAGE": "Predictive Optimization Percentage",
-		"PREDICTIVEINTERVAL": "Predictive Interval",
-		"ADD_QUEUECAMPAIGN": "Add Queue Campaign",
-		"CAMPAIGN": "Campaign",
-		"MAXCONCURRENTCALLS": "Max Concurrent Calls",
-		"CONCURRENTCALLS": "Max Concurrent Calls",
-		"ORIGINATE": "Originate",
-		"ORIGINATECALLERIDNAME": "Caller ID Name",
-		"ORIGINATECALLERIDNUMBER": "Caller ID Number",
-		"ORIGINATETIMEOUT": "Originate Timeout",
-		"QUEUEOPTIONS": "Queue Options",
-		"QUEUETIMEOUT": "Queue Timeout",
-		"CALLYSQUAREPROJECT": "Cally Square Project",
-		"RETRYANDFREQUENCY": "Retry Settings",
-		"GLOBAL": "Global",
-		"GLOBALMAXRETRY": "Max Retries",
-		"CONGESTION": "Congestion",
-		"CONGESTIONMAXRETRY": "Max Retries",
-		"CONGESTIONRETRYTIME": "Retry Time [min]",
-		"BUSYMAXRETRY": "Max Retries",
-		"BUSYRETRYTIME": "Retry Time [min]",
-		"NOANSWER": "No Answer",
-		"NOANSWERMAXRETRY": "Max Retries",
-		"NOANSWERRETRYTIME": "Retry Time [min]",
-		"QUEUE_PARAMS": "Queue Parameters",
-		"ORIGINATED": "Originated",
-		"MESSAGE": "Message",
-		"DROPPED": "Dropped",
-		"CREATED_AT": "Created At",
+		"QUEUECAMPAIGNS": "Eilės kampanijos",
+		"IVRCAMPAIGNS": "IVR kampanijos",
+		"MANAGED": "Valdyti",
+		"AVAILABLE_CONTACTS_FINISHED": "Galimi kontaktai baigti",
+		"HISTORY": "Istorija",
+		"SCHEDULEDAT": "Suplanuota",
+		"HOPPERBLACKS": "Talpyklos juodasis sąrašas",
+		"NO_HOPPERBLACK_AVAILABLE": "Elementų nėra",
+		"HOPPERFINALS": "Talpyklos finalas",
+		"NO_HOPPERFINAL_AVAILABLE": "Elementų nėra",
+		"HOPPERHISTORIES": "Skambučio istorija",
+		"NO_HOPPERHISTORY_AVAILABLE": "Elementų nėra",
+		"DELETE_HOPPERHISTORY": "Ištrinti",
+		"DELETE_HOPPERFINAL": "Ištrinti",
+		"CONTACTID": "Kontaktinis ID",
+		"STARTTIME": "Pradžios laikas",
+		"RESPONSETIME": "Atsakymo laikas",
+		"ENDTIME": "Pabaigos laikas",
+		"STATUS": "Statusas",
+		"HOPPERS": "Talpykla",
+		"NO_HOPPER_AVAILABLE": "Elementų nėra",
+		"EDIT_HOPPER": "Redaguoti talpyklą",
+		"DELETE_HOPPER": "Ištrinti talpyklą",
+		"FINAL": "Finalas",
+		"BLACKLIST": "Juodasis sąrašas",
+		"NAME": "Vardas",
+		"VOICEQUEUES": "Balso eilės",
+		"SEARCH_FOR_ANYONE": "Paieška",
+		"BACK": "Atgal",
+		"SELECTED": "Pasirinkta",
+		"SELECT_ALL": "Pasirinkti visus",
+		"SELECT_NONE": "Nieko nepasirinkti",
+		"DELETE_VOICEDISPOSITION": "Ištrinti balso išdėstymą",
+		"EDIT_VOICEDISPOSITION": "Redaguoti balso išdėstymą",
+		"EDIT_VOICEQUEUE": "Redaguoti balso eilę",
+		"DELETE_VOICEQUEUE": "Ištrinti balso eilę",
+		"MOHSOUNDS": "Moh garsai",
+		"STRATEGY": "Strategija",
+		"DESCRIPTION": "Aprašymas",
+		"INTERVAL": "Laiko intervalas",
+		"ADD_VOICEQUEUE": "Pridėti balso eilę",
+		"NEW_QUEUECAMPAIGN": "Nauja eilės kampanija",
+		"ACTIVE": "Aktyvus",
+		"METHOD": "Metodas",
+		"POWERLEVEL": "Pajėgumo lygis",
+		"DROPRATE": "Kritimo rodiklis",
+		"AGENTBUSYFACTOR": "Agento užimtumo faktorius",
+		"PREDICTIVEOPTIMIZATION": "Prognozuojamas optimizavimas",
+		"PREDICTIVEOPTIMIZATIONPERCENTAGE": "Prognozuojamas optimizavimo procentas",
+		"PREDICTIVEINTERVAL": "Prognozuojamas intervalas",
+		"ADD_QUEUECAMPAIGN": "Pridėti eilės kampaniją",
+		"CAMPAIGN": "Kampanija",
+		"MAXCONCURRENTCALLS": "Daugiausia vienu metu vykstančių skambučių",
+		"CONCURRENTCALLS": "Daugiausia vienu metu vykstančių skambučių",
+		"ORIGINATE": "Prasidėti",
+		"ORIGINATECALLERIDNAME": "Skambintojo ID vardas",
+		"ORIGINATECALLERIDNUMBER": "Skambintojo ID numeris",
+		"ORIGINATETIMEOUT": "Pradžios laikas",
+		"QUEUEOPTIONS": "Eilės parinktys",
+		"QUEUETIMEOUT": "Eilės laikas",
+		"CALLYSQUAREPROJECT": "IVR programų valgymo įrankio projektas",
+		"RETRYANDFREQUENCY": "Pakartoti nustatymus",
+		"GLOBAL": "Visuotinis",
+		"GLOBALMAXRETRY": "Maks. bandymai",
+		"CONGESTION": "Perpildymas",
+		"CONGESTIONMAXRETRY": "Maks. bandymai",
+		"CONGESTIONRETRYTIME": "Pakartojimų laikas [min.]",
+		"BUSYMAXRETRY": "Maks. bandymai",
+		"BUSYRETRYTIME": "Pakartojimų laikas [min.]",
+		"NOANSWER": "Nėra atsakymo",
+		"NOANSWERMAXRETRY": "Maks. bandymai",
+		"NOANSWERRETRYTIME": "Pakartojimų laikas [min.]",
+		"QUEUE_PARAMS": "Eilės parametrai",
+		"ORIGINATED": "Prasidėjęs",
+		"MESSAGE": "Pranešimas",
+		"DROPPED": "Atmestas",
+		"CREATED_AT": "Sukurtas",
 		"LEGEND": {
-			"CUSTOM_APPLICATION": "(*) - Custom application."
+			"CUSTOM_APPLICATION": "(*) - Pritaikyta programa."
 		},
 		"ERRORS": {
-			"AGENT_REQUIRED": "Mandatory field",
-			"CUTDIGIT_REQUIRED": "Mandatory field",
-			"CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Mandatory field",
-			"RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"AGENTTIMEOUT_REQUIRED": "Mandatory field",
-			"INTERVAL_REQUIRED": "Mandatory field",
-			"EMAIL_REQUIRED": "Mandatory field",
-			"DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"DIALRECALLMETIMEOUT_REQUIRED": "Mandatory field",
-			"NAME_MUST_VALID_PATTERN": "Wrong format",
-			"PREFIX_MUST_VALID_PATTERN": "Wrong format",
-			"NAME_REQUIRED": "Mandatory field",
-			"TIMEOUT_REQUIRED": "Mandatory field",
-			"PHONENUMBER_REQUIRED": "Mandatory field",
-			"CONTEXT_REQUIRED": "Mandatory field",
-			"DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-			"FULLNAME_REQUIRED": "Mandatory field",
-			"EMAIL_REQUUIRED": "Mandatory field",
-			"EMAIL_MUST_VALID": "Wrong format",
-			"MAILBOX_REQUIRED": "Mandatory Field",
-			"PASSWORD_REQUIRED": "Mandatory field",
-			"CONFIRM_NOT_MATCH": "The passwords don't match",
-			"TIMEZONE_REQUIRED": "Mandatory field",
-			"PREFIX_REQUIRED": "Mandatory field",
-			"OPTIONS_REQUIRED": "Mandatory field",
-			"AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-			"TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-			"PHONE_REQUIRED": "Mandatory field",
-			"VALUE_REQUIRED": "Mandatory field",
-			"EXTENSION_REQUIRED": "Mandatory field",
-			"PRIORITY_REQUIRED": "Mandatory field",
-			"GLOBALMAXRETRY_REQUIRED": "Mandatory field",
-			"CONGESTIONMAXRETRY_REQUIRED": "Mandatory field",
-			"CONGESTIONRETRYTIME_REQUIRED": "Mandatory field",
-			"BUSYMAXRETRY_REQUIRED": "Mandatory field",
-			"BUSYRETRYTIME_REQUIRED": "Mandatory field",
-			"NOANSWERMAXRETRY_REQUIRED": "Mandatory field",
-			"NOANSWERRETRYTIME_REQUIRED": "Mandatory field",
-			"QUEUETIMEOUT_REQUIRED": "Mandatory field",
-			"ORIGINATETIMEOUT_REQUIRED": "Mandatory field",
-			"GLOBALINTERVAL_REQUIRED": "Mandatory field",
-			"MAXCONCURRENTCALLS_REQUIRED": "Mandatory field",
-			"CONCURRENTCALLS_REQUIRED": "Mandatory field",
-			"POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-			"CALLYSQUAREPROJECT_REQUIRED": "Mandatory field",
-			"TRUNK_REQUIRED": "Mandatory field"
+			"AGENT_REQUIRED": "Privalomas laukas",
+			"CUTDIGIT_REQUIRED": "Privalomas laukas",
+			"CUTDIGIT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"CUTDIGIT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"RANDOMLASTDIGITCALLERIDNUMBER_REQUIRED": "Privalomas laukas",
+			"RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"RANDOMLASTDIGITCALLERIDNUMBER_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"AGENTTIMEOUT_REQUIRED": "Privalomas laukas",
+			"INTERVAL_REQUIRED": "Privalomas laukas",
+			"EMAIL_REQUIRED": "Privalomas laukas",
+			"DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"DIALRECALLMETIMEOUT_REQUIRED": "Privalomas laukas",
+			"NAME_MUST_VALID_PATTERN": "Blogas formatas",
+			"PREFIX_MUST_VALID_PATTERN": "Blogas formatas",
+			"NAME_REQUIRED": "Privalomas laukas",
+			"TIMEOUT_REQUIRED": "Privalomas laukas",
+			"PHONENUMBER_REQUIRED": "Privalomas laukas",
+			"CONTEXT_REQUIRED": "Privalomas laukas",
+			"DESTINATIONPATTERN_REQUIRED": "Privalomas laukas",
+			"FULLNAME_REQUIRED": "Privalomas laukas",
+			"EMAIL_REQUUIRED": "Privalomas laukas",
+			"EMAIL_MUST_VALID": "Blogas formatas",
+			"MAILBOX_REQUIRED": "Privalomas laukas",
+			"PASSWORD_REQUIRED": "Privalomas laukas",
+			"CONFIRM_NOT_MATCH": "Slaptažodžiai nesutampa",
+			"TIMEZONE_REQUIRED": "Privalomas laukas",
+			"PREFIX_REQUIRED": "Privalomas laukas",
+			"OPTIONS_REQUIRED": "Privalomas laukas",
+			"AFTERCALLWORKDURATION_REQUIRED": "Privalomas laukas",
+			"TECHNOLOGY/RESOURCE_REQUIRED": "Privalomas laukas",
+			"PHONE_REQUIRED": "Privalomas laukas",
+			"VALUE_REQUIRED": "Privalomas laukas",
+			"EXTENSION_REQUIRED": "Privalomas laukas",
+			"PRIORITY_REQUIRED": "Privalomas laukas",
+			"GLOBALMAXRETRY_REQUIRED": "Privalomas laukas",
+			"CONGESTIONMAXRETRY_REQUIRED": "Privalomas laukas",
+			"CONGESTIONRETRYTIME_REQUIRED": "Privalomas laukas",
+			"BUSYMAXRETRY_REQUIRED": "Privalomas laukas",
+			"BUSYRETRYTIME_REQUIRED": "Privalomas laukas",
+			"NOANSWERMAXRETRY_REQUIRED": "Privalomas laukas",
+			"NOANSWERRETRYTIME_REQUIRED": "Privalomas laukas",
+			"QUEUETIMEOUT_REQUIRED": "Privalomas laukas",
+			"ORIGINATETIMEOUT_REQUIRED": "Privalomas laukas",
+			"GLOBALINTERVAL_REQUIRED": "Privalomas laukas",
+			"MAXCONCURRENTCALLS_REQUIRED": "Privalomas laukas",
+			"CONCURRENTCALLS_REQUIRED": "Privalomas laukas",
+			"POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Reikšmė turi būti didesnė arba lygi",
+			"POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Reikšmė turi būti mažesnė arba lygi",
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Privalomas laukas",
+			"CALLYSQUAREPROJECT_REQUIRED": "Privalomas laukas",
+			"TRUNK_REQUIRED": "Privalomas laukas",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi",
+			"ABANDONEDMAXRETRY_REQUIRED": "Privalomas laukas",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi",
+			"ABANDONEDRETRYTIME_REQUIRED": "Privalomas laukas",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi",
+			"AGENTREJECTMAXRETRY_REQUIRED": "Privalomas laukas",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi",
+			"AGENTREJECTRETRYTIME_REQUIRED": "Privalomas laukas",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi",
+			"DROPMAXRETRY_REQUIRED": "Privalomas laukas",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi",
+			"DROPRETRYTIME_REQUIRED": "Privalomas laukas",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi",
+			"MACHINEMAXRETRY_REQUIRED": "Privalomas laukas",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi",
+			"MACHINERETRYTIME_REQUIRED": "Privalomas laukas",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi",
+			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Privalomas laukas",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vertė turi būti mažesnė arba lygi",
+			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Privalomas laukas"
 		},
-		"GENERAL": "General",
-		"AGENTTIMEOUT": "Agent Timeout",
-		"MAXLENGTH": "Maximum Length",
-		"RETRY": "Retry",
-		"WRAPUPTIME": "Wrapup Time",
-		"WEIGHT": "Weight",
-		"JOINWHENEMPTY": "Join when empty",
-		"LEAVEWHENEMPTY": "Leave when empty",
+		"GENERAL": "Bendras",
+		"AGENTTIMEOUT": "Agento laikas",
+		"MAXLENGTH": "Maksimalus ilgis",
+		"RETRY": "Pakartotinis bandymas",
+		"WRAPUPTIME": "Baigimo laikas",
+		"WEIGHT": "Svarba",
+		"JOINWHENEMPTY": "Prisijungti, kai tuščia",
+		"LEAVEWHENEMPTY": "Palikti, kai tuščia",
 		"HELP": {
-			"PREDICTIVEMAXTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured maximum limit, the predictive recalculates the prediction. ",
-			"PREDICTIVEMINTHRESHOLD": "If the percentage of agents available in the time window, compared to the agents available at the time of prediction, exceeds the configured minimum limit, the predictive recalculates the prediction.",
-			"RANDOMLASTDIGITCALLERIDNUMBER": "If greater than 0, it generates randomly the corresponding last digits of the Outgoing Caller Id Number",
-			"TIMEOUT": "Number of seconds to ring agent in queue",
-			"CALLYSQUAREPROJECTPREVIEW": "Selecting an IVR project, the dialer will forward the call to the IVR when an agent answers (the IVR will be directed to the agent)",
-			"CALLYSQUAREPROJECTPREVIEW2": "Selecting an IVR project, the dialer will forward the call to the IVR when an client hangup or unreachable (the IVR will be directed to the agent)",
-			"RUNIFHANGUPAGENT": "Run Cally Square Project After even if the agent hangs up the call",
-			"CALLYSQUAREPROJECT2": "iSelecting an IVR project, the dialer will forward the call to the IVR after the queue (if the queue ends by timeout)",
-			"DIALORDERBYSCHEDULEDAT": "Get contacts from hopper (descending or ascending).",
-			"DIALRECALLINQUEUE": "Reschedule call for agents in the Queue",
-			"DIALRECALLMETIMEOUT": "Time interval (in minutes) for Recall Me period of validity",
-			"PRIORITY": "Priority in the list",
-			"AMDMAXIMUMWORDLENGTH": "Maximum duration allowed of a single Voice utterance",
-			"AMDMINWORDLENGTH": "Minimum duration of a Voice to be considered a word",
-			"AMDSILENCETHRESHOLD": "If the average level of noise in a sample does not reach this value, from a scale of 0 to 32767, then we will consider it as silence",
-			"AMDTOTALANALYSISTIME": "Maximum time allowed for the algorithm to decide on whether the audio represents a HUMAN or a MACHINE",
-			"AMDAFTERGREETINGSILENCE": "Silence after detecting a greeting. If exceeded, then the result is detection as a HUMAN",
-			"AMDGREETING": "Maximum length of a greeting. If exceeded, then the result is detection as a MACHINE",
-			"AMDINITIALSILENCE": "Maximum silence duration before the greeting. If exceeded, then the result is detection as a MACHINE",
-			"AMDACTIVE": "Activate or disactivate answering machines detection attempts",
-			"AMDBETWEENWORDSSILENCE": "Minimum duration of silence after a word to consider the audio that follows as a new word",
-			"AMDMAXIMUMNUMBEROFWORDS": "Maximum number of words in the greeting. If REACHED, then the result is detection as a MACHINE",
-			"CALLYSQUAREPROJECT": "Selecting an IVR project, the dialer will forward the call to the IVR before the queue",
-			"PREFIX": "Telephone prefix",
-			"ACTIVE": "Active",
-			"AGENTTIMEOUT": "How long (in seconds) to ring an agent’s device",
-			"MAXLENGTH": "Maximum number of callers allowed to be waiting in a queue (0=unlimited)",
-			"RETRY": "How long (in seconds) to wait before calling the next agent in the queue when the agent timeout is expired",
-			"WRAPUPTIME": "How long (in seconds) to keep an agent unavailable in a queue after completing a call",
-			"WEIGHT": "Used to determine priority if the agents are associated with more than one queue",
-			"JOINWHENEMPTY": "If a caller is added to the queue, when no agents are available",
-			"LEAVEWHENEMPTY": "If a caller is expelled from the queue when no agents are available",
-			"ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (0=disable)",
-			"MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-			"PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-			"ANNOUNCEPOSITIONLIMIT": "Used if you’ve defined announce-position as either 'limit' or 'more'",
-			"AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-			"MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-			"MUSICONHOLD": "Sets the music class to use for a particular queue",
-			"ANNOUNCETOAGENT": "Plays an announcement to the agent answering the call (e.g. to let him know which queue the caller is coming from)",
-			"RANDOMPERIODICANNOUNCE": "If yes, it plays the periodic announcements in random order",
-			"ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-			"ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-			"REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-			"PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-			"HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-			"YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-			"THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-			"WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-			"ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-			"MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-			"MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-			"SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-			"THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-			"AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
+			"PREDICTIVEMAXTHRESHOLD": "Jei laiko lange esančių agentų procentas, palyginti su prognozavimo metu turimais agentais, viršija sukonfigūruotą maksimalią ribą, prognozė perskaičiuojama.",
+			"PREDICTIVEMINTHRESHOLD": "Jei laiko lange esančių agentų procentas, palyginti su prognozavimo metu turimais agentais, viršija sukonfigūruotą minimalią ribą, prognozė perskaičiuojama.",
+			"RANDOMLASTDIGITCALLERIDNUMBER": "Jei didesnis nei 0, jis atsitiktinai sugeneruoja atitinkamus paskutinius išeinančio skambinančiojo ID numerio skaitmenis.",
+			"TIMEOUT": "Sekundžių skaičius, per kurias skambinama agentui eilėje",
+			"CALLYSQUAREPROJECTPREVIEW": "Pasirinkus IVR projektą, rinkėjas persiųs skambutį į IVR, kai agentas atsakys (IVR bus nukreiptas į agentą)",
+			"CALLYSQUAREPROJECTPREVIEW2": "Pasirinkus IVR projektą, rinkėjas persiųs skambutį į IVR, kai klientas bus atidėtas arba nepasiekiamas (IVR bus nukreiptas į agentą)",
+			"RUNIFHANGUPAGENT": "Vykdyti IVR programų valdymo įrankio projektą po to, kai agentas padėjo ragelį",
+			"CALLYSQUAREPROJECT2": "Pasirinkus IVR projektą, rinkėjas persiųs skambutį į IVR po eilės (jei eilė baigsis pasibaigus skirtam laikui)",
+			"DIALORDERBYSCHEDULEDAT": "Gauti kontaktus iš talpyklos (mažėjančia arba didėjančia tvarka).",
+			"DIALRECALLINQUEUE": "Perplanuoti agentų skambučius eilėje",
+			"DIALRECALLMETIMEOUT": "Laiko intervalas (minutėmis), skirtas perskambinimo man galiojimo laikotarpiui",
+			"PRIORITY": "Prioritetas sąraše",
+			"AMDMAXIMUMWORDLENGTH": "Maksimali leidžiama vieno balso ištarimo trukmė",
+			"AMDMINWORDLENGTH": "Minimali balso trukmė, kuri turi būti laikoma žodžiu",
+			"AMDSILENCETHRESHOLD": "Jei vidutinis triukšmo lygis pavyzdyje nepasieks šios reikšmės, nuo 0 iki 32767, tai laikysime tyla",
+			"AMDTOTALANALYSISTIME": "Maksimalus laikas, per kurį algoritmas gali nuspręsti, ar garsas reiškia ŽMOGŲ, ar MAŠINĄ",
+			"AMDAFTERGREETINGSILENCE": "Tyla po aptikto pasisveikinimo. Jei viršijama, tada rezultatas yra nustatomas kaip ŽMOGUS",
+			"AMDGREETING": "Maksimalus pasisveikinimo ilgis. Jei viršijama, tada rezultatas yra nustatomas kaip MAŠINA",
+			"AMDINITIALSILENCE": "Maksimali tylos trukmė prieš pasisveikinimą. Jei viršijama, tada rezultatas yra nustatomas kaip MAŠINA",
+			"AMDACTIVE": "Aktyvuoti arba išjungti atsakiklių aptikimo bandymus",
+			"AMDBETWEENWORDSSILENCE": "Minimali tylos trukmė po žodžio, norint laikyti garsą, kuris seka kaip naujas žodis",
+			"AMDMAXIMUMNUMBEROFWORDS": "Maksimalus žodžių skaičius pasisveikinime. Jei PASIEKIAMAS, rezultatas yra nustatomas kaip MAŠINA",
+			"CALLYSQUAREPROJECT": "Pasirinkus IVR projektą, rinkėjas persiųs skambutį į IVR prieš eilę",
+			"PREFIX": "Telefono prefiksas",
+			"ACTIVE": "Aktyvus",
+			"AGENTTIMEOUT": "Kiek laiko (sekundėmis) skambinti agento įrenginiui",
+			"MAXLENGTH": "Maksimalus skambinančiųjų skaičius, leidžiamas laukti eilėje (0 = neribotas)",
+			"RETRY": "Kiek laiko (sekundėmis) laukti prieš skambinant kitam agentui eilėje, kai pasibaigs agento skirtasis laikas",
+			"WRAPUPTIME": "Kiek laiko (sekundėmis) išlaikyti agentą nepasiekiamą eilėje, po skambučio užbaigimo",
+			"WEIGHT": "Naudojamas nustatyti prioritetą, jei agentai yra susieti su daugiau nei viena eile",
+			"JOINWHENEMPTY": "Jei skambintojas įtraukiamas į eilę, kai nėra agentų",
+			"LEAVEWHENEMPTY": "Jei skambintojas pašalinamas iš eilės, kai nėra agentų",
+			"ANNOUNCEFREQUENCY": "Kaip dažnai pranešti apie skambinančiojo vietą ir/arba numatomą sulaikymo laiką eilėje (0 = išjungti)",
+			"MINANNOUNCEFREQUENCY": "Minimalus pranešimų dažnumas (naudingas, kai skambinančiojo vieta dažnai keičiasi)",
+			"PERIODICANNOUNCEFREQUENCY": "Periodinių pranešimų skambintojui dažnumas",
+			"ANNOUNCEPOSITIONLIMIT": "Naudojama, jei skelbimo poziciją apibrėžėte kaip 'ribotas' arba 'daugiau'",
+			"AFTERCALLWORKDURATION": "Pauzės trukmė, suaktyvinta pasirinkus po skambučio darbo parinktį ",
+			"MEMBERDELAY": "Įterpia uždelsimą, kol skambintojas ir agentas eilėje prisijungs",
+			"MUSICONHOLD": "Nustato muzikos klasę, naudojamą tam tikrai eilei",
+			"ANNOUNCETOAGENT": "Praneša agentui, atsakančiam į skambutį (pvz., kad jis žinotų, iš kurios eilės ateina skambinantysis) ",
+			"RANDOMPERIODICANNOUNCE": "Jei taip, leidžiami periodiniai pranešimai atsitiktine tvarka",
+			"ANNOUNCEHOLDTIME": "Rodo numatomą sulaikymo laiką kartu su periodiniais pranešimais (Taip/Ne/Kartą)",
+			"ANNOUNCECALLERPOSITION": "Naudojama apibrėžiant, ar reikia paskelbti skambinančiojo vietą eilėje: Ne = niekada; Taip = visada; Limitas = tik tuo atveju, jei jis neviršija skelbimo pozicijos ribose nustatyto limito; Daugiau = tik tuo atveju, jei jis viršija skelbimo pozicijos ribose nustatytą limitą",
+			"REPORTHOLDTIMEAGENT": "Leidžia pranešti agentui apie skambinančiojo sulaikymo laiką eilėje prieš prisijungimą",
+			"PERIODICANNOUNCE": "Rinkinys periodinių pranešimų, kurie bus paleidžiami (eilės tvarka)",
+			"HOLDTIMEANNOUNCE": "Pasirinkite garsą, apibrėžtą įrankiuose. Numatytasis = 'Užlaikymo laikas'. Neapibrėžtas = jokio pranešimo",
+			"YOUARENEXTANNOUNCE": "Pasirinkite garsą, apibrėžtą įrankiuose. Numatytasis = 'Dabar tu esi pirmas eilėje'. Neapibrėžtas = jokio pranešimo",
+			"THEREAREANNOUNCE": "Pasirinkite garsą, apibrėžtą įrankiuose. Numatytasis = 'Yra'. Neapibrėžtas = jokio pranešimo",
+			"WAITINGCALLSANNOUNCE": "Pasirinkite garsą, apibrėžtą įrankiuose. Numatytasis = 'Skambučių laukimas'. Neapibrėžtas = jokio pranešimo",
+			"ESTIMATEDHOLDTIMEANNOUNCE": "Pasirinkite garsą, apibrėžtą įrankiuose. Numatytasis = 'Dabartinis numatomas sulaikymo laikas yra'. Neapibrėžtas = jokio pranešimo",
+			"MINUTESANNOUNCE": "Pasirinkite garsą, apibrėžtą įrankiuose. Numatytasis = 'minutės'. Neapibrėžtas = jokio pranešimo",
+			"MINUTEANNOUNCE": "Pasirinkite garsą, apibrėžtą įrankiuose. Numatytasis = 'minutė'. Neapibrėžtas = jokio pranešimo",
+			"SECONDSANNOUNCE": "Pasirinkite garsą, apibrėžtą įrankiuose. Numatytasis = 'sekundės'. Neapibrėžtas = jokio pranešimo",
+			"THANKYOUANNOUNCE": "Pasirinkite garsą, apibrėžtą įrankiuose. Numatytasis = 'Ačiū už kantrybę'. Neapibrėžtas = jokio pranešimo",
+			"AFTERCALLWORK": "Jei įjungta, agentui bus nustatyta Pauzė, kai bus baigtas skambutis",
 			"AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled, it causes the agent to be paused in all queues he belongs to",
 			"RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
 			"TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
@@ -335,7 +355,17 @@
 			"NOANSWERRETRYTIME": "Time in minutes before trying to call again a failed contact due to no answer",
 			"GLOBALINTERVAL": "Global time interval during which the dialer is allowed to call contacts. We decline responsibility: pay attention when you modify this field, because you may fail to comply with the national Autodialer Laws and Regulations",
 			"NAME": "Only numbers, letters and specific characters (._) are supported",
-			"MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition"
+			"MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
+			"ABANDONEDMAXRETRY": "Maksimalus kontaktui skambučių skaičius prieš laikant jį uždarytu, kai nepavyko atsisakyti skambučio",
+			"ABANDONEDRETRYTIME": "Laikas minutėmis, kol bandysite dar kartą paskambinti nepavykusiam kontaktui dėl atsisakymo",
+			"AGENTREJECTMAXRETRY": "Maksimalus kontaktui skambučių skaičius prieš laikant jį uždarytu, kai nepavyko iškviesti agento atmetimo",
+			"AGENTREJECTRETRYTIME": "Laikas minutėmis prieš bandant dar kartą paskambinti nepavykusiam kontaktui dėl agento atmetimo",
+			"DROPMAXRETRY": "Maksimalus kontaktui skambučių skaičius prieš laikant jį uždarytu, kai nepavyko iškviesti skambučio",
+			"DROPRETRYTIME": "Laikas minutėmis, kol vėl bandysite paskambinti nepavykusiam kontaktui dėl kritimo",
+			"MACHINEMAXRETRY": "Maksimalus kontaktui skambučių skaičius prieš laikant jį uždarytu, kai nepavyko skambinti mašinai",
+			"MACHINERETRYTIME": "Laikas minutėmis, kol vėl bandysite paskambinti nepavykusiam kontaktui dėl mašinos",
+			"NOSUCHNUMBERMAXRETRY": "Maksimalus kontaktui skambučių skaičius prieš laikant jį uždarytu, kai skambutis nepavyko dėl tokio numerio",
+			"NOSUCHNUMBERRETRYTIME": "Laikas minutėmis, kol vėl bandysite paskambinti nepavykusiam kontaktui dėl tokio numerio neturėjimo"
 		},
 		"MUSICONHOLD": "Music On Hold",
 		"ANNOUNCETOAGENT": "Announce To Agent",
@@ -640,6 +670,20 @@
 		"MANDATORYDISPOSITION": "Mandatory disposition",
 		"MANDATORYDISPOSITIONPAUSEID": "Mandatory disposition pause status",
 		"TOOLTIP_SCREENRECORDING_ON": "Screen Recording in progress",
-		"TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available"
+		"TOOLTIP_SCREENRECORDING_OFF": "Screen Recording available",
+		"ABANDONEDMAXRETRY": "Maxas bando iš naujo",
+		"ABANDONEDRETRYTIME": "Pakartotinis laikas [min.]",
+		"AGENTREJECT": "Agentas atmesti",
+		"AGENTREJECTMAXRETRY": "Maxas bando iš naujo",
+		"AGENTREJECTRETRYTIME": "Pakartotinis laikas [min.]",
+		"DROP": "Lašas",
+		"DROPMAXRETRY": "Maxas bando iš naujo",
+		"DROPRETRYTIME": "Pakartotinis laikas [min.]",
+		"MACHINE": "Mašina",
+		"MACHINEMAXRETRY": "Maxas bando iš naujo",
+		"MACHINERETRYTIME": "Pakartotinis laikas [min.]",
+		"NOSUCHNUMBER": "Tokio numerio nėra",
+		"NOSUCHNUMBERMAXRETRY": "Maxas bando iš naujo",
+		"NOSUCHNUMBERRETRYTIME": "Pakartotinis laikas [min.]"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/motiondialer/i18n/lv.json b/public/app/main/apps/motiondialer/i18n/lv.json
index 1367895..4f0d1e8 100644
--- a/public/app/main/apps/motiondialer/i18n/lv.json
+++ b/public/app/main/apps/motiondialer/i18n/lv.json
@@ -94,7 +94,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Obligāts lauks",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Obligāts lauks",
 			"CALLYSQUAREPROJECT_REQUIRED": "Obligāts lauks",
-			"TRUNK_REQUIRED": "Obligāts lauks"
+			"TRUNK_REQUIRED": "Obligāts lauks",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Vērtībai jābūt mazākai vai vienādai ar"
 		},
 		"HELP": {
 			"TIMEOUT": "Sekunžu skaits, lai piezvanītu aģentam rindā",
@@ -192,7 +202,8 @@
 			"MACHINEMAXRETRY": "Maksimālais reižu skaits, uz kuru tiek piezvanīts kontaktam pirms tā uzskatīšanas par slēgtu, kad mašīna neizdevās",
 			"MACHINERETRYTIME": "Laiks minūtēs, pirms mēģināt vēlreiz piezvanīt neveiksmīgam kontaktam mašīnas dēļ",
 			"NOSUCHNUMBERETRYTIME": "Laiks minūtēs, pirms mēģināt vēlreiz piezvanīt neveiksmīgam kontaktam, jo šāda numura nav",
-			"NOSUCHNUMBERMAXRETRY": "Maksimālais reižu skaits, uz kuru tiek piezvanīts kontaktam pirms tā uzskatīšanas par slēgtu, kad zvana neizdevās, ja šāda numura nav"
+			"NOSUCHNUMBERMAXRETRY": "Maksimālais reižu skaits, uz kuru tiek piezvanīts kontaktam pirms tā uzskatīšanas par slēgtu, kad zvana neizdevās, ja šāda numura nav",
+			"NOSUCHNUMBERRETRYTIME": "Laiks minūtēs, pirms mēģināt vēlreiz piezvanīt uz neizdevušos kontaktu, jo nav šāda numura"
 		},
 		"NO_AVAILABLE_INFO": "Nav pieejama informācija",
 		"TIMEOUT": "Noildze",
diff --git a/public/app/main/apps/motiondialer/i18n/nl.json b/public/app/main/apps/motiondialer/i18n/nl.json
index a60e5b8..703bd8c 100644
--- a/public/app/main/apps/motiondialer/i18n/nl.json
+++ b/public/app/main/apps/motiondialer/i18n/nl.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Verplicht veld",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Verplicht veld",
 			"CALLYSQUAREPROJECT_REQUIRED": "Verplicht veld",
-			"TRUNK_REQUIRED": "Verplicht veld"
+			"TRUNK_REQUIRED": "Verplicht veld",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "De waarde moet kleiner zijn dan of gelijk zijn aan"
 		},
 		"GENERAL": "Algemeen",
 		"AGENTTIMEOUT": "Time-out agent",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "Maximaal aantal keren dat een contactpersoon wordt gebeld voordat deze als gesloten wordt beschouwd, wanneer de oproep is mislukt voor de machine",
 			"MACHINERETRYTIME": "Tijd in minuten voordat u probeert een mislukt contact vanwege de machine opnieuw te bellen",
 			"NOSUCHNUMBERETRYTIME": "Tijd in minuten voordat u probeert een mislukt contact opnieuw te bellen vanwege een dergelijk nummer",
-			"NOSUCHNUMBERMAXRETRY": "Maximaal aantal keren dat een contactpersoon wordt gebeld voordat deze als gesloten wordt beschouwd, wanneer het gesprek niet voor zo'n aantal is mislukt"
+			"NOSUCHNUMBERMAXRETRY": "Maximaal aantal keren dat een contactpersoon wordt gebeld voordat deze als gesloten wordt beschouwd, wanneer het gesprek niet voor zo'n aantal is mislukt",
+			"NOSUCHNUMBERRETRYTIME": "Tijd in minuten voordat u opnieuw probeert een mislukt contact te bellen omdat een dergelijk nummer niet bestaat"
 		},
 		"MUSICONHOLD": "Wachtmuziek",
 		"ANNOUNCETOAGENT": "Kondig Agent",
diff --git a/public/app/main/apps/motiondialer/i18n/no.json b/public/app/main/apps/motiondialer/i18n/no.json
index 8382578..42125d0 100644
--- a/public/app/main/apps/motiondialer/i18n/no.json
+++ b/public/app/main/apps/motiondialer/i18n/no.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Obligatoriske felt",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Obligatoriske felt",
 			"CALLYSQUAREPROJECT_REQUIRED": "Obligatoriske felt",
-			"TRUNK_REQUIRED": "Obligatoriske felt"
+			"TRUNK_REQUIRED": "Obligatoriske felt",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Verdien må være mindre enn eller lik"
 		},
 		"GENERAL": "Generelt",
 		"AGENTTIMEOUT": "Agent tidsavbrudd",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "Maksimalt antall ganger en kontakt ringes før den vurderes som stengt, når samtalen mislyktes for maskinen",
 			"MACHINERETRYTIME": "Tid i minutter før du prøver å ringe igjen en mislykket kontakt på grunn av maskinen",
 			"NOSUCHNUMBERETRYTIME": "Tid i minutter før du prøver å ringe igjen en mislykket kontakt på grunn av ikke noe slikt nummer",
-			"NOSUCHNUMBERMAXRETRY": "Maksimalt antall ganger en kontakt ringes før den vurderes som lukket, når samtalen mislyktes uten noe slikt nummer"
+			"NOSUCHNUMBERMAXRETRY": "Maksimalt antall ganger en kontakt ringes før den vurderes som lukket, når samtalen mislyktes uten noe slikt nummer",
+			"NOSUCHNUMBERRETRYTIME": "Tid i minutter før du prøver å ringe en mislykket kontakt igjen på grunn av ikke noe slikt nummer"
 		},
 		"MUSICONHOLD": "Musikk på vent",
 		"ANNOUNCETOAGENT": "Annonsere til agent",
diff --git a/public/app/main/apps/motiondialer/i18n/pl.json b/public/app/main/apps/motiondialer/i18n/pl.json
index bfc8c06..d9557f1 100644
--- a/public/app/main/apps/motiondialer/i18n/pl.json
+++ b/public/app/main/apps/motiondialer/i18n/pl.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Pole obowiązkowe",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Pole obowiązkowe",
 			"CALLYSQUAREPROJECT_REQUIRED": "Pole obowiązkowe",
-			"TRUNK_REQUIRED": "Pole obowiązkowe"
+			"TRUNK_REQUIRED": "Pole obowiązkowe",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Wartość musi być mniejsza lub równa"
 		},
 		"GENERAL": "Ogólne",
 		"AGENTTIMEOUT": "Agent Timeout",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "Maksymalna liczba wywołań kontaktu przed uznaniem go za zamknięty, gdy połączenie nie powiodło się dla komputera",
 			"MACHINERETRYTIME": "Czas w minutach przed ponownym wywołaniem nieudanego kontaktu z powodu urządzenia",
 			"NOSUCHNUMBERETRYTIME": "Czas w minutach przed ponownym wywołaniem nieudanego kontaktu z powodu braku takiego numeru",
-			"NOSUCHNUMBERMAXRETRY": "Maksymalna liczba wywołań kontaktu przed uznaniem go za zamknięty, gdy połączenie nie powiodło się z powodu braku takiego numeru"
+			"NOSUCHNUMBERMAXRETRY": "Maksymalna liczba wywołań kontaktu przed uznaniem go za zamknięty, gdy połączenie nie powiodło się z powodu braku takiego numeru",
+			"NOSUCHNUMBERRETRYTIME": "Czas w minutach przed ponowną próbą połączenia z nieudanym kontaktem z powodu braku takiego numeru"
 		},
 		"MUSICONHOLD": "Music on Hold",
 		"ANNOUNCETOAGENT": "Poinformowania agenta",
diff --git a/public/app/main/apps/motiondialer/i18n/pt-BR.json b/public/app/main/apps/motiondialer/i18n/pt-BR.json
index bcaac69..fdf37c5 100644
--- a/public/app/main/apps/motiondialer/i18n/pt-BR.json
+++ b/public/app/main/apps/motiondialer/i18n/pt-BR.json
@@ -229,7 +229,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Campo obrigatório",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Campo obrigatório",
 			"CALLYSQUAREPROJECT_REQUIRED": "Campo obrigatório",
-			"TRUNK_REQUIRED": "Campo obrigatório"
+			"TRUNK_REQUIRED": "Campo obrigatório",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a"
 		},
 		"GENERAL": "Geral",
 		"AGENTTIMEOUT": "Tempo limite do agente",
@@ -335,7 +345,8 @@
 			"MACHINEMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha na máquina",
 			"MACHINERETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à máquina",
 			"NOSUCHNUMBERETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a esse número",
-			"NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para esse número"
+			"NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para esse número",
+			"NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à inexistência desse número"
 		},
 		"MUSICONHOLD": "Música em espera",
 		"ANNOUNCETOAGENT": "Anunciar ao agente",
diff --git a/public/app/main/apps/motiondialer/i18n/pt-PT.json b/public/app/main/apps/motiondialer/i18n/pt-PT.json
index 2292ea1..f1e3ca5 100644
--- a/public/app/main/apps/motiondialer/i18n/pt-PT.json
+++ b/public/app/main/apps/motiondialer/i18n/pt-PT.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Campo obrigatório",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Campo obrigatório",
 			"CALLYSQUAREPROJECT_REQUIRED": "Campo obrigatório",
-			"TRUNK_REQUIRED": "Campo obrigatório"
+			"TRUNK_REQUIRED": "Campo obrigatório",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "O valor deve ser menor ou igual a"
 		},
 		"GENERAL": "Geral",
 		"AGENTTIMEOUT": "Tempo Limite do Agente",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falha na máquina",
 			"MACHINERETRYTIME": "Tempo em minutos antes de tentar chamar novamente um contato com falha devido à máquina",
 			"NOSUCHNUMBERETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato com falha devido a esse número",
-			"NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para esse número"
+			"NOSUCHNUMBERMAXRETRY": "Número máximo de vezes que um contato é chamado antes de considerá-lo fechado, quando a chamada falhou para esse número",
+			"NOSUCHNUMBERRETRYTIME": "Tempo em minutos antes de tentar ligar novamente para um contato que falhou devido à inexistência desse número"
 		},
 		"MUSICONHOLD": "Música em espera",
 		"ANNOUNCETOAGENT": "Anunciar para agente",
diff --git a/public/app/main/apps/motiondialer/i18n/ru.json b/public/app/main/apps/motiondialer/i18n/ru.json
index b89b32f..32daf8d 100644
--- a/public/app/main/apps/motiondialer/i18n/ru.json
+++ b/public/app/main/apps/motiondialer/i18n/ru.json
@@ -3,185 +3,185 @@
 		"MOVE_HOPPERFINAL": "Восстановить контакт",
 		"RESTORECONTACTS": "Восстановить контакты",
 		"NO_SUCH_NUMBER": "Нет такого номера",
-		"DIALORDERBYSCHEDULEDAT": "Сортировка по: scheduledat",
+		"DIALORDERBYSCHEDULEDAT": "Заказ, scheduledat",
 		"ASC": "ASC",
 		"DESC": "DESC",
-		"RECALLAGENT": "Агент: повторный вызов",
-		"DIALRECALLINQUEUE": "Повторный вызов, в очереди",
-		"DIALRECALLMETIMEOUT": "Время ожидания: повторный вызов (Recall Me) [мин]",
-		"RECALLME": "Повторный вызов (Recall Me)",
-		"RECALLFAILEDTIMEOUT": "Неудачная попытка повторного вызова",
-		"PREVIEW_CAMPAIGN": "Предварительный просмотр: кампании",
-		"PREVIEW_CAMPAIGNS": "Предварительный просмотр: кампании",
-		"AMD": "Обнаружение автоответчика Asterisk (AMD)",
+		"RECALLAGENT": "Вызов оператора",
+		"DIALRECALLINQUEUE": "Вызов в очереди",
+		"DIALRECALLMETIMEOUT": "Напомнить мне Тайм-аут [мин.]",
+		"RECALLME": "Напомнить мне",
+		"RECALLFAILEDTIMEOUT": "Вспомнить не удалось",
+		"PREVIEW_CAMPAIGN": "Предварительный просмотр кампании",
+		"PREVIEW_CAMPAIGNS": "Предварительный просмотр кампании",
+		"AMD": "Звездочка автоответчика (AMD)",
 		"AMDTOTALANALYSISTIME": "Общее время анализа",
 		"AMDACTIVE": "AMD",
-		"AMDINITIALSILENCE": "Начальная тишина",
+		"AMDINITIALSILENCE": "Первоначальной тишины",
 		"AMDGREETING": "Приветствие",
 		"AMDAFTERGREETINGSILENCE": "Тишина после приветствия",
-		"AMDSILENCETHRESHOLD": "Порог: тишина",
+		"AMDSILENCETHRESHOLD": "Порог молчания",
 		"AMDMINWORDLENGTH": "Минимальная длина слова",
-		"AMDBETWEENWORDSSILENCE": "Пауза между словами",
-		"AMDMAXIMUMWORDLENGTH": "Минимальная длина слова",
+		"AMDBETWEENWORDSSILENCE": "Молчание между словами",
+		"AMDMAXIMUMWORDLENGTH": "Максимальная длина слова",
 		"AMDMAXIMUMNUMBEROFWORDS": "Максимальное количество слов",
-		"GOTO_QUEUECAMPAIGN": "Перейти к кампаниям очереди в реальном времени",
-		"GOTOREALTIME_QUEUECAMPAIGN": "Перейти к кампаниям очереди в реальном времени",
-		"GOTO_IVRCAMPAIGN": "Перейти к кампаниям IVR в реальном времени",
-		"GOTOREALTIME_IVRCAMPAIGN": "Перейти к кампаниям IVR в реальном времени",
-		"LOGOUT": "Выход",
-		"EDIT_CAMPAIGN": "Редактировать кампанию",
-		"LIMITED": "Ограниченные",
-		"IVR_CAMPAIGNS": "Кампании IVR",
-		"MOTIONDIALER": "Motion Bull",
-		"QUEUECAMPAIGNS": "Кампании очереди",
-		"IVRCAMPAIGNS": "Кампании IVR",
-		"MANAGED": "Обработанные",
-		"AVAILABLE_CONTACTS_FINISHED": "Доступные контакты закончились",
+		"GOTO_QUEUECAMPAIGN": "Перейдите к очереди в реальном времени кампании",
+		"GOTOREALTIME_QUEUECAMPAIGN": "Перейдите к очереди в реальном времени кампании",
+		"GOTO_IVRCAMPAIGN": "Перейдите к в режиме реального времени кампаний IVR",
+		"GOTOREALTIME_IVRCAMPAIGN": "Перейдите к в режиме реального времени кампаний IVR",
+		"LOGOUT": "Выход из системы",
+		"EDIT_CAMPAIGN": "Изменить кампанию",
+		"LIMITED": "Ограниченный",
+		"IVR_CAMPAIGNS": "Кампаний Ivr",
+		"MOTIONDIALER": "Движение системы автоматического обзвона",
+		"QUEUECAMPAIGNS": "Очереди кампаний",
+		"IVRCAMPAIGNS": "Кампаний IVR",
+		"MANAGED": "Управляемый",
+		"AVAILABLE_CONTACTS_FINISHED": "Доступных контактов по завершении",
 		"HISTORY": "История",
 		"SCHEDULEDAT": "Запланировано на",
-		"HOPPERBLACKS": "Накопитель: черный список",
-		"NO_HOPPERBLACK_AVAILABLE": "Доступные элементы отсутствуют",
-		"HOPPERFINALS": "Накопитель: итог",
-		"NO_HOPPERFINAL_AVAILABLE": "Доступные элементы отсутствуют",
-		"HOPPERHISTORIES": "История вызовов",
-		"NO_HOPPERHISTORY_AVAILABLE": "Доступные элементы отсутствуют",
+		"HOPPERBLACKS": "Бункер Blacklist",
+		"NO_HOPPERBLACK_AVAILABLE": "Нет доступных элементов",
+		"HOPPERFINALS": "Окончательный бункера",
+		"NO_HOPPERFINAL_AVAILABLE": "Нет доступных элементов",
+		"HOPPERHISTORIES": "История бункера",
+		"NO_HOPPERHISTORY_AVAILABLE": "Нет доступных элементов",
 		"DELETE_HOPPERHISTORY": "Удалить",
 		"DELETE_HOPPERFINAL": "Удалить",
 		"CONTACTID": "Идентификатор контакта",
 		"STARTTIME": "Время начала",
 		"RESPONSETIME": "Время отклика",
 		"ENDTIME": "Время окончания",
-		"STATUS": "Состояние",
-		"HOPPERS": "Накопитель",
-		"NO_HOPPER_AVAILABLE": "Доступные элементы отсутствуют",
-		"EDIT_HOPPER": "Редактировать накопитель",
-		"DELETE_HOPPER": "Удалить накопитель",
-		"FINAL": "Итог",
+		"STATUS": "Статус",
+		"HOPPERS": "Бункер",
+		"NO_HOPPER_AVAILABLE": "Нет доступных элементов",
+		"EDIT_HOPPER": "Редактирование загрузочного бункера",
+		"DELETE_HOPPER": "Удалить загрузочный бункер",
+		"FINAL": "Окончательный",
 		"BLACKLIST": "Черный список",
 		"NAME": "Имя",
-		"VOICEQUEUES": "Очереди голосовой почты",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"VOICEQUEUES": "Голос очередей",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"BACK": "Назад",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
-		"DELETE_VOICEDISPOSITION": "Удалить диспозицию голосовой почты",
-		"EDIT_VOICEDISPOSITION": "Редактировать диспозицию голосовой почты",
-		"EDIT_VOICEQUEUE": "Редактировать очередь голосовой почты",
-		"DELETE_VOICEQUEUE": "Удалить очередь голосовой почты",
-		"MOHSOUNDS": "Звуки музыки на удержании",
+		"SELECT_NONE": "Выберите пункт None",
+		"DELETE_VOICEDISPOSITION": "Удаление голосовых распоряжения",
+		"EDIT_VOICEDISPOSITION": "Редактировать голосовые распоряжения",
+		"EDIT_VOICEQUEUE": "Изменить голос очереди",
+		"DELETE_VOICEQUEUE": "Удаление голосовых очереди",
+		"MOHSOUNDS": "Мз звуки",
 		"STRATEGY": "Стратегия",
 		"DESCRIPTION": "Описание",
-		"INTERVAL": "Временной интервал",
-		"ADD_VOICEQUEUE": "Добавить очередь голосовой почты",
-		"NEW_QUEUECAMPAIGN": "Новая кампания очереди",
-		"ACTIVE": "Активные",
+		"INTERVAL": "Интервал времени",
+		"ADD_VOICEQUEUE": "Добавить голосовую очереди",
+		"NEW_QUEUECAMPAIGN": "Новой очереди кампании",
+		"ACTIVE": "Активно",
 		"METHOD": "Метод",
 		"POWERLEVEL": "Уровень мощности",
-		"DROPRATE": "Процент прерванных вызовов",
-		"AGENTBUSYFACTOR": "Фактор загрузки агентов",
-		"PREDICTIVEOPTIMIZATION": "Прогнозируемая оптимизация",
-		"PREDICTIVEOPTIMIZATIONPERCENTAGE": "Прогнозируемый процент оптимизации",
-		"PREDICTIVEINTERVAL": "Прогнозируемый интервал",
-		"ADD_QUEUECAMPAIGN": "Добавить кампанию очереди",
-		"CAMPAIGN": "Кампания",
-		"MAXCONCURRENTCALLS": "Макс. количество одновременных звонков",
-		"CONCURRENTCALLS": "Макс. количество одновременных звонков",
-		"ORIGINATE": "Оригинация",
-		"ORIGINATECALLERIDNAME": "Идентификатор вызывающего абонента: имя",
-		"ORIGINATECALLERIDNUMBER": "Идентификатор вызывающего абонента: номер",
-		"ORIGINATETIMEOUT": "Тайм-аут: оригинация",
+		"DROPRATE": "Скорость опускания",
+		"AGENTBUSYFACTOR": "Оператор занят фактором",
+		"PREDICTIVEOPTIMIZATION": "Оптимизации прогнозирования",
+		"PREDICTIVEOPTIMIZATIONPERCENTAGE": "Оптимизации прогнозирования в процентах",
+		"PREDICTIVEINTERVAL": "Интервал прогнозирования",
+		"ADD_QUEUECAMPAIGN": "Добавление очереди кампании",
+		"CAMPAIGN": "Кампании",
+		"MAXCONCURRENTCALLS": "Max одновременных вызовов",
+		"CONCURRENTCALLS": "Max одновременных вызовов",
+		"ORIGINATE": "Инициировать",
+		"ORIGINATECALLERIDNAME": "Идентификатор вызывающего абонента Name",
+		"ORIGINATECALLERIDNUMBER": "Номер вызывающего абонента",
+		"ORIGINATETIMEOUT": "Инициировать тайм-аут",
 		"QUEUEOPTIONS": "Параметры очереди",
-		"QUEUETIMEOUT": "Тайм-аут очереди",
-		"CALLYSQUAREPROJECT": "Проект Cally Square",
-		"RETRYANDFREQUENCY": "Повторная попытка: настройки",
-		"GLOBAL": "Глобальный",
-		"GLOBALMAXRETRY": "Макс. количество повторных попыток",
-		"CONGESTION": "Канал перегружен",
-		"CONGESTIONMAXRETRY": "Макс. количество повторных попыток",
-		"CONGESTIONRETRYTIME": "Время повторного вызова [мин]",
-		"BUSYMAXRETRY": "Макс. количество повторных попыток",
-		"BUSYRETRYTIME": "Время повторного вызова [мин]",
+		"QUEUETIMEOUT": "Время ожидания в очереди",
+		"CALLYSQUAREPROJECT": "Юндкп подкрепить проектную документацию путем систематического квадратных проекта",
+		"RETRYANDFREQUENCY": "Параметры повтора",
+		"GLOBAL": "Глобальной",
+		"GLOBALMAXRETRY": "Максимальное количество попыток",
+		"CONGESTION": "Перегрузка",
+		"CONGESTIONMAXRETRY": "Максимальное количество попыток",
+		"CONGESTIONRETRYTIME": "Время повтора [мин]",
+		"BUSYMAXRETRY": "Максимальное количество попыток",
+		"BUSYRETRYTIME": "Время повтора [мин]",
 		"NOANSWER": "Нет ответа",
-		"NOANSWERMAXRETRY": "Макс. количество повторных попыток",
-		"NOANSWERRETRYTIME": "Время повторного вызова [мин]",
+		"NOANSWERMAXRETRY": "Максимальное количество попыток",
+		"NOANSWERRETRYTIME": "Время повтора [мин]",
 		"QUEUE_PARAMS": "Параметры очереди",
-		"ORIGINATED": "Инициированные",
+		"ORIGINATED": "Возникла",
 		"MESSAGE": "Сообщение",
-		"DROPPED": "Прервано",
-		"CREATED_AT": "Создано на",
+		"DROPPED": "Снизилась",
+		"CREATED_AT": "Созданные в",
 		"LEGEND": {
-			"CUSTOM_APPLICATION": "(*) – Пользовательское приложение."
+			"CUSTOM_APPLICATION": "(*) - пользовательские приложения."
 		},
 		"ERRORS": {
 			"DIALRECALLMETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
 			"DIALRECALLMETIMEOUT_REQUIRED": "Обязательное поле",
-			"NAME_MUST_VALID_PATTERN": "Неверный формат",
-			"PREFIX_MUST_VALID_PATTERN": "Неверный формат",
-			"NAME_REQUIRED": "Обязательное поле",
-			"TIMEOUT_REQUIRED": "Обязательное поле",
-			"PHONENUMBER_REQUIRED": "Обязательное поле",
-			"CONTEXT_REQUIRED": "Обязательное поле",
-			"DESTINATIONPATTERN_REQUIRED": "Обязательное поле",
-			"FULLNAME_REQUIRED": "Обязательное поле",
-			"EMAIL_REQUUIRED": "Обязательное поле",
-			"EMAIL_MUST_VALID": "Неверный формат",
-			"MAILBOX_REQUIRED": "Обязательное поле",
-			"PASSWORD_REQUIRED": "Обязательное поле",
-			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
-			"TIMEZONE_REQUIRED": "Обязательное поле",
-			"PREFIX_REQUIRED": "Обязательное поле",
-			"OPTIONS_REQUIRED": "Обязательное поле",
-			"AFTERCALLWORKDURATION_REQUIRED": "Обязательное поле",
-			"TECHNOLOGY/RESOURCE_REQUIRED": "Обязательное поле",
-			"PHONE_REQUIRED": "Обязательное поле",
-			"VALUE_REQUIRED": "Обязательное поле",
-			"EXTENSION_REQUIRED": "Обязательное поле",
-			"PRIORITY_REQUIRED": "Обязательное поле",
-			"GLOBALMAXRETRY_REQUIRED": "Обязательное поле",
-			"CONGESTIONMAXRETRY_REQUIRED": "Обязательное поле",
-			"CONGESTIONRETRYTIME_REQUIRED": "Обязательное поле",
-			"BUSYMAXRETRY_REQUIRED": "Обязательное поле",
-			"BUSYRETRYTIME_REQUIRED": "Обязательное поле",
-			"NOANSWERMAXRETRY_REQUIRED": "Обязательное поле",
-			"NOANSWERRETRYTIME_REQUIRED": "Обязательное поле",
-			"QUEUETIMEOUT_REQUIRED": "Обязательное поле",
-			"ORIGINATETIMEOUT_REQUIRED": "Обязательное поле",
-			"GLOBALINTERVAL_REQUIRED": "Обязательное поле",
-			"MAXCONCURRENTCALLS_REQUIRED": "Обязательное поле",
-			"CONCURRENTCALLS_REQUIRED": "Обязательное поле",
-			"POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
+			"NAME_MUST_VALID_PATTERN": "Имя должно быть действительным действительный шаблон",
+			"PREFIX_MUST_VALID_PATTERN": "Префикс должен быть действительным действительный шаблон",
+			"NAME_REQUIRED": "Это имя требуется",
+			"TIMEOUT_REQUIRED": "Тайм-аут не требуется",
+			"PHONENUMBER_REQUIRED": "Номер телефона не требуется",
+			"CONTEXT_REQUIRED": "В этом контексте необходимо",
+			"DESTINATIONPATTERN_REQUIRED": "Назначение шаблона не требуется",
+			"FULLNAME_REQUIRED": "В требуется указать полное имя",
+			"EMAIL_REQUUIRED": "Адреса электронной почты не требуется",
+			"EMAIL_MUST_VALID": "Адреса электронной почты должны быть записаны в действительный формат",
+			"MAILBOX_REQUIRED": "Почтовый ящик не требуется",
+			"PASSWORD_REQUIRED": "Пароль не требуется",
+			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
+			"TIMEZONE_REQUIRED": "Часовой пояс не требуется",
+			"PREFIX_REQUIRED": "Префикс не требуется",
+			"OPTIONS_REQUIRED": "Параметры не требуется",
+			"AFTERCALLWORKDURATION_REQUIRED": "После вызова, продолжительность работы не требуется",
+			"TECHNOLOGY/RESOURCE_REQUIRED": "Технология/ресурсов не требуется",
+			"PHONE_REQUIRED": "Номер телефона не требуется",
+			"VALUE_REQUIRED": "Это значение требуется",
+			"EXTENSION_REQUIRED": "Такое продление срока действия необходимо",
+			"PRIORITY_REQUIRED": "Приоритет не требуется",
+			"GLOBALMAXRETRY_REQUIRED": "Максимальное количество повторных попыток не требуется",
+			"CONGESTIONMAXRETRY_REQUIRED": "Максимальное количество повторных попыток не требуется",
+			"CONGESTIONRETRYTIME_REQUIRED": "Время попытки не требуется",
+			"BUSYMAXRETRY_REQUIRED": "Максимальное количество повторных попыток не требуется",
+			"BUSYRETRYTIME_REQUIRED": "Время попытки не требуется",
+			"NOANSWERMAXRETRY_REQUIRED": "Максимальное количество повторных попыток не требуется",
+			"NOANSWERRETRYTIME_REQUIRED": "Время попытки не требуется",
+			"QUEUETIMEOUT_REQUIRED": "Время ожидания в очереди не требуется",
+			"ORIGINATETIMEOUT_REQUIRED": "Инициировать Timeout не требуется",
+			"GLOBALINTERVAL_REQUIRED": "Глобальных интервала не требуется",
+			"MAXCONCURRENTCALLS_REQUIRED": "Значение для Max параллельных вызовов не требуется",
+			"CONCURRENTCALLS_REQUIRED": "Значение для параллельных вызовов не требуется",
+			"POWERLEVEL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Уровень мощности должно быть больше или равно",
+			"PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Предиктивный оптимизации процентное значение должно быть больше или равно",
+			"PREDICTIVEINTERVAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Предиктивный интервал должен быть больше чем или равно",
+			"MAXCONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max параллельных вызовов должно быть больше или равно",
+			"ORIGINATETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Инициировать тайм-аута должно быть больше или равно",
+			"QUEUETIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Очереди ожидания должно быть больше или равно",
+			"AGENTTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Оператор тайм-аута должно быть больше или равно",
+			"RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Повтор должно быть больше или равно",
+			"WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "На время завершения должно быть больше или равно",
+			"WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Вес должен быть больше или равно",
+			"GLOBALMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Глобальной Max Retry должно быть больше или равно",
+			"CONGESTIONMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Перегруженность Max Retry должно быть больше или равно",
+			"CONGESTIONRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Перегруженность времени повторных попыток должно быть больше или равно",
+			"BUSYMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Busy Max Retry должно быть больше или равно",
+			"BUSYRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Busy времени повторных попыток должно быть больше или равно",
+			"NOANSWERMAXRETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "В отсутствие ответа Max Retry должно быть больше или равно",
+			"NOANSWERRETRYTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "В отсутствие ответа времени повторных попыток должно быть больше или равно",
+			"CONCURRENTCALLS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "В параллельных вызовов должно быть больше или равно",
+			"POWERLEVEL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Уровень мощности должно быть меньше или равно",
+			"PREDICTIVEOPTIMIZATIONPERCENTAGE_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Предиктивный оптимизации процентное значение должно быть меньше или равно",
+			"PREDICTIVEINTERVAL_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Предиктивный интервал должен быть меньше или равен",
+			"MAXCONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max параллельных вызовов должно быть меньше или равно",
+			"ORIGINATETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Инициировать Timeout должно быть меньше или равно",
+			"QUEUETIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Очереди ожидания должно быть меньше или равно",
+			"GLOBALMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Глобальной Max Retry должно быть меньше или равно",
+			"CONGESTIONMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Перегруженность Max Retry должно быть меньше или равно",
+			"CONGESTIONRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Перегруженность времени повторных попыток должно быть меньше или равно",
+			"BUSYMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Busy Max Retry должно быть меньше или равно",
+			"BUSYRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Busy времени повторных попыток должно быть меньше или равно",
+			"NOANSWERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "В отсутствие ответа Max Retry должно быть меньше или равно",
+			"NOANSWERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "В отсутствие ответа времени повторных попыток должно быть меньше или равно",
+			"CONCURRENTCALLS_MUST_BE_LESS_THAN_OR_EQUAL_TO": "В параллельных вызовов должно быть меньше или равно",
 			"EMAIL_REQUIRED": "Обязательное поле",
 			"AGENTTIMEOUT_REQUIRED": "Обязательное поле",
 			"INTERVAL_REQUIRED": "Обязательное поле",
@@ -204,452 +204,486 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Обязательное поле",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Обязательное поле",
 			"CALLYSQUAREPROJECT_REQUIRED": "Обязательное поле",
-			"TRUNK_REQUIRED": "Обязательное поле"
+			"TRUNK_REQUIRED": "Обязательное поле",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно"
 		},
-		"GENERAL": "Общие",
-		"AGENTTIMEOUT": "Тайм-аут агента",
+		"GENERAL": "Генеральной",
+		"AGENTTIMEOUT": "Время ожидания оператора",
 		"MAXLENGTH": "Максимальная длина",
-		"RETRY": "Повторная попытка",
-		"WRAPUPTIME": "Время обработки завершенного звонка",
+		"RETRY": "Повторите попытку",
+		"WRAPUPTIME": "Время подготовки сводки",
 		"WEIGHT": "Вес",
-		"JOINWHENEMPTY": "Добавление абонентов в очередь без агентов",
-		"LEAVEWHENEMPTY": "Удаление абонентов из очереди без агентов",
+		"JOINWHENEMPTY": "Присоединиться к при пустом",
+		"LEAVEWHENEMPTY": "Оставьте при пустом",
 		"HELP": {
-			"DIALORDERBYSCHEDULEDAT": "Получить контакты из накопителя (по убыванию или по возрастанию).",
-			"DIALRECALLINQUEUE": "Перенос вызова для агентов в очереди",
-			"DIALRECALLMETIMEOUT": "Интервал времени (в минутах): период действия повторного вызова (Recall Me)",
-			"PRIORITY": "Приоритет в списке",
-			"AMDMAXIMUMWORDLENGTH": "Максимальная допустимая продолжительность одного голосового высказывания",
-			"AMDMINWORDLENGTH": "Минимальная продолжительность звучания голоса, при которой звук следует считать словом",
-			"AMDSILENCETHRESHOLD": "Если средний уровень шума в выборке не достигает указанного значения (в диапазоне от 0 до 32767), то мы будем рассматривать шум как тишину",
-			"AMDTOTALANALYSISTIME": "Максимальное время, отведенное для алгоритма, задачей которого является определить, является ли звук голосом ЧЕЛОВЕКА или звуком МАШИНЫ",
-			"AMDAFTERGREETINGSILENCE": "Тишина после обнаружения приветствия. При выходе за пределы значения обнаруженный результат – ЧЕЛОВЕК",
-			"AMDGREETING": "Максимальная длина приветствия. При выходе за пределы значения обнаруженный результат – МАШИНА",
-			"AMDINITIALSILENCE": "Максимальная продолжительность тишины перед приветствием. При выходе за пределы значения обнаруженный результат – МАШИНА",
-			"AMDACTIVE": "Активировать или деактивировать попытки обнаружения автоответчиков",
-			"AMDBETWEENWORDSSILENCE": "Минимальная продолжительность тишины после произнесенного слова, при которой звук, идущий далее, следует считать новым словом",
-			"AMDMAXIMUMNUMBEROFWORDS": "Максимальное количество слов в приветствии. При ДОСТИЖЕНИИ значения обнаруженный результат – МАШИНА",
-			"CALLYSQUAREPROJECT": "Выбрав проект IVR, номеронабиратель перенаправляет вызов в IVR перед очередью",
-			"PREFIX": "Телефонный префикс",
-			"ACTIVE": "Активные",
-			"AGENTTIMEOUT": "Как долго (значение выражается в секундах) длится вызов на устройство агента",
-			"MAXLENGTH": "Максимальное количество вызывающих абонентов, которым разрешается ждать в очереди (ноль = отсутствие ограничений)",
-			"RETRY": "Как долго (значение выражается в секундах) длится ожидание до вызова следующего агента в очереди по истечении времени ожидания агента (тайм-аута)",
-			"WRAPUPTIME": "Как долго (значение выражается в секундах) агент остается недоступным в очереди после обработки вызова",
-			"WEIGHT": "Используется для определения приоритета в случае, если агенты связаны более чем с одной очередью",
-			"JOINWHENEMPTY": "Если вызывающий абонент добавлен в очередь в условиях, когда нет доступных агентов",
-			"LEAVEWHENEMPTY": "Если вызывающий абонент исключен из очереди в условиях, когда нет доступных агентов",
-			"ANNOUNCEFREQUENCY": "Как часто объявляется позиция вызывающего абонента и/или предполагаемое время ожидания в очереди (0 = отключение)",
-			"MINANNOUNCEFREQUENCY": "Минимальная частота объявлений (полезная функция в случае, если позиция вызывающего абонента часто меняется)",
-			"PERIODICANNOUNCEFREQUENCY": "Частота периодических объявлений, предназначенных для вызывающего абонента",
-			"ANNOUNCEPOSITIONLIMIT": "Используется, если вы определили позицию объявления как «ограничение» или «больше»",
-			"AFTERCALLWORKDURATION": "Длина паузы, запускаемая параметром постобработки вызова After Call Work",
-			"MEMBERDELAY": "Введение задержки перед подключением к очереди вызывающего абонента и агента",
-			"MUSICONHOLD": "Установка музыки для использования в определенной очереди",
-			"ANNOUNCETOAGENT": "Воспроизведение объявления для агента, отвечающего на вызов (например, для того чтобы сообщить ему, из какой очереди вызывающий абонент)",
-			"RANDOMPERIODICANNOUNCE": "В случае значения «да» (yes) воспроизведение периодических объявлений происходит в случайном порядке",
-			"ANNOUNCEHOLDTIME": "Воспроизведение в течение предполагаемого времени ожидания вместе с периодическими объявлениями (Да/Нет/Один раз)",
-			"ANNOUNCECALLERPOSITION": "Используется для определения того, должна ли быть объявлена позиция в очереди вызывающего абонента: Нет = никогда; Да = всегда; Ограничение = исключительно при нахождении в пределах ограничения, определенного параметром announce-position-limit; Больше = исключительно при выходе за пределы значения, определенного параметром announce-position-limit",
-			"REPORTHOLDTIMEAGENT": "Позволяет сообщить время ожидания для вызывающего абонента агенту в очереди до подключения",
-			"PERIODICANNOUNCE": "Набор периодических объявлений для воспроизведения (в определенной последовательности)",
-			"HOLDTIMEANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «Время ожидания». Не определено = объявления нет",
-			"YOUARENEXTANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «Вы первый в очереди». Не определено = объявления нет",
-			"THEREAREANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «Имеются». Не определено = объявления нет",
-			"WAITINGCALLSANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «вызовы на ожидании». Не определено = объявления нет",
-			"ESTIMATEDHOLDTIMEANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «Расчетное время ожидания». Не определено = объявления нет",
-			"MINUTESANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «минуты». Не определено = объявления нет",
-			"MINUTEANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «минута». Не определено = объявления нет",
-			"SECONDSANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «секунды». Не определено = объявления нет",
-			"THANKYOUANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «Благодарим за терпение». Не определено = объявления нет",
-			"AFTERCALLWORK": "При включении агент будет поставлен на паузу после обработки вызова",
-			"AUTOPAUSE": "Включение/отключение автоматической паузы для агентов, которые не отвечают на вызов. При включении данного параметра агент ставится в паузу относительно всех очередей, к которым он относится",
-			"RINGINUSE": "Для избежания/разрешения отправки вызовов участникам со статусом «Используется»",
-			"TIMEOUTRESTART": "В случае значения «да» тайм-аут для ответа агента сбрасывается, если от канала получены данные о статусе «ЛИНИЯ ЗАНЯТА» (BUSY) или «КАНАЛ ПЕРЕГРУЖЕН» (CONGESTION)",
-			"MONITORFORMAT": "Определяет формат файла для использования при записи. Если соответствующий формат монитора неактивен, запись вызовов осуществляться не будет",
-			"CONTEXT": "Позволяет вызывающему абоненту выйти из очереди, нажав одну цифру DTMF. Если контекст задан и вызывающий абонент вводит цифру, то эта цифра попытается быть сопоставленной в указанном контексте, и выполнение диалплана продолжится там",
-			"SETINTERFACEVARIABLES": "Если установлено значение «да» (yes), то непосредственно перед подключением вызывающего абонента к агенту очереди будут установлены некоторые переменные (дополнительную информацию см. вики-документацию: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">нажмите здесь</a>)",
-			"SETQUEUEVARIABLES": "Если установлено значение «да» (yes), то непосредственно перед тем, как вызывающий абонент будет подключен к агенту очереди и покинет очередь, будут установлены некоторые переменные (для получения дополнительной информации см. вики-документацию: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">нажмите здесь</a>)",
-			"SETQUEUEENTRYVARIABLES": "Если установлено значение «да» (yes), то непосредственно перед подключением вызывающего абонента к агенту очереди будут установлены некоторые переменные (дополнительную информацию см. вики-документацию: <a target=\"_blank\"href=\"https://wiki.xcallymotion.com/display/XMV/Queue+Campaigns#QueueCampaigns-Advanced\">нажмите здесь</a>)",
-			"RECORDING": "Включить запись звонка",
-			"VOICEMAIL_CONTEXT": "Контекст относительного расширения",
-			"METHOD": "Метод исходящего обзвона",
-			"POWERLEVEL": "Количество контактов для вызова любого доступного агента",
-			"PREDICTIVEOPTIMIZATION": "Фактор оптимизации в прогнозирующем алгоритме",
-			"PREDICTIVEOPTIMIZATIONPERCENTAGE": "Процент, в основе которого – выбранный прогнозируемый фактор оптимизации",
-			"PREDICTIVEINTERVAL": "Временной интервал (в минутах), учитываемый прогнозирующим алгоритмом для расчета количества вызовов, которое генерируется для достижения оптимизации результата",
-			"MAXCONCURRENTCALLS": "Максимальное количество одновременных вызовов, инициированных исходящим номеронабирателем для данной кампании (0 = без ограничений)",
-			"CONCURRENTCALLS": "Максимальное количество одновременных вызовов, инициированных исходящим номеронабирателем для данной кампании",
-			"ORIGINATECALLERIDNAME": "Исходящий идентификатор вызывающего абонента: имя",
-			"ORIGINATECALLERIDNUMBER": "Исходящий идентификатор вызывающего абонента: номер",
-			"ORIGINATETIMEOUT": "Время (в секундах), в течение которого в ходе исходящего вызова должно быть установлено соединение, и если этого не произошло, то устанавливается статус «Нет ответа» ",
-			"QUEUETIMEOUT": "Время (в секундах), в течение которого вызов ожидает в очереди, прежде чем быть прерванным (мин. 1 и макс. 999)",
-			"GLOBALMAXRETRY": "Максимальное количество раз, в течение которых происходит вызов контакта, прежде чем он будет считаться закрытым",
-			"CONGESTIONMAXRETRY": "Максимальное количество раз, в течение которых происходит вызов контакта, прежде чем он будет считаться закрытым, в случае если вызов не состоялся вследствие перегрузки канала",
-			"CONGESTIONRETRYTIME": "Время в минутах, которое пройдет, прежде чем произойдет попытка повторного вызова контакта, с которым не удалось связаться до этого вследствие перегрузки канала",
-			"NOANSWERMAXRETRY": "Максимальное количество раз, в течение которых происходит вызов контакта, прежде чем он будет считаться закрытым, в случае если вызов не состоялся вследствие отсутствия ответа",
-			"NOANSWERRETRYTIME": "Время в минутах, которое пройдет, прежде чем произойдет попытка повторного вызова контакта, с которым не удалось связаться до этого вследствие отсутствия ответа",
-			"GLOBALINTERVAL": "Общий временной интервал, в течение которого допустимы вызовы контактов номеронабирателем. Мы снимаем с себя ответственность и призываем вас к внимательности при внесении изменений в данное поле, поскольку вы можете нарушить требования национального законодательства, относящиеся к устройствам автоматического набора",
-			"NAME": "Поддерживаются только цифры, буквы и специальные символы (._)",
-			"TIMEOUT": "Количество секунд для вызова агента в очереди",
-			"CALLYSQUAREPROJECTPREVIEW": "Выбрав проект IVR, номеронабиратель после ответа агента перенаправляет вызов в IVR (IVR направляются агенту).",
-			"CALLYSQUAREPROJECTPREVIEW2": "Выбрав проект IVR, номеронабиратель перенаправляет вызов в IVR в случае, если агент прервал вызов или недоступен (IVR направляются агенту).",
-			"RUNIFHANGUPAGENT": "Запустить проект Cally Square Project (после) даже в случае, если агент прекращает вызов",
-			"CALLYSQUAREPROJECT2": "Выбрав проект IVR, номеронабиратель после очереди (если очередь заканчивается в соответствии с тайм-аутом) перенаправляет вызов в IVR",
-			"RANDOMLASTDIGITCALLERIDNUMBER": "Если значение составляет больше 0, система случайным образом генерирует соответствующие последние цифры номера исходящего идентификатора вызывающего абонента",
-			"BUSYMAXRETRY": "Максимальное количество раз, в течение которых происходит вызов контакта, прежде чем он будет считаться закрытым, в случае если вызов не состоялся вследствие того, что линия была занята",
-			"BUSYRETRYTIME": "Время в минутах, которое пройдет, прежде чем произойдет попытка повторного вызова контакта, с которым не удалось связаться до этого вследствие того, что линия была занята",
-			"MANDATORYDISPOSITIONPAUSEID": "Статус: пауза для установки во время обязательной диспозиции",
-			"PREDICTIVEMAXTHRESHOLD": "Если процент агентов, доступных во временном окне (в сравнении с агентами, доступными во время прогнозирования), выходит за рамки заданного конфигурацией максимального предельного значения, прогнозирующая система производит пересчет прогноза. ",
-			"PREDICTIVEMINTHRESHOLD": "Если процент агентов, доступных во временном окне (в сравнении с агентами, доступными во время прогнозирования), выходит за рамки заданного конфигурацией минимального предельного значения, прогнозирующая система производит пересчет прогноза."
+			"DIALORDERBYSCHEDULEDAT": "Получить контакты из бункера (восходящий или нисходящий).",
+			"DIALRECALLINQUEUE": "Перепланирование вызова для операторов в очереди",
+			"DIALRECALLMETIMEOUT": "Временной интервал (в минутах) для повторного вызова меня срок действия",
+			"PRIORITY": "Приоритет в списке",
+			"AMDMAXIMUMWORDLENGTH": "Максимальная длительность допускается один голос высказывание",
+			"AMDMINWORDLENGTH": "Минимальная продолжительность голосового считается слово",
+			"AMDSILENCETHRESHOLD": "Если средний уровень шума в образце не достигает этого значения, от масштаба 0 к 32767, то мы будем рассматривать это как молчание",
+			"AMDTOTALANALYSISTIME": "Максимально допустимое время для того, чтобы алгоритм мог принять решение о том, будет ли звук представляет собой человека или машину,",
+			"AMDAFTERGREETINGSILENCE": "Тишина после обнаружения в приветствие. Если превышено, то результат является выявление в качестве одного из прав",
+			"AMDGREETING": "Максимальная длина приветствия. Если превышено, то результат является выявление, как станок",
+			"AMDINITIALSILENCE": "Максимальная тишина длительность до приветствия. Если превышено, то результат является выявление, как станок",
+			"AMDACTIVE": "Активировать или деактивировать автоответчики попыток обнаружения",
+			"AMDBETWEENWORDSSILENCE": "Минимальная продолжительность молчания после слова рассмотреть звук, который следует как новое слово",
+			"AMDMAXIMUMNUMBEROFWORDS": "Максимальное количество слов в приветствие. Если, затем в результате обнаружения в машине",
+			"CALLYSQUAREPROJECT": "Если вы выберите IVR проекта из списка, система автоматического обзвона будет переадресовать вызов ИГМ до его постановки в очередь.",
+			"PREFIX": "Префикс телефона",
+			"ACTIVE": "Активно",
+			"AGENTTIMEOUT": "Указывает количество секунд для кольцо оператора устройства.",
+			"MAXLENGTH": "Указывает максимальное число разрешенных абонентов будет в состоянии ожидания в очереди. Нулевое значение означает неограниченное количество абонентов не допускаются в очереди.",
+			"RETRY": "Указывает количество секунд ожидания перед следующей члена в очереди, если значение тайм-аута не иссякнет при попытке кольцо членом очереди.",
+			"WRAPUPTIME": "Количество секунд для поддержания члена недоступна в очереди после завершения вызова.",
+			"WEIGHT": "Определяет вес очереди. Очереди с более высокий вес определяется получите первый приоритет когда члены связаны с несколькими очередями.",
+			"JOINWHENEMPTY": "Управляет ли вызывающий абонент будет добавлен в очередь при отсутствии членов доступны.",
+			"LEAVEWHENEMPTY": "Используется для управления ли абоненты ногами из очереди когда члены больше не доступен для вызовов.",
+			"ANNOUNCEFREQUENCY": "Определяет, как часто мы должны объявить о вызывающем абоненте, положение и/или время удержания в очереди. Задать это значение на ноль, чтобы отключить.",
+			"MINANNOUNCEFREQUENCY": "Указывает минимальное количество времени, которое должно пройти перед тем мы объявляем о абонента в позицию в очереди еще раз. Это значение используется при абонента в положение может меняться очень часто, чтобы предотвратить слушания вызывающего абонента несколько обновлений в короткий период времени.",
+			"PERIODICANNOUNCEFREQUENCY": "Показывает, как часто мы должны сделать периодические объявления для абонента.",
+			"ANNOUNCEPOSITIONLIMIT": "Если вы определены объявить положение либо как ограничение или более.",
+			"AFTERCALLWORKDURATION": "Длительность паузы включается работа после вызова параметр",
+			"MEMBERDELAY": "Если вы хотите быть задержка до вызывающего абонента и очереди членом соединены друг с другом.",
+			"MUSICONHOLD": "Устанавливает музыки класса для использования в конкретной очереди.",
+			"ANNOUNCETOAGENT": "Используется для воспроизведения объявление на оператора, ответил на вызов, обычно ему знать, какие очереди вызывающего абонента.",
+			"RANDOMPERIODICANNOUNCE": "Если установлено значение Да, будет играть определенных периодических объявлений о вакансиях в произвольном порядке.",
+			"ANNOUNCEHOLDTIME": "Определяет по оценкам времени удержания должен воспроизводиться вместе с периодических объявлений.",
+			"ANNOUNCECALLERPOSITION": "Определяет номер вызывающего абонента в очереди должно быть объявлено на нее. Если установлено значение Нет, положение никогда не будет объявлено дополнительно. Если установлено значение Да, абонента в положении всегда будет объявлено дополнительно. Если для этого параметра установлено значение предела, абонент услышит ее положение в очереди только если он находится в пределах заданного предела, объявить-position-предел. Если значение установлено на более абонент услышит ее положение, если она выходит за рамки номер определяется объявить-position-предел.",
+			"REPORTHOLDTIMEAGENT": "Позволяет создавать отчеты о абонента в время удержания в очередь член до моста.",
+			"PERIODICANNOUNCE": "Набор периодических объявлений, воспроизводятся в том порядке они определены.",
+			"HOLDTIMEANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Время удержания\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"YOUARENEXTANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Теперь Вы сначала в линии\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"THEREAREANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Есть\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"WAITINGCALLSANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Вызовов ожидающих\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"ESTIMATEDHOLDTIMEANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Оценка текущего времени удержания\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"MINUTESANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Минуты\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"MINUTEANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Минуты\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"SECONDSANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"секунд\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"THANKYOUANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Благодарим вас за ваше терпение\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"AFTERCALLWORK": "Если активно, оператор будет установлен на паузу после полного завершения вызова в очередь",
+			"AUTOPAUSE": "Включение/отключение автоматического приостановки члены Совета, которые не ответить на вызов. Если активно причины этого члена на паузу во всех очередях он является членом.",
+			"RINGINUSE": "Используется для предотвращения отправки вызовов для членов, состояние которого находится в использовании.",
+			"TIMEOUTRESTART": "Если установлено значение Да, Сброс тайм-аут для ответа оператора либо занят или состояние перегрузки будет получено от канала.",
+			"MONITORFORMAT": "Указывает формат файла для использования при записи. Если монитор формата неактивно, вызовы не будут записаны.",
+			"CONTEXT": "Позволяет вызывающему абоненту для выхода из очереди нажатием одной цифры DTMF. Если контекст не указан и абонент вводит номер, цифра будет пытаться быть подобраны в контексте указанного и команду display dialplan analysis исполнения будет и впредь.",
+			"SETINTERFACEVARIABLES": "Если установлено значение Да, просто до абонента, параллельной линии с очередью членов некоторых переменных будет set(см. wiki)",
+			"SETQUEUEVARIABLES": "Если установлено значение Да, просто до абонента, параллельной линии с очередью член и непосредственно до абонента оставив очереди некоторых переменных будет set(см. wiki)",
+			"SETQUEUEENTRYVARIABLES": "Если установлено значение Да, просто до абонента, параллельной линии с очередью членов некоторых переменных будет set(см. wiki)",
+			"RECORDING": "Включение записи вызова",
+			"VOICEMAIL_CONTEXT": "В контексте относительного добавочный номер.",
+			"METHOD": "Номеронабиратель исходящих вызовов метода.",
+			"POWERLEVEL": "Количество контактов для вызова для одного из доступных операторов.",
+			"PREDICTIVEOPTIMIZATION": "Коэффициент для оптимизации в Предиктивный алгоритм.",
+			"PREDICTIVEOPTIMIZATIONPERCENTAGE": "Процент на основе выбранного оптимизации прогнозирования фактором",
+			"PREDICTIVEINTERVAL": "Интервал времени в минутах, которые должны быть рассмотрены Предиктивный алгоритм для вычисления количества вызовов для генерирования для оптимизации оптимизации прогнозирования фактором",
+			"MAXCONCURRENTCALLS": "Максимальное количество одновременных вызовов, который будет вызван номеронабиратель для автоматических исходящих звонков.",
+			"CONCURRENTCALLS": "Максимальное количество одновременных вызовов, который будет вызван номеронабиратель для автоматических исходящих звонков для этой кампании.",
+			"ORIGINATECALLERIDNAME": "Идентификатор вызываемого абонента Name",
+			"ORIGINATECALLERIDNUMBER": "Исходящий номер вызывающего абонента",
+			"ORIGINATETIMEOUT": "Время в секундах для отправляющей исходящего вызова для установления соединения. Если connectin не установлено, инициировать состояние будет не в состоянии ответить на этот вопрос.",
+			"QUEUETIMEOUT": "Время (в секундах), в течение которого вызов может находиться в очереди до его падения (1 мин.) и Max (макс. 999)",
+			"GLOBALMAXRETRY": "Максимальное количество раз в контакт называется до рассмотрения ее закрытой",
+			"CONGESTIONMAXRETRY": "Максимальное количество раз в не контакта для перегрузки причины называется до рассмотрения ее закрытой",
+			"CONGESTIONRETRYTIME": "Время в минутах перед повторной попыткой достичь не удалось связаться с по причине перегрузки",
+			"NOANSWERMAXRETRY": "Максимальное количество раз в не удалось обратиться за нет ответа причины называется до рассмотрения ее закрытой",
+			"NOANSWERRETRYTIME": "Время в минутах перед повторной попыткой достичь не удалось связаться с для нет ответа причины",
+			"GLOBALINTERVAL": "Глобальной интервал времени, в течение которого система автоматического обзвона не допускается для вызова контактов. Обратите внимание при изменении этой области. Мы не несет ответственности за невыполнение государством Autodialer законов и правил.",
+			"NAME": "Только цифры, буквы и специальные символы (_) поддерживаются",
+			"TIMEOUT": "Указывает число секунд в кольцо на устройстве.",
+			"CALLYSQUAREPROJECTPREVIEW": "Выбирая проект IVR, дозвонщик переадресует вызов на IVR, когда агент отвечает. (IVR будет перенаправлен на агента)",
+			"CALLYSQUAREPROJECTPREVIEW2": "Выбирая проект IVR, дозвонщик переадресует вызов на IVR, когда клиент зависает или недоступен. (IVR будет перенаправлен на агента)",
+			"RUNIFHANGUPAGENT": "Запуск проекта Cally Square После того, как агент отложит вызов",
+			"CALLYSQUAREPROJECT2": "Выбрав проект IVR, дозвонщик переадресует вызов в IVR после очереди. (Если очередь заканчивается таймаутом)",
+			"RANDOMLASTDIGITCALLERIDNUMBER": "Если он больше 0, он генерирует последние числа случайным образом исходящего идентификационного номера вызывающего абонента",
+			"BUSYMAXRETRY": "Максимальное количество раз, которое контакт вызывается, прежде чем считать его закрытым, когда вызов не состоялся из-за занятости",
+			"BUSYRETRYTIME": "Время в минутах, прежде чем снова попытаться позвонить неудавшемуся контакту из-за занятости",
+			"MANDATORYDISPOSITIONPAUSEID": "Статус паузы, чтобы установить во время обязательного распоряжения",
+			"PREDICTIVEMAXTHRESHOLD": "Если процент агентов, доступных во временном окне, по сравнению с агентами, доступными во время прогнозирования, превышает настроенный максимальный предел, прогнозирование пересчитывает прогноз.",
+			"PREDICTIVEMINTHRESHOLD": "Если процент агентов, доступных во временном окне, по сравнению с агентами, доступными во время прогнозирования, превышает настроенный минимальный предел, прогнозирование пересчитывает прогноз.",
+			"ABANDONEDMAXRETRY": "Максимальное количество вызовов контакта, прежде чем он будет считаться закрытым, когда вызов не удался и был прерван",
+			"ABANDONEDRETRYTIME": "Время в минутах до повторной попытки перезвонить неудавшемуся контакту из-за отказа",
+			"AGENTREJECTMAXRETRY": "Максимальное количество вызовов контакта, прежде чем он будет считаться закрытым, когда вызов не удался для отклонения оператора",
+			"AGENTREJECTRETRYTIME": "Время в минутах до повторной попытки дозвона. Неудачный контакт из-за отказа агента.",
+			"DROPMAXRETRY": "Максимальное количество вызовов контакта, прежде чем он будет считаться закрытым, когда вызов не удалось сбросить",
+			"DROPRETRYTIME": "Время в минутах перед повторной попыткой дозвона. Неудачный контакт из-за падения",
+			"MACHINEMAXRETRY": "Максимальное количество вызовов контакта, прежде чем он будет считаться закрытым, когда вызов не удался для машины",
+			"MACHINERETRYTIME": "Время в минутах до повторной попытки дозвона. Неудачный контакт из-за машины",
+			"NOSUCHNUMBERMAXRETRY": "Максимальное количество вызовов контакта, прежде чем он будет считаться закрытым, если вызов не удался ни для одного такого номера",
+			"NOSUCHNUMBERRETRYTIME": "Время в минутах до повторной попытки дозвона. Неудачный контакт из-за отсутствия такого номера"
 		},
 		"MUSICONHOLD": "Музыка на удержании",
-		"ANNOUNCETOAGENT": "Объявить агенту",
+		"ANNOUNCETOAGENT": "Сообщить оператору",
 		"ANNOUNCEMENTS": "Объявления",
-		"ADVANCEDPREVIEW": "Продвинутый",
-		"ADVANCED": "Продвинутый",
-		"ADVANCE": "Продвинутый",
-		"ANNOUNCEFREQUENCY": "Частота объявлений",
-		"MINANNOUNCEFREQUENCY": "Минимальная частота объявлений",
-		"PERIODICANNOUNCEFREQUENCY": "Периодическая частота объявлений",
-		"RANDOMPERIODICANNOUNCE": "Случайная частота объявлений",
-		"ANNOUNCEHOLDTIME": "Время ожидания в объявлении",
-		"ANNOUNCECALLERPOSITION": "Объявить позицию вызывающего абонента",
-		"ANNOUNCEPOSITIONLIMIT": "Объявить ограничение позиций",
-		"REPORTHOLDTIMEAGENT": "Сообщить агенту о времени ожидания",
-		"PERIODICANNOUNCE": "Периодические объявления",
-		"HOLDTIMEANNOUNCE": "Объявления о времени ожидания",
-		"YOUARENEXTANNOUNCE": "Объявления «Вы следующий»",
-		"THEREAREANNOUNCE": "Объявления «Имеются»",
-		"WAITINGCALLSANNOUNCE": "Объявления о вызовах в режиме ожидания",
-		"ESTIMATEDHOLDTIMEANNOUNCE": "Объявления о расчетном времени ожидания",
-		"MINUTESANNOUNCE": "Объявления о минутах",
-		"MINUTEANNOUNCE": "Объявления о минуте",
-		"SECONDSANNOUNCE": "Объявления о секундах",
-		"THANKYOUANNOUNCE": "Объявления «Благодарим»",
-		"AUTOPAUSE": "Автоматическая постановка на паузу",
-		"AFTERCALLWORK": "After Call Work",
-		"AFTERCALLWORKDURATION": "Продолжительность: параметр After Call Work",
-		"RINGINUSE": "Вызов используется",
-		"MEMBERDELAY": "Задержка до того, как участник соединится с вызывающим абонентом",
-		"TIMEOUTRESTART": "Время повторного вызова агента, который не принял звонок из очереди",
+		"ADVANCEDPREVIEW": "Расширенный",
+		"ADVANCED": "Расширенные возможности",
+		"ADVANCE": "Расширенные возможности",
+		"ANNOUNCEFREQUENCY": "Объявить о частоте",
+		"MINANNOUNCEFREQUENCY": "Объявить о минимальной частоты",
+		"PERIODICANNOUNCEFREQUENCY": "Периодические объявить о частоте",
+		"RANDOMPERIODICANNOUNCE": "Случайные периодические объявить о",
+		"ANNOUNCEHOLDTIME": "Объявить о времени удержания",
+		"ANNOUNCECALLERPOSITION": "Объявить о положении вызывающего абонента",
+		"ANNOUNCEPOSITIONLIMIT": "Объявить предельное положение",
+		"REPORTHOLDTIMEAGENT": "Доклад оператор время удержания",
+		"PERIODICANNOUNCE": "Периодические объявить о",
+		"HOLDTIMEANNOUNCE": "Время удержания объявить о",
+		"YOUARENEXTANNOUNCE": "\"Вы далее' объявить о",
+		"THEREAREANNOUNCE": "'Есть' объявить о",
+		"WAITINGCALLSANNOUNCE": "Ожидающих вызовов объявить о",
+		"ESTIMATEDHOLDTIMEANNOUNCE": "По оценкам времени удержания объявить о",
+		"MINUTESANNOUNCE": "Минут объявить о",
+		"MINUTEANNOUNCE": "Минуту объявить о",
+		"SECONDSANNOUNCE": "Секунд объявить о",
+		"THANKYOUANNOUNCE": "\"Спасибо\" объявить о",
+		"AUTOPAUSE": "Автоматическая пауза",
+		"AFTERCALLWORK": "Работа после вызова",
+		"AFTERCALLWORKDURATION": "Работа после вызова продолжительность",
+		"RINGINUSE": "Кольцо в использовании",
+		"MEMBERDELAY": "Член временной задержки",
+		"TIMEOUTRESTART": "Тайм-аут перезапуска",
 		"MONITORFORMAT": "Формат записи",
-		"SETINTERFACEVARIABLES": "Задать переменные интерфейса",
-		"SETQUEUEVARIABLES": "Задать переменные очереди",
-		"SETQUEUEENTRYVARIABLES": "Задать переменные записи в очереди",
-		"CONTEXT": "Контекст",
+		"SETINTERFACEVARIABLES": "Установите интерфейс переменных",
+		"SETQUEUEVARIABLES": "Задать очередь переменных",
+		"SETQUEUEENTRYVARIABLES": "Задать очередь запись переменных",
+		"CONTEXT": "Контексте",
 		"SAVE": "Сохранить",
 		"SETTINGS": "Настройки",
-		"INBOUNDROUTES": "Входящая маршрутизация",
+		"INBOUNDROUTES": "Входящие маршруты",
 		"PHONENUMBER": "Номер телефона",
-		"ADD_INBOUNDROUTE": "Добавить входящий маршрут",
-		"EDIT_INBOUNDROUTE": "Редактировать входящий маршрут",
-		"DELETE_INBOUNDROUTE": "Удалить входящий маршрут",
+		"ADD_INBOUNDROUTE": "Добавить маршрут входящих вызовов",
+		"EDIT_INBOUNDROUTE": "Редактировать маршрут входящих вызовов",
+		"DELETE_INBOUNDROUTE": "Удалить маршрут при обработке входящих вызовов",
 		"ACTIONS": "Действия",
-		"OUTBOUNDROUTES": "Исходящая маршрутизация",
-		"DESTINATIONPATTERN": "Шаблон назначения",
-		"ADD_OUTBOUNDROUTE": "Добавить исходящий маршрут",
-		"EDIT_OUTBOUNDROUTE": "Редактировать исходящий маршрут",
-		"DELETE_OUTBOUNDROUTE": "Удалить исходящий маршрут",
-		"CUTDIGITS": "Вырезать цифры",
+		"OUTBOUNDROUTES": "Маршруты исходящих вызовов",
+		"DESTINATIONPATTERN": "Схема назначения",
+		"ADD_OUTBOUNDROUTE": "Добавить маршрут исходящих вызовов",
+		"EDIT_OUTBOUNDROUTE": "Редактировать маршрут исходящих вызовов",
+		"DELETE_OUTBOUNDROUTE": "Удалить маршрут исходящих вызовов",
+		"CUTDIGITS": "Разрежьте цифр",
 		"RECORDING": "Запись",
 		"RECORDINGFORMAT": "Формат записи",
-		"INTERNALROUTES": "Внутренняя маршрутизация",
+		"INTERNALROUTES": "Внутренние маршруты",
 		"ADD_INTERNALROUTE": "Добавить внутренний маршрут",
-		"EDIT_INTERNALROUTE": "Редактировать внутренний маршрут",
-		"DELETE_INTERNALROUTE": "Удалить внутренний маршрут",
-		"CONTEXTS": "Контексты",
-		"ADD_CONTEXT": "Добавить контекст",
-		"EDIT_CONTEXT": "Редактировать контекст",
-		"DELETE_CONTEXT": "Удалить контекст",
-		"VOICEMAILS": "Голосовая почта",
+		"EDIT_INTERNALROUTE": "Редактирование внутренних маршрутов",
+		"DELETE_INTERNALROUTE": "Удалить внутреннего маршрута",
+		"CONTEXTS": "Контекстах",
+		"ADD_CONTEXT": "Добавить контексте",
+		"EDIT_CONTEXT": "Правка контекстное",
+		"DELETE_CONTEXT": "Удаление связи",
+		"VOICEMAILS": "Сообщения голосовой почты",
 		"ADD_VOICEMAIL": "Добавить голосовую почту",
-		"EDIT_VOICEMAIL": "Редактировать голосовую почту",
+		"EDIT_VOICEMAIL": "Редактировать сообщения голосовой почты",
 		"DELETE_VOICEMAIL": "Удалить голосовую почту",
-		"FULLNAME": "Полное имя",
-		"EMAIL": "Электронная почта",
+		"FULLNAME": "Полное Имя",
+		"EMAIL": "Адрес электронной почты",
 		"MAILBOX": "Почтовый ящик",
 		"PASSWORD": "Пароль",
-		"CONFIRM_PASSWORD": "Подтверждение пароля",
+		"CONFIRM_PASSWORD": "Подтвердите пароль",
 		"TIMEZONE": "Часовой пояс",
-		"ATTACH": "Прикрепить",
+		"ATTACH": "Прикрепите",
 		"ENVELOPE": "Конверт",
 		"DELETE": "Удалить",
-		"EMAILBODY": "Текст сообщения электронной почты",
-		"EMAILSUBJECT": "Тема письма",
-		"MAXSECONDS": "Макс. секунд",
-		"MAXMESSAGES": "Макс. сообщений",
+		"EMAILBODY": "Тело сообщения",
+		"EMAILSUBJECT": "Тема в сообщении электронной почты",
+		"MAXSECONDS": "Max секунд",
+		"MAXMESSAGES": "Max сообщений",
 		"MESSAGES": "Сообщения",
-		"SORT": "Сортировать",
-		"ADD_MUSICONHOLD": "Добавить музыку на удержании",
-		"MUSICONHOLDS": "Музыка на удержании",
-		"EDIT_MUSICONHOLD": "Редактировать музыку на удержании",
-		"DELETE_MUSICONHOLD": "Удалить музыку на удержании",
+		"SORT": "Порядок сортировки",
+		"ADD_MUSICONHOLD": "Добавление музыки на удержании",
+		"MUSICONHOLDS": "Разная музыка на удержании",
+		"EDIT_MUSICONHOLD": "Редактирование музыки на удержании",
+		"DELETE_MUSICONHOLD": "Удалить музыка на удержании",
 		"DIRECTORY": "Каталог",
-		"AUDIOFILES": "Аудиофайлы",
+		"AUDIOFILES": "Звуковые файлы",
 		"RECORDINGS": "Записи",
 		"CHANSPY": "ChanSpy",
 		"PREFIX": "Префикс",
-		"OPTIONS": "Опции",
+		"OPTIONS": "Варианты",
 		"AUTH": "Auth",
-		"ADD_CHANSPY": "Добавить модуль ChanSpy",
-		"EDIT_CHANSPY": "Редактировать модуль ChanSpy",
-		"DELETE_CHANSPY": "Удалить модуль ChanSpy",
-		"AGENTS": "Агенты",
+		"ADD_CHANSPY": "Добавить ChanSpy",
+		"EDIT_CHANSPY": "Редактировать ChanSpy",
+		"DELETE_CHANSPY": "Удалить ChanSpy",
+		"AGENTS": "Операторы",
 		"TELEPHONES": "Телефоны",
 		"QUEUES": "Очереди",
-		"QUEUE_CALLS": "Вызовы в очереди",
+		"QUEUE_CALLS": "Вызовы в очереди",
 		"QUEUE_PARAMETERS": "Параметры очереди",
-		"ABANDONED_CALLS": "Потерянные вызовы",
+		"ABANDONED_CALLS": "Отмененные вызовы",
 		"OUTBOUND_CALLS": "Исходящие вызовы",
 		"AGI": "AGI",
-		"DIAL": "Набор номера",
-		"INTERNALDIAL": "Набор внутреннего номера",
-		"EXTERNALDIAL": "Набор внешнего номера",
-		"RINGGROUP": "Группа вызовов",
+		"DIAL": "Диск набора команд",
+		"INTERNALDIAL": "Внутреннего набора",
+		"EXTERNALDIAL": "Внешний диск набора команд",
+		"RINGGROUP": "Кольцо группы",
 		"PLAYBACK": "Воспроизведение",
-		"QUEUE": "Очередь",
-		"SET": "Set",
+		"QUEUE": "Очереди",
+		"SET": "Установить",
 		"VOICEMAIL": "Голосовая почта",
-		"GOTO": "Перейти к",
-		"HANGUP": "Положить трубку",
-		"CUSTOM": "Дополняющая конфигурация Custom",
-		"PROJECT": "Проект Cally-Square",
-		"TECHNOLOGY/RESOURCE": "Технология/Ресурс",
+		"GOTO": "GoTo",
+		"HANGUP": "Отключение",
+		"CUSTOM": "Пользовательский",
+		"PROJECT": "Cally-Square проекта",
+		"TECHNOLOGY/RESOURCE": "Технологии и ресурсов",
 		"URL": "URL",
-		"EDIT_APP": "Редактировать приложение",
-		"EDIT_INTERVAL": "Редактировать интервал",
-		"DELETE_APP": "Удалить приложение",
-		"INTERVALS": "Интервалы",
+		"EDIT_APP": "Изменить приложение",
+		"EDIT_INTERVAL": "Изменить интервал",
+		"DELETE_APP": "Удалить приложения",
+		"INTERVALS": "Интервалы времени",
 		"USER": "Пользователь",
-		"TRUNK": "Транк",
-		"PHONE": "Телефон",
-		"AUDIO_FILES": "Аудиофайлы",
-		"ANNOUNCE_OVERRIDES": "Объявления: заменяющая конфигурация Override",
-		"MACRO": "Macro",
-		"GOSUB": "GoSub",
+		"TRUNK": "Сл",
+		"PHONE": "Номер телефона",
+		"AUDIO_FILES": "Звуковые файлы",
+		"ANNOUNCE_OVERRIDES": "Объявить переопределяет",
+		"MACRO": "Макрос",
+		"GOSUB": "For to",
 		"RULE": "Правило",
-		"POSITION": "Позиция",
+		"POSITION": "Положение",
 		"ANSWER": "Ответ",
 		"VALUE": "Значение",
-		"MAILBOX@CONTEXT": "Mailbox@Context",
-		"EXTENSION": "Расширение",
-		"PRIORITY": "Приоритет",
-		"HANGUP_CAUSE": "Причина отбоя вызова",
-		"OUTBOUNDDIAL": "Набор: исходящ.",
+		"MAILBOX@CONTEXT": "Фотогалерея@контексте",
+		"EXTENSION": "Добавочный номер",
+		"PRIORITY": "Первоочередное внимание",
+		"HANGUP_CAUSE": "Отключение причиной",
+		"OUTBOUNDDIAL": "Набор исходящих вызовов",
 		"CALLER_ID": "Идентификатор вызывающего абонента",
-		"NO_MESSAGE_AVAILABLE": "Сообщения отсутствуют",
-		"NO_SOUND_AVAILABLE": "Звуки отсутствуют",
-		"VOICERECORDINGS": "Голосовые записи",
+		"NO_MESSAGE_AVAILABLE": "Нет доступных сообщений",
+		"NO_SOUND_AVAILABLE": "Никаких звуков не доступно",
+		"VOICERECORDINGS": "Запись голоса",
 		"CHANSPIES": "ChanSpy",
-		"VOICE": "Голос",
-		"REALTIME": "Режим реального времени",
-		"ID": "Идентификатор",
-		"VOICEMAIL_CONTEXT": "Контекст",
-		"NO_MOHSOUND_AVAILABLE": "Музыка на удержании отсутствует",
+		"VOICE": "Голосовой связи",
+		"REALTIME": "В режиме реального времени",
+		"ID": "Id",
+		"VOICEMAIL_CONTEXT": "Контексте",
+		"NO_MOHSOUND_AVAILABLE": "Нет музыки на удержании имеющихся",
 		"FILE": "Файл",
-		"ADD_MOHSOUND": "Добавить звуки музыки на удержании",
-		"DOWNLOAD_MOHSOUND": "Скачать звуки музыки на удержании",
-		"DELETE_MOHSOUND": "Удалить звуки музыки на удержании",
+		"ADD_MOHSOUND": "Добавление музыки в режиме удержания звука",
+		"DOWNLOAD_MOHSOUND": "Загрузка музыки на удержании звук",
+		"DELETE_MOHSOUND": "Удалить музыка в режиме удержания звука",
 		"UNIQUEID": "Уникальный идентификатор",
-		"AGENT": "Агент",
+		"AGENT": "Оператор",
 		"TYPE": "Тип",
 		"RATING": "Рейтинг",
 		"AUDIO": "Аудио",
 		"DATE": "Дата",
-		"NEW_VOICEQUEUE": "Новая очередь голосовой почты",
-		"NEW_INBOUNDROUTE": "Новый входящий маршрут",
-		"NEW_OUTBOUNDROUTE": "Новый исходящий маршрут",
-		"NEW_INTERNALROUTE": "Новый внутренний маршрут",
-		"NEW_CONTEXT": "Новый контекст",
-		"NEW_VOICEMAIL": "Новая голосовая почта",
+		"NEW_VOICEQUEUE": "Новые голосовые очереди",
+		"NEW_INBOUNDROUTE": "Новый маршрут входящих вызовов",
+		"NEW_OUTBOUNDROUTE": "Новый маршрут исходящих вызовов",
+		"NEW_INTERNALROUTE": "Новых внутренних маршрутов",
+		"NEW_CONTEXT": "Новом контексте",
+		"NEW_VOICEMAIL": "Новые сообщения голосовой почты",
 		"NEW_MUSICONHOLD": "Новая музыка на удержании",
-		"NEW_CHANSPY": "Новый модуль ChanSpy",
-		"PENALTY": "Параметр Penalty",
-		"ADD_TEAM_TO_VOICEQUEUE": "Добавить команду к очереди голосовой почты",
-		"ADD_AGENT_TO_VOICEQUEUE": "Добавить агента к очереди голосовой почты",
-		"EDIT_DIAL": "Редактировать набор",
-		"EDIT_AGI": "Редактировать AGI",
-		"EDIT_INTERNALDIAL": "Редактировать набор внутреннего номера",
-		"EDIT_EXTERNALDIAL": "Редактировать набор внешнего номера",
-		"EDIT_RINGGROUP": "Редактировать группу вызовов",
-		"EDIT_PLAYBACK": "Редактировать воспроизведение",
-		"EDIT_QUEUE": "Редактировать очередь",
-		"EDIT_SET": "Редактировать Set",
-		"EDIT_GOTO": "Редактировать Перейти к",
-		"EDIT_HANGUP": "Редактировать «Положить трубку»",
-		"EDIT_CUSTOM": "Редактировать Custom",
+		"NEW_CHANSPY": "Новые ChanSpy",
+		"PENALTY": "Смертная казнь",
+		"ADD_TEAM_TO_VOICEQUEUE": "Добавить группу в очереди голосовой связи",
+		"ADD_AGENT_TO_VOICEQUEUE": "Добавить оператора в очереди голосовой связи",
+		"EDIT_DIAL": "Редактирование набора",
+		"EDIT_AGI": "Редактировать AGI",
+		"EDIT_INTERNALDIAL": "Редактировать внутреннего набора",
+		"EDIT_EXTERNALDIAL": "Редактировать внешний диск набора команд",
+		"EDIT_RINGGROUP": "Редактировать кольцо группы",
+		"EDIT_PLAYBACK": "Воспроизведения в режиме редактирования",
+		"EDIT_QUEUE": "Редактирования очереди",
+		"EDIT_SET": "Редактирование набора",
+		"EDIT_GOTO": "Редактировать GoTo",
+		"EDIT_HANGUP": "Редактировать отключение",
+		"EDIT_CUSTOM": "Редактировать пользовательский",
 		"DURATION": "Продолжительность",
-		"RECEIVED_AT": "Получено в",
+		"RECEIVED_AT": "Полученные на",
 		"YES": "Да",
 		"NO": "Нет",
-		"HANGUPCAUSE_1": "1 = неназначенный номер",
-		"HANGUPCAUSE_16": "16 = нормальное завершение вызова",
-		"HANGUPCAUSE_17": "17 = вызываемый абонент не может принять вызов",
-		"HANGUPCAUSE_18": "18 = пользователь не отвечает (телефонное устройство не подключено)",
-		"HANGUPCAUSE_21": "21 = вызов отклонен",
-		"HANGUPCAUSE_22": "22 = номер изменился",
-		"HANGUPCAUSE_27": "27 = направление не обслуживается",
-		"HANGUPCAUSE_38": "38 = сетевое соединение функционирует некорректно",
-		"HANGUPCAUSE_41": "41 = временная неработоспособность сервиса",
-		"RANDOM": "Случайный",
-		"ALPHABETICAL": "По алфавиту",
-		"NO_APPS_AVAILABLE": "Доступные приложения отсутствуют",
-		"DOWNLOAD_VOICERECORDING": "Скачать голосовую запись",
-		"DELETE_VOICERECORDING": "Удалить голосовую запись",
-		"INTERNAL": "Внутренний",
+		"HANGUPCAUSE_1": "1 = номер нераспределенных",
+		"HANGUPCAUSE_16": "16 = Normail вызова",
+		"HANGUPCAUSE_17": "17 = пользователь занят",
+		"HANGUPCAUSE_18": "18 = пользователь не отвечает (Вашему телефону устройство не подключено)",
+		"HANGUPCAUSE_21": "На XXI век = Вызов отклонен",
+		"HANGUPCAUSE_22": "22 = Номер борозды изменился",
+		"HANGUPCAUSE_27": "27 = пункт назначения не по порядку",
+		"HANGUPCAUSE_38": "38 = сети",
+		"HANGUPCAUSE_41": "41 = Временный сбой",
+		"RANDOM": "Случайная",
+		"ALPHABETICAL": "В алфавитном порядке",
+		"NO_APPS_AVAILABLE": "Нет доступных приложений",
+		"DOWNLOAD_VOICERECORDING": "Загрузить запись голоса",
+		"DELETE_VOICERECORDING": "Удалить запись голоса",
+		"INTERNAL": "Внутренние",
 		"PHONE_STATE": "Состояние телефона",
-		"PHONE_STATUS": "Статус телефона",
-		"REGISTERED": "Зарегистрирован",
-		"UNREGISTERED": "Не зарегистрирован",
-		"LAGGED": "Лаг",
-		"REACHABLE": "Достижимые",
-		"UNREACHABLE": "Недостижимый",
-		"UNKNOWN": "Неизвестно",
-		"NOT_INUSE": "Не используется",
-		"INUSE": "Используется",
-		"BUSY": "Линия занята",
-		"INVALID": "Недействительный",
-		"UNAVAILABLE": "Отсутствует",
-		"RINGING": "Наличие тонального сигнала вызова",
+		"PHONE_STATUS": "Состояние телефона",
+		"REGISTERED": "Зарегистрированные",
+		"UNREGISTERED": "Незарегистрированный",
+		"LAGGED": "Отстает",
+		"REACHABLE": "Доступен",
+		"UNREACHABLE": "Недоступен",
+		"UNKNOWN": "Неизвестный",
+		"NOT_INUSE": "Не используется",
+		"INUSE": "В ИСПОЛЬЗОВАНИИ",
+		"BUSY": "Занят",
+		"INVALID": "Неверный",
+		"UNAVAILABLE": "Недоступен",
+		"RINGING": "При звонке",
 		"ONHOLD": "На удержании",
-		"RING": "Вызов",
+		"RING": "Кольцо",
 		"UP": "Вверх",
-		"INFO": "Информация",
-		"TRUNKS": "Транки",
+		"INFO": "Info",
+		"TRUNKS": "Соединительные линии внешней АТС",
 		"REGISTRY": "Реестр",
-		"NO_REGISTRY": "Нет реестра",
-		"LOGGED_IN": "Зарегистрирован в системе (подключение к системе SIP)",
-		"PAUSED": "Поставлен на паузу",
-		"DISPOSITION": "Диспозиция",
+		"NO_REGISTRY": "Раздел реестра не",
+		"LOGGED_IN": "Вход в систему",
+		"PAUSED": "Приостановлено",
+		"DISPOSITION": "Распоряжения",
 		"WAITING": "Ожидание",
-		"TALKING": "Текущий вызов",
-		"DID": "DID",
+		"TALKING": "Разговор",
+		"DID": "Не",
 		"CALLER": "Вызывающий абонент",
-		"TOTAL": "Всего",
+		"TOTAL": "Итого",
 		"ANSWERED": "Отвеченные",
-		"ABANDONED": "Потерянные",
-		"UNMANAGED": "Необработанные",
+		"ABANDONED": "Отмененные",
+		"UNMANAGED": "Неуправляемые коммутаторы",
 		"REDIRECT_TO_NUMBER": "Перенаправить на номер",
-		"REDIRECT_TO_AGENT": "Перенаправить на агента",
+		"REDIRECT_TO_AGENT": "Перенаправить для оператора",
 		"CLOSING": "Закрытие",
-		"AVG_HOLD_TIME": "Среднее время на удержании",
-		"AVG_DURATION": "Средняя продолжительность",
-		"AVG_BILLABLE": "Средняя оплата",
+		"AVG_HOLD_TIME": "Среднее время удержания",
+		"AVG_DURATION": "Продолжительность Av",
+		"AVG_BILLABLE": "Avg платными",
 		"SOURCE": "Источник",
 		"DESTINATION": "Пункт назначения",
-		"REJECTED": "Отклоненные",
-		"FAILED": "Неудачный вызов",
-		"CALLED": "Удачный вызов",
-		"CONNECTED": "Соединение установлено",
-		"NO_RATING": "Рейтинг отсутствует",
-		"EDIT_VOICERECORDING": "Редактировать голосовую запись",
+		"REJECTED": "Отклонено",
+		"FAILED": "Не удалось",
+		"CALLED": "Призвали к",
+		"CONNECTED": "Подключен к",
+		"NO_RATING": "Нет рейтинга",
+		"EDIT_VOICERECORDING": "Редактировать запись голоса",
 		"APPLICATION_NAME": "Имя приложения",
 		"ARGUMENTS": "Аргументы",
-		"EDIT_QUEUECAMPAIGN": "Редактировать кампанию",
+		"EDIT_QUEUECAMPAIGN": "Изменить кампанию",
 		"LISTADD_QUEUECAMPAIGN": "Добавить список",
-		"BLACKLISTADD_QUEUECAMPAIGN": "Добавить черный список",
-		"TEAMADD_QUEUECAMPAIGN": "Добавить команду",
-		"AGENTADD_QUEUECAMPAIGN": "Добавить агента",
+		"BLACKLISTADD_QUEUECAMPAIGN": "Добавить Blacklist",
+		"TEAMADD_QUEUECAMPAIGN": "Добавить группу",
+		"AGENTADD_QUEUECAMPAIGN": "Добавить оператора",
 		"DELETE_QUEUECAMPAIGN": "Удалить кампанию",
 		"DELETE_IVRCAMPAIGN": "Удалить кампанию",
-		"EDIT_IVRCAMPAIGN": "Редактировать кампанию",
-		"NEW_IVRCAMPAIGN": "Новая кампания IVR",
-		"ADD_IVRCAMPAIGN": "Добавить кампанию IVR",
+		"EDIT_IVRCAMPAIGN": "Изменить кампанию",
+		"NEW_IVRCAMPAIGN": "Новая кампания IVR",
+		"ADD_IVRCAMPAIGN": "Добавить IVR кампании",
 		"LISTADD_IVRCAMPAIGN": "Добавить список",
-		"BLACKLISTADD_IVRCAMPAIGN": "Добавить черный список",
-		"ENABLED": "Включено",
-		"READY": "Готов",
+		"BLACKLISTADD_IVRCAMPAIGN": "Добавить Blacklist",
+		"ENABLED": "Включена",
+		"READY": "Готов к работе",
 		"PAUSE": "Пауза",
-		"UNPAUSE": "Конец паузы",
-		"DEFAULT_PAUSE": "Пауза по умолчанию",
-		"AGENTADD_QUEUE": "Добавить агента к кампании очереди",
-		"AGENTSADD_QUEUE": "Добавить агентов к кампании очереди",
-		"ALL_TEAMS": "Все команды",
-		"SELECTED_TEAMS": "Избранные команды",
+		"UNPAUSE": "Возобновить",
+		"DEFAULT_PAUSE": "По умолчанию пауза",
+		"AGENTADD_QUEUE": "Добавить оператора в очереди кампании",
+		"AGENTSADD_QUEUE": "Добавление операторов в очереди кампании",
+		"ALL_TEAMS": "Все группы",
+		"SELECTED_TEAMS": "Выбранные группы",
 		"ALL_LISTS": "Все списки",
 		"SELECTED_LISTS": "Выбранные списки",
-		"ALL_AGENTS": "Все агенты",
-		"SELECTED_AGENTS": "Выбранные агенты",
-		"WAITING_FOR_AGENT": "Ожидание ответа агента",
-		"TOTAL_OFFERED": "Всего предложенных",
-		"RUNNING": "Функционирование",
-		"TRUNK_IS_NOT_REACHABLE": "Транк недостижим",
-		"AGENTS_NOT_LOGGED": "Агент не зарегистрирован",
-		"NOT_ACTIVE": "Неактивны",
-		"IS_DISACTIVED": "Деактивирован",
-		"BACKUPTRUNK": "Резервирование транка",
-		"GLOBALINTERVAL": "Общий интервал",
-		"RESCHEDULED_CONTACTS": "Контакты с внесенными коррекциями",
-		"INTERVAL_IS_OVERTIME": "Вне интервала",
-		"GLOBAL_INTERVAL_IS_OVERTIME": "Вне интервала (Общий)",
-		"INTERVAL_IS_NULL": "Интервал равен нулю",
-		"TIMEZONE_UNKNOW": "Часовой пояс неизвестен",
+		"ALL_AGENTS": "Все Операторы",
+		"SELECTED_AGENTS": "Выбранные операторы",
+		"WAITING_FOR_AGENT": "Ожидание оператора",
+		"TOTAL_OFFERED": "Общий объем предлагаемых",
+		"RUNNING": "При работающем двигателе",
+		"TRUNK_IS_NOT_REACHABLE": "Сл не доступен",
+		"AGENTS_NOT_LOGGED": "Оператор не вошел",
+		"NOT_ACTIVE": "Не активен",
+		"IS_DISACTIVED": "- Disactived",
+		"BACKUPTRUNK": "Сл резервного копирования",
+		"GLOBALINTERVAL": "Глобальных интервала",
+		"RESCHEDULED_CONTACTS": "Перепланированные контакты",
+		"INTERVAL_IS_OVERTIME": "Интервал - это сверхурочных",
+		"GLOBAL_INTERVAL_IS_OVERTIME": "Из интервала (глобальный)",
+		"INTERVAL_IS_NULL": "Интервал имеет значение null",
+		"TIMEZONE_UNKNOW": "Неизвестный часовой пояс",
 		"INTERVAL_IS_EMPTY": "Интервал пуст",
-		"TOTAL_MANAGED": "Всего обработанных",
+		"TOTAL_MANAGED": "Общее управление",
 		"OPEN": "Открыть",
-		"FRESH": "Новые",
-		"CLOSED": "Закрытые",
+		"FRESH": "Свежее",
+		"CLOSED": "Закрыт",
 		"ALWAYS": "Всегда",
-		"NEVER": "Никогда",
-		"ONLY_IF_OPEN": "Только в случае открытых",
-		"CHECKDUPLICATE": "Найти дубликат",
+		"NEVER": "Ни в коем случае не",
+		"ONLY_IF_OPEN": "Только если открыть",
+		"CHECKDUPLICATE": "Проверьте дубликат",
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"TIMEOUT": "Тайм-аут",
+		"OF": "В",
+		"TIMEOUT": "Превышение лимита времени",
 		"CHAT": "Чат",
-		"MAIL": "Электронная почта",
+		"MAIL": "Почта",
 		"SMS": "SMS",
-		"OPENCHANNEL": "Открытый канал",
+		"OPENCHANNEL": "Открыть канал",
 		"FAX": "Факс",
-		"NO_AGENT_ONLINE": "Агент отсутствует онлайн",
-		"PARTIALPAUSE": "Частичная пауза",
+		"NO_AGENT_ONLINE": "Ни один оператор На Сайте",
+		"PARTIALPAUSE": "Parital Пауза",
 		"ALL": "Все",
-		"IDLE": "Линия свободна",
+		"IDLE": "Обороты холостого хода",
 		"TIMER": "Таймер",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
+		"NO_AVAILABLE_INFO": "Нет информации",
 		"CALLYSQUAREPROJECTPREVIEW": "Предварительный просмотр проекта Cally Square",
 		"CALLYSQUAREPROJECTPREVIEW2": "Проект Cally Square после предварительного просмотра",
-		"RUNIFHANGUPAGENT": "Запустить проект Cally Square Project (после) даже в случае, если агент прекращает вызов",
-		"CALLYSQUAREPROJECT2": "Проект Cally Square (после): очередь",
-		"RESET": "Сброс настроек",
+		"RUNIFHANGUPAGENT": "Запуск проекта Cally Square После того, как агент отложит вызов",
+		"CALLYSQUAREPROJECT2": "Проект Cally Square после очереди",
+		"RESET": "Сброс",
 		"RESETLIST": "Сбросить списки",
 		"RESETLIST_IVRCAMPAIGN": "Сбросить списки",
 		"RESETLIST_QUEUECAMPAIGN": "Сбросить списки",
 		"SELECTALL": "Выбрать все",
 		"UNSELECTALL": "Снять все",
 		"HOPPERWIDGET": "Резюме",
-		"ABANDONEDCALLS": "Потерянные вызовы в очереди",
-		"CLONE_QUEUECAMPAIGN": "Клонировать кампанию очереди",
-		"CLONE_IVRCAMPAIGN": "Клонировать кампанию",
-		"RANDOMLASTDIGITCALLERIDNUMBER": "Случайный исходящий: номер вызывающего абонента",
+		"ABANDONEDCALLS": "Заброшенные очереди вызовов",
+		"CLONE_QUEUECAMPAIGN": "Кампания Queone Queue",
+		"CLONE_IVRCAMPAIGN": "Кампания клонов",
+		"RANDOMLASTDIGITCALLERIDNUMBER": "Случайный исходящий номер CallerId",
 		"CUTDIGIT": "Вырезать цифры",
-		"LOGIN_TIME": "Время входа в систему",
+		"LOGIN_TIME": "Время входа",
 		"PAUSE_TIME": "Время паузы",
-		"RECALLINQUEUE": "Повторный вызов в очереди",
-		"REFRESH_SCHEDULED_CALLS": "Обновить запланированные вызовы",
-		"SCHEDULED_CALLS": "Запланированные вызовы",
-		"SELECT_CAMPAIGN": "Выбрать кампанию",
-		"SELECT_DATE": "Выбрать дату",
-		"SELECT_TYPE": "Выбрать тип",
+		"RECALLINQUEUE": "Отзыв в очереди",
+		"REFRESH_SCHEDULED_CALLS": "Обновить запланированные звонки",
+		"SCHEDULED_CALLS": "Запланированные звонки",
+		"SELECT_CAMPAIGN": "Выберите кампанию",
+		"SELECT_DATE": "Выберите дату",
+		"SELECT_TYPE": "Выберите тип",
 		"TEAMS_ASSOCIATION": "Ассоциация команд",
 		"ANSWERING_MACHINE": "Автоответчик",
-		"MANDATORYDISPOSITION": "Обязательная диспозиция",
-		"MANDATORYDISPOSITIONPAUSEID": "Обязательная диспозиция: статус паузы",
-		"ANSWERED_CALLS": "Отвеченные вызовы",
+		"MANDATORYDISPOSITION": "Обязательное распоряжение",
+		"MANDATORYDISPOSITIONPAUSEID": "Обязательный статус паузы",
+		"ANSWERED_CALLS": "Ответы на звонки",
 		"AVG_TALK_TIME": "Среднее время разговора",
 		"CURRENT_INTERVAL": "Текущий интервал",
-		"DATA_COLLECTION_IN_PROGRESSIVE": "Сбор данных в варианте обзвона Progressive",
+		"DATA_COLLECTION_IN_PROGRESSIVE": "Сбор данных в Progressive",
 		"ONE_CALL_EVERY": "Один звонок каждый",
-		"PREDICTIVEMAXTHRESHOLD": "Прогнозируемый максимальный порог [%]",
-		"PREDICTIVEMINTHRESHOLD": "Прогнозируемый минимальный порог [%]",
-		"PREDICTIVE_IS_NOT_RUNNING": "Прогнозирующая система Predictive не задействована",
-		"PREDICTIVE_IS_RUNNING": "Прогнозирующая система Predictive задействована",
+		"PREDICTIVEMAXTHRESHOLD": "Прогнозируемый максимальный порог [%]",
+		"PREDICTIVEMINTHRESHOLD": "Прогнозируемый минимальный порог [%]",
+		"PREDICTIVE_IS_NOT_RUNNING": "Прогнозирующий не работает",
+		"PREDICTIVE_IS_RUNNING": "Прогнозирующий работает",
 		"PREVIOUS_INTERVAL": "Предыдущий интервал",
 		"SHOW_PREDICTIVE_QUEUE_CAMPAIGN_INFO": "Показать прогнозирующую информацию",
 		"THRESHOLDS": "Пороги",
-		"TOTAL_CALLS": "Всего вызовов",
-		"TOOLTIP_SCREENRECORDING_OFF": "Доступна запись с экрана",
-		"TOOLTIP_SCREENRECORDING_ON": "Идет запись с экрана"
+		"TOTAL_CALLS": "Всего звонков",
+		"TOOLTIP_SCREENRECORDING_OFF": "Запись экрана доступна",
+		"TOOLTIP_SCREENRECORDING_ON": "Идет запись экрана",
+		"ABANDONEDMAXRETRY": "Максимальное количество попыток",
+		"ABANDONEDRETRYTIME": "Время повтора [мин]",
+		"AGENTREJECT": "Агент отклонить",
+		"AGENTREJECTMAXRETRY": "Максимальное количество попыток",
+		"AGENTREJECTRETRYTIME": "Время повтора [мин]",
+		"DROP": "Падение",
+		"DROPMAXRETRY": "Максимальное количество попыток",
+		"DROPRETRYTIME": "Время повтора [мин]",
+		"MACHINE": "Машина",
+		"MACHINEMAXRETRY": "Максимальное количество попыток",
+		"MACHINERETRYTIME": "Время повтора [мин]",
+		"NOSUCHNUMBER": "Нет такого числа",
+		"NOSUCHNUMBERMAXRETRY": "Максимальное количество попыток",
+		"NOSUCHNUMBERRETRYTIME": "Время повтора [мин]"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/motiondialer/i18n/sv.json b/public/app/main/apps/motiondialer/i18n/sv.json
index 32120fb..da90b09 100644
--- a/public/app/main/apps/motiondialer/i18n/sv.json
+++ b/public/app/main/apps/motiondialer/i18n/sv.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Obligatoriskt fält",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Obligatoriskt fält",
 			"CALLYSQUAREPROJECT_REQUIRED": "Obligatoriskt fält",
-			"TRUNK_REQUIRED": "Obligatoriskt fält"
+			"TRUNK_REQUIRED": "Obligatoriskt fält",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Värdet måste vara mindre än eller lika med"
 		},
 		"GENERAL": "Allmänt",
 		"AGENTTIMEOUT": "Tidsgräns för agent",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "Maximalt antal gånger en kontakt anropas innan den överväger att den är stängd, när samtalet misslyckades för maskinen",
 			"MACHINERETRYTIME": "Tid i minuter innan du försöker ringa igen en misslyckad kontakt på grund av maskinen",
 			"NOSUCHNUMBERETRYTIME": "Tid i minuter innan du försöker ringa igen en misslyckad kontakt på grund av inget sådant nummer",
-			"NOSUCHNUMBERMAXRETRY": "Maximalt antal gånger en kontakt anropas innan den överväger att den är stängd, när samtalet misslyckades för inget sådant nummer"
+			"NOSUCHNUMBERMAXRETRY": "Maximalt antal gånger en kontakt anropas innan den överväger att den är stängd, när samtalet misslyckades för inget sådant nummer",
+			"NOSUCHNUMBERRETRYTIME": "Tid i minuter innan du försöker ringa igen en misslyckad kontakt på grund av inget sådant nummer"
 		},
 		"MUSICONHOLD": "Musik i vänteläge",
 		"ANNOUNCETOAGENT": "Meddela till agent",
diff --git a/public/app/main/apps/motiondialer/i18n/tr.json b/public/app/main/apps/motiondialer/i18n/tr.json
index 60d9341..aab2b43 100644
--- a/public/app/main/apps/motiondialer/i18n/tr.json
+++ b/public/app/main/apps/motiondialer/i18n/tr.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "Zorunlu alan",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "Zorunlu alan",
 			"CALLYSQUAREPROJECT_REQUIRED": "Zorunlu alan",
-			"TRUNK_REQUIRED": "Zorunlu alan"
+			"TRUNK_REQUIRED": "Zorunlu alan",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Değer şundan küçük veya ona eşit olmalıdır"
 		},
 		"GENERAL": "Genel",
 		"AGENTTIMEOUT": "Ajan Zaman Aşımı",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "Makine için arama başarısız olduğunda, bir kişi kapalı olarak değerlendirilmeden önce maksimum çağrı sayısı",
 			"MACHINERETRYTIME": "Makine nedeniyle başarısız bir kişiyi tekrar aramaya çalışmadan önce dakika",
 			"NOSUCHNUMBERETRYTIME": "Böyle bir numara olmadığı için başarısız bir kişiyi tekrar aramaya çalışmadan önce dakika cinsinden süre",
-			"NOSUCHNUMBERMAXRETRY": "Böyle bir numara için arama başarısız olduğunda, bir kişi kapalı olduğunu düşünmeden önce maksimum çağrı sayısı"
+			"NOSUCHNUMBERMAXRETRY": "Böyle bir numara için arama başarısız olduğunda, bir kişi kapalı olduğunu düşünmeden önce maksimum çağrı sayısı",
+			"NOSUCHNUMBERRETRYTIME": "Böyle bir numara olmaması nedeniyle başarısız bir kişiyi tekrar aramaya çalışmadan önce dakika cinsinden süre"
 		},
 		"MUSICONHOLD": "Bekletme Müziği",
 		"ANNOUNCETOAGENT": "Duyurmak Agent",
diff --git a/public/app/main/apps/motiondialer/i18n/zh-CN.json b/public/app/main/apps/motiondialer/i18n/zh-CN.json
index 10e00db..a5f25a4 100644
--- a/public/app/main/apps/motiondialer/i18n/zh-CN.json
+++ b/public/app/main/apps/motiondialer/i18n/zh-CN.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "必填项",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "必填项",
 			"CALLYSQUAREPROJECT_REQUIRED": "必填项",
-			"TRUNK_REQUIRED": "必填项"
+			"TRUNK_REQUIRED": "必填项",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "该值必须小于或等于"
 		},
 		"GENERAL": "总的",
 		"AGENTTIMEOUT": "代理超时",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "当机器呼叫失败时，联系被认为关闭之前被呼叫的最大次数",
 			"MACHINERETRYTIME": "以分钟为单位的时间，尝试再打一次由于计算机而导致失败的联系",
 			"NOSUCHNUMBERETRYTIME": "分钟（以分钟为单位），由于没有该号码，因此尝试再次致电失败的联系人",
-			"NOSUCHNUMBERMAXRETRY": "如果呼叫没有成功，则在联系被关闭之前被呼叫的最大次数"
+			"NOSUCHNUMBERMAXRETRY": "如果呼叫没有成功，则在联系被关闭之前被呼叫的最大次数",
+			"NOSUCHNUMBERRETRYTIME": "分钟（以分钟为单位），由于没有该号码，因此尝试再次致电失败的联系人"
 		},
 		"MUSICONHOLD": "音乐保留",
 		"ANNOUNCETOAGENT": "宣布到座席",
diff --git a/public/app/main/apps/motiondialer/i18n/zh-TW.json b/public/app/main/apps/motiondialer/i18n/zh-TW.json
index 33112d0..73dad23 100644
--- a/public/app/main/apps/motiondialer/i18n/zh-TW.json
+++ b/public/app/main/apps/motiondialer/i18n/zh-TW.json
@@ -204,7 +204,17 @@
 			"NOSUCHNUMBERMAXRETRY_REQUIRED": "必填項",
 			"NOSUCHNUMBERRETRYTIME_REQUIRED": "必填項",
 			"CALLYSQUAREPROJECT_REQUIRED": "必填項",
-			"TRUNK_REQUIRED": "必填項"
+			"TRUNK_REQUIRED": "必填項",
+			"ABANDONEDMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於",
+			"ABANDONEDRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於",
+			"AGENTREJECTMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於",
+			"AGENTREJECTRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於",
+			"DROPMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於",
+			"DROPRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於",
+			"MACHINEMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於",
+			"MACHINERETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於",
+			"NOSUCHNUMBERMAXRETRY_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於",
+			"NOSUCHNUMBERRETRYTIME_MUST_BE_LESS_THAN_OR_EQUAL_TO": "該值必須小於或等於"
 		},
 		"GENERAL": "通用",
 		"AGENTTIMEOUT": "值機人員等候逾時",
@@ -310,7 +320,8 @@
 			"MACHINEMAXRETRY": "當機器呼叫失敗時，聯繫被認為關閉之前被呼叫的最大次數",
 			"MACHINERETRYTIME": "以分鐘為單位的時間，嘗試再打一次由於機器而導致失敗的聯繫",
 			"NOSUCHNUMBERETRYTIME": "分鐘（以分鐘為單位），由於沒有該號碼，因此嘗試再次致電失敗的聯繫人",
-			"NOSUCHNUMBERMAXRETRY": "當呼叫未成功關閉時，呼叫被聯繫之前被關閉的最大次數"
+			"NOSUCHNUMBERMAXRETRY": "當呼叫未成功關閉時，呼叫被聯繫之前被關閉的最大次數",
+			"NOSUCHNUMBERRETRYTIME": "分鐘（以分鐘為單位），由於沒有該號碼，因此嘗試再次致電失敗的聯繫人"
 		},
 		"MUSICONHOLD": "音樂保留通話",
 		"ANNOUNCETOAGENT": "發佈至值機員",
diff --git a/public/app/main/apps/openchannel/i18n/ru.json b/public/app/main/apps/openchannel/i18n/ru.json
index d31d76a..7a7cab2 100644
--- a/public/app/main/apps/openchannel/i18n/ru.json
+++ b/public/app/main/apps/openchannel/i18n/ru.json
@@ -1,28 +1,28 @@
 {
 	"OPENCHANNEL": {
 		"TEXT": "Текст",
-		"TIMES": "Количество раз за взаимодействие",
-		"EDIT_AUTOREPLY": "Редактирование автоответчика",
-		"AUTOREPLY": "Автоответчик",
+		"TIMES": "Количество раз в взаимодействие",
+		"EDIT_AUTOREPLY": "Редактировать автоматический ответ",
+		"AUTOREPLY": "Автоматический ответ",
 		"NAME": "Имя",
-		"OPENCHANNELQUEUES": "Очереди открытых каналов",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"OPENCHANNELQUEUES": "Открыть канал очередей",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"ERRORS": {
-			"TEXT_REQUIRED": "Текст поля обязателен",
-			"NAME_REQUIRED": "Обязательное поле",
-			"AGENT_TIMEOUT_REQUIRED": "Обязательное поле",
-			"MOTIONADDRESS_REQUIRED": "Обязательное поле",
-			"MOTIONADDRESS_MUST_VALID_URL": "Неверный формат",
-			"ACCEPTURL_MUST_VALID_URL": "Неверный формат",
-			"TIMEOUT_REQUIRED": "Обязательное поле",
-			"REJECTURL_MUST_VALID_URL": "Неверный формат",
-			"CLOSEURL_MUST_VALID_URL": "Неверный формат",
-			"REPLYURI_REQUIRED": "Обязательное поле",
-			"REPLYURI_MUST_VALID_URL": "Неверный формат",
-			"PRIORITY_REQUIRED": "Обязательное поле",
-			"CONDITION_REQUIRED": "Обязательное поле",
-			"TRUEPRIORITY_REQUIRED": "Обязательное поле",
-			"FALSEPRIORITY_REQUIRED": "Обязательное поле",
+			"TEXT_REQUIRED": "Поле text не требуется",
+			"NAME_REQUIRED": "Это имя требуется",
+			"AGENT_TIMEOUT_REQUIRED": "Оператор - тайм-аут требуется",
+			"MOTIONADDRESS_REQUIRED": "Движение адрес не требуется",
+			"MOTIONADDRESS_MUST_VALID_URL": "Движение адрес должен быть записан в действительный формат",
+			"ACCEPTURL_MUST_VALID_URL": "Принять URL должен быть записан в действительный формат",
+			"TIMEOUT_REQUIRED": "Тайм-аут не требуется",
+			"REJECTURL_MUST_VALID_URL": "Отклонить URL должен быть записан в действительный формат",
+			"CLOSEURL_MUST_VALID_URL": "Закрыть адрес URL должен быть записан в действительный формат",
+			"REPLYURI_REQUIRED": "Ответ URL не требуется",
+			"REPLYURI_MUST_VALID_URL": "Ответ URL должен быть написан в действительный формат",
+			"PRIORITY_REQUIRED": "Приоритет не требуется",
+			"CONDITION_REQUIRED": "Состояние не требуется",
+			"TRUEPRIORITY_REQUIRED": "Истинный приоритет не требуется",
+			"FALSEPRIORITY_REQUIRED": "Ложные приоритет не требуется",
 			"AGENT_REQUIRED": "Обязательное поле",
 			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
 			"PRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
@@ -30,7 +30,7 @@
 			"FALSEPRIORITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
 			"DISPOSITION_REQUIRED": "Обязательное поле",
 			"QUEUE_REQUIRED": "Обязательное поле",
-			"KEY_MAX_LENGTH": "Максимальная длина ключа должна быть равна {{max}}",
+			"KEY_MAX_LENGTH": "Ключ должен иметь максимальную длину равную {{max}}",
 			"TEXT_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
 			"VALUE_REQUIRED": "Обязательное поле",
 			"COMMAND_REQUIRED": "Обязательное поле",
@@ -52,210 +52,210 @@
 			"QUEUETRANSFERTIMEOUT_REQUIRED": "Обязательное поле",
 			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Обязательное поле",
 			"ACCESSKEYID_REQUIRED": "Требуется идентификатор ключа доступа",
-			"BOTNAME_REQUIRED": "Требуется имя бота",
+			"BOTNAME_REQUIRED": "Имя бота обязательно",
 			"SECRETACCESSKEY_REQUIRED": "Требуется секретный ключ доступа"
 		},
 		"STRATEGY": "Стратегия",
-		"AGENT": "Агент",
-		"GOTO": "Перейти к",
-		"GOTOIF": "Переход по условию / GotoIf",
+		"AGENT": "Оператор",
+		"GOTO": "Goto",
+		"GOTOIF": "Gotoif",
 		"NOOP": "Noop",
-		"QUEUE": "Очередь",
-		"EDIT_AGENT": "Редактировать агента",
-		"EDIT_GOTO": "Редактировать Перейти к",
-		"EDIT_NOOP": "Редактировать Noop",
-		"EDIT_GOTOIF": "Редактировать GotoIf",
-		"EDIT_QUEUE": "Редактировать очередь",
-		"CONDITION": "Условие",
-		"TRUEPRIORITY": "Истинный приоритет",
-		"FALSEPRIORITY": "Ложный приоритет",
+		"QUEUE": "Очереди",
+		"EDIT_AGENT": "Редактирование оператора",
+		"EDIT_GOTO": "Редактировать Goto",
+		"EDIT_NOOP": "Редактировать Noop",
+		"EDIT_GOTOIF": "Редактировать Gotoif",
+		"EDIT_QUEUE": "Редактирования очереди",
+		"CONDITION": "Состояние",
+		"TRUEPRIORITY": "Действительно первоочередной задачей",
+		"FALSEPRIORITY": "Ложные приоритетных",
 		"VALUE": "Значение",
-		"PRIORITY": "Приоритет",
-		"AGENT_TIMEOUT": "Тайм-аут агента",
+		"PRIORITY": "Первоочередное внимание",
+		"AGENT_TIMEOUT": "Время ожидания оператора",
 		"DESCRIPTION": "Описание",
-		"ADD_OPENCHANNELQUEUE": "Добавить очередь открытых каналов",
-		"EDIT_OPENCHANNELQUEUE": "Редактировать очередь открытых каналов",
-		"DELETE_OPENCHANNELQUEUE": "Удалить очередь открытых каналов",
-		"PENALTY": "Параметр Penalty",
-		"TEAMADD_OPENCHANNELQUEUE": "Добавить команду для открытия очереди каналов",
-		"AGENTADD_OPENCHANNELQUEUE": "Добавить агента к очереди открытых каналов",
-		"ALL_AGENTS": "Все агенты",
-		"SELECTED_AGENTS": "Выбранные агенты",
-		"CREATED_AT": "Создано на",
+		"ADD_OPENCHANNELQUEUE": "Добавить открытый канал очереди",
+		"EDIT_OPENCHANNELQUEUE": "Редактировать открытый канал очереди",
+		"DELETE_OPENCHANNELQUEUE": "Удалить открытый канал очереди",
+		"PENALTY": "Смертная казнь",
+		"TEAMADD_OPENCHANNELQUEUE": "Добавить группу в очереди",
+		"AGENTADD_OPENCHANNELQUEUE": "Добавить оператора в очереди",
+		"ALL_AGENTS": "Все Операторы",
+		"SELECTED_AGENTS": "Выбранные операторы",
+		"CREATED_AT": "Созданные в",
 		"SAVE": "Сохранить",
 		"SETTINGS": "Настройки",
-		"GENERAL": "Общие",
-		"OPENCHANNELACCOUNTS": "Учетные записи открытых каналов",
+		"GENERAL": "Генеральной",
+		"OPENCHANNELACCOUNTS": "Открыть канал счетов",
 		"MOTIONADDRESS": "Адрес движения",
-		"ADD_OPENCHANNELACCOUNT": "Добавить учетную запись открытого канала",
-		"EDIT_OPENCHANNELACCOUNT": "Редактировать учетную запись открытого канала",
-		"DELETE_OPENCHANNELACCOUNT": "Удалить учетную запись открытого канала",
+		"ADD_OPENCHANNELACCOUNT": "Добавить открытый канал счета",
+		"EDIT_OPENCHANNELACCOUNT": "Редактировать открытый канал счета",
+		"DELETE_OPENCHANNELACCOUNT": "Удалить открытый канал счета",
 		"API": "API",
-		"DISPOSITIONS": "Диспозиции",
+		"DISPOSITIONS": "Распоряжения",
 		"WEBHOOKS": "WebHooks",
 		"ACTIONS": "Действия",
 		"LIST": "Список",
-		"FIDELITY": "Точность",
-		"ACCEPT": "Принять",
+		"FIDELITY": "Четкость",
+		"ACCEPT": "Согласиться с",
 		"ACCEPTMETHOD": "Принять метод",
-		"ACCEPTURL": "Принять URL",
+		"ACCEPTURL": "Согласиться с URL",
 		"REJECT": "Отклонить",
 		"REJECTMETHOD": "Отклонить метод",
-		"REJECTURL": "Отклонить URL",
+		"REJECTURL": "Отклонить URL",
 		"CLOSE": "Закрыть",
-		"CLOSEMETHOD": "Закрыть метод",
-		"CLOSEURL": "Закрыть URL",
+		"CLOSEMETHOD": "Закройте метод",
+		"CLOSEURL": "Закрыть URL",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
+		"SELECT_NONE": "Выберите пункт None",
 		"BACK": "Назад",
-		"OPENCHANNEL": "Открытый канал",
-		"ID": "Идентификатор",
-		"TIMEOUT": "Тайм-аут",
-		"OPENCHANNELDISPOSITIONS": "Диспозиции открытого канала",
-		"NO_OPENCHANNELDISPOSITION_AVAILABLE": "Диспозиции открытого канала отсутствуют",
-		"NEW_OPENCHANNELDISPOSITION": "Новая диспозиция открытого канала",
-		"ADD_OPENCHANNELDISPOSITION": "Добавить диспозицию открытого канала",
-		"EDIT_OPENCHANNELDISPOSITION": "Редактировать диспозицию открытого канала",
-		"DELETE_OPENCHANNELDISPOSITION": "Удалить диспозицию открытого канала",
-		"NEW_OPENCHANNELQUEUE": "Новая очередь открытых каналов",
-		"NEW_OPENCHANNELACCOUNT": "Новая учетная запись открытого канала",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"ALL_TEAMS": "Все команды",
-		"SELECTED_TEAMS": "Избранные команды",
-		"REPLYURI": "URL-адрес ответа",
-		"RECEIVEURI": "Получить URL-адрес",
+		"OPENCHANNEL": "Открыть канал",
+		"ID": "Id",
+		"TIMEOUT": "Превышение лимита времени",
+		"OPENCHANNELDISPOSITIONS": "Открыть канал распоряжения",
+		"NO_OPENCHANNELDISPOSITION_AVAILABLE": "Нет открытого канала ликвидаций имеющихся",
+		"NEW_OPENCHANNELDISPOSITION": "Новый открытый канал распоряжения",
+		"ADD_OPENCHANNELDISPOSITION": "Добавить открытый канал распоряжения",
+		"EDIT_OPENCHANNELDISPOSITION": "Редактировать открытый канал распоряжения",
+		"DELETE_OPENCHANNELDISPOSITION": "Удалить открытый канал распоряжения",
+		"NEW_OPENCHANNELQUEUE": "Новый открытый канал очереди",
+		"NEW_OPENCHANNELACCOUNT": "Новый открытый канал счета",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"ALL_TEAMS": "Все группы",
+		"SELECTED_TEAMS": "Выбранные группы",
+		"REPLYURI": "Ответ URL",
+		"RECEIVEURI": "Получить URL",
 		"HELP": {
-			"RECEIVEURI": "Автоматически сгенерированная строка API, которая должна использоваться для получения сообщений в вашем открытом канале от внешнего приложения (используя метод POST). Нажмите кнопку вызова диалогового окна «Буфер обмена», чтобы скопировать ее ",
-			"REPLYURI": "URL-адрес, который будет вызывать открытый канал при отправке или ответе на сообщение. Для получения более подробной информации ознакомьтесь с документом <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">здесь</a>",
-			"NAME": "Поддерживаются только цифры, буквы и специальные символы (._)",
-			"LIST": "Список менеджера контактов, используемый для ассоциирования контактов",
-			"TOKEN": "Добавьте это свойство в виде строки запроса к URL-адресу вашей веб-службы. Для получения более подробной информации ознакомьтесь с документом <a target=\"_blank\" href=\"https://wiki.xcallymotion.com/display/XMV/New+Channels+Configuration+Steps#NewChannelsConfigurationSteps-BuildyourownChannelservice\">здесь</a>",
-			"MANDATORYDISPOSITION": "Обязательная диспозиция",
-			"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования в случае включения обязательной диспозиции",
-			"WELCOMEMESSAGE": "Это первое ответное сообщение, отправленное для новых взаимодействий."
+			"RECEIVEURI": "Это автоматически генерируемый API строки Вы должны использовать для приема сообщений внутри вашего открыть канал из внешнего приложения (POST метод должен использоваться). Вы можете нажать кнопку в буфер обмена для копирования в буфер обмена.",
+			"REPLYURI": "Это URL открытого канала будет вызов при отправке или ответе на сообщение",
+			"NAME": "Только цифры, буквы и специальные символы (_) поддерживаются",
+			"LIST": "Contact Manager список используется для связи контакты",
+			"TOKEN": "Добавьте это свойство в строку запроса в URL-адрес веб-службы. Более подробную информацию см. В документе doc <a target = \"_ blank\" href = \"https://wiki.xcallymotion.com/display/XMV/Новые шаги настройки каналов",
+			"MANDATORYDISPOSITION": "Обязательное распоряжение",
+			"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования, если включена обязательная утилизация",
+			"WELCOMEMESSAGE": "Это первое сообщение, отправленное контактору"
 		},
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"CONTACT": "Контакт",
-		"STARTEDAT": "Начато в",
+		"OF": "В",
+		"CONTACT": "Контакты",
+		"STARTEDAT": "Началась в",
 		"STATUS": "Состояние",
-		"CLOSED": "Закрытые",
+		"CLOSED": "Закрыт",
 		"OPENED": "Открыть",
 		"OPEN": "Открыть",
-		"ACCOUNT": "Учетная запись",
+		"ACCOUNT": "Внимание",
 		"INTERACTION": "Взаимодействие",
-		"INTERACTIONS": "Взаимодействия",
+		"INTERACTIONS": "Взаимодействие",
 		"ALL": "Все",
-		"SELECT_STATUS": "Выбрать статус",
+		"SELECT_STATUS": "Выберите состояние",
 		"FILTER": "Фильтр",
 		"FILTERS": "Фильтры",
-		"CLOSEDAT": "Закрыто в",
-		"DISPOSITION": "Диспозиция",
+		"CLOSEDAT": "Закрыт",
+		"DISPOSITION": "Отчуждения",
 		"NOTES": "Примечания",
-		"NO_INTERACTION_AVAILABLE": "Взаимодействия отсутствуют",
-		"SELECT_ACCOUNT": "Выбрать учетную запись",
+		"NO_INTERACTION_AVAILABLE": "Нет доступных взаимодействий",
+		"SELECT_ACCOUNT": "Выберите учетную запись",
 		"GOTOP": "Gotop",
-		"EDIT_GOTOP": "Редактировать Gotop",
+		"EDIT_GOTOP": "Gotop редактировать",
 		"EDIT_CLOSE": "Редактировать Закрыть",
-		"INFO": "Информация",
+		"INFO": "Инфо",
 		"KEY": "Ключ",
-		"REALTIME": "Режим реального времени",
+		"REALTIME": "В режиме реального времени",
 		"UNKNOWN": "Неизвестно",
-		"UNREGISTERED": "Не зарегистрирован",
-		"UNAVAILABLE": "Отсутствует",
-		"NOT_INUSE": "Не используется",
-		"REACHABLE": "Достижимые",
-		"IN_USE": "Используется",
+		"UNREGISTERED": "Незарегистрированный",
+		"UNAVAILABLE": "Недоступен",
+		"NOT_INUSE": "Не используется",
+		"REACHABLE": "Добраться",
+		"IN_USE": "В использовании",
 		"AGENTS": "Агенты",
-		"QUEUES": "Очереди",
-		"FULLNAME": "Полное имя",
-		"INTERNAL": "Внутренний",
+		"QUEUES": "Очередей",
+		"FULLNAME": "Fullname",
+		"INTERNAL": "Внутренние",
 		"PHONE_STATE": "Состояние телефона",
-		"PHONE_STATUS": "Статус телефона",
+		"PHONE_STATUS": "Состояние телефона",
 		"PAUSE": "Пауза",
-		"LOGOUT": "Выход",
-		"AGENTADD_QUEUE": "Добавить агента к очереди открытых каналов",
-		"UNPAUSE": "Конец паузы",
-		"DEFAULT_PAUSE": "Пауза по умолчанию",
-		"LOGGED_IN": "Зарегистрирован в системе",
-		"PAUSED": "Поставлен на паузу",
+		"LOGOUT": "Выход из системы",
+		"AGENTADD_QUEUE": "Добавить оператора для открытия канала",
+		"UNPAUSE": "Конец Пауза",
+		"DEFAULT_PAUSE": "По умолчанию пауза",
+		"LOGGED_IN": "Вход в систему",
+		"PAUSED": "Приостановлено",
 		"READY": "Готов",
-		"WAITING": "Ожидание",
+		"WAITING": "Свободные",
 		"VOICE": "Голос",
 		"CHAT": "Чат",
-		"MAIL": "Электронная почта",
+		"MAIL": "Почта",
 		"SMS": "SMS",
 		"FAX": "Факс",
-		"AGENTSADD_QUEUE": "Добавить агентов к очереди открытых каналов",
-		"NO_AGENT_ONLINE": "Агент отсутствует онлайн",
-		"GOTOREALTIME_OPENCHANNELQUEUE": "Перейти к очереди открытых каналов в режиме реального времени",
-		"PARTIALPAUSE": "Частичная пауза",
-		"BUSY": "Линия занята",
+		"AGENTSADD_QUEUE": "Добавление агентов для открытия канала",
+		"NO_AGENT_ONLINE": "Ни один оператор На Сайте",
+		"GOTOREALTIME_OPENCHANNELQUEUE": "Перейдите к в реальном масштабе времени открыть канал очереди",
+		"PARTIALPAUSE": "Parital Пауза",
+		"BUSY": "Занят",
 		"TIMER": "Таймер",
-		"IDLE": "Линия свободна",
+		"IDLE": "Обороты холостого хода",
 		"CAPACITY": "Емкость",
-		"TAGS": "Теги",
-		"SPYINTERACTION": "Шпион",
-		"INTERACTIONS_OPENCHANNELACCOUNT": "Перейти к взаимодействиям",
-		"REFRESH_INTERACTIONS": "Обновить взаимодействия",
+		"TAGS": "Tags",
+		"SPYINTERACTION": "Spy",
+		"INTERACTIONS_OPENCHANNELACCOUNT": "Перейти к взаимодействию",
+		"REFRESH_INTERACTIONS": "Обновить взаимодействий",
 		"DELETE": "Удалить",
-		"NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Заранее определенные ответы отсутствуют",
-		"NEW_OPENCHANNELCANNEDANSWER": "Новый заранее определенный ответ",
-		"ADD_OPENCHANNELCANNEDANSWER": "Добавить заранее определенный ответ",
-		"EDIT_OPENCHANNELCANNEDANSWER": "Редактировать",
+		"NO_OPENCHANNELCANNEDANSWER_AVAILABLE": "Нет готовых ответов",
+		"NEW_OPENCHANNELCANNEDANSWER": "Новый Консервированный Ответ",
+		"ADD_OPENCHANNELCANNEDANSWER": "Добавить консервированный ответ",
+		"EDIT_OPENCHANNELCANNEDANSWER": "редактировать",
 		"DELETE_OPENCHANNELCANNEDANSWER": "Удалить",
-		"DELIVERYREPORTURL": "URL-адрес отчета о доставке",
+		"DELIVERYREPORTURL": "URL отчета о доставке",
 		"DELETE_INTERACTION": "Удалить взаимодействие",
-		"COMMAND": "Команда",
-		"EDIT_SYSTEM": "Редактировать систему",
-		"SYSTEM": "Система",
-		"VARIABLE": "Переменная",
-		"NOTIFICATION": "Уведомление",
-		"NOTIFICATIONSHAKE": "Shake",
-		"NOTIFICATIONSOUND": "Звук",
-		"NOTIFICATIONTEMPLATE": "Шаблон",
-		"INSERT_MESSAGE_HERE": "Введите текстовое сообщение здесь",
-		"WAITFORTHEASSIGNEDAGENT": "Ожидание ответа назначенного агента",
-		"ADVANCED": "Продвинутый",
-		"PROXY": "Прокси",
-		"TOKEN": "Токен",
-		"EDIT_TAG": "Редактирование тега",
+		"COMMAND": "команда",
+		"EDIT_SYSTEM": "Изменить систему",
+		"SYSTEM": "система",
+		"VARIABLE": "переменная",
+		"NOTIFICATION": "уведомление",
+		"NOTIFICATIONSHAKE": "Встряска",
+		"NOTIFICATIONSOUND": "звук",
+		"NOTIFICATIONTEMPLATE": "шаблон",
+		"INSERT_MESSAGE_HERE": "Вставьте свое текстовое сообщение здесь",
+		"WAITFORTHEASSIGNEDAGENT": "Подождите, пока назначенный агент",
+		"ADVANCED": "продвинутый",
+		"PROXY": "полномочие",
+		"TOKEN": "знак",
+		"EDIT_TAG": "Изменить тег",
 		"TAG": "Тег",
-		"AGENTADD_OPENCHANNELACCOUNT": "Добавить агента в учетную запись открытого канала",
-		"CANNED_ANSWER_NOT_FOUND": "Готовый ответ не найден",
-		"CANNED_ANSWER_SEARCH": "Ввести текст для поиска готового ответа",
-		"MAPKEY": "Map Key",
-		"SEND": "Отправить",
-		"TO": "Кому",
-		"AGENTTRANSFER": "Передача агенту",
-		"AGENTTRANSFERTIMEOUT": "Тайм-аут передачи агенту",
-		"QUEUETRANSFER": "Передача в очередь",
-		"QUEUETRANSFERTIMEOUT": "Тайм-аут передачи в очередь",
-		"TRANSFER": "Перевод вызова",
-		"CANNEDANSWERS": "Заранее определенные ответы",
+		"AGENTADD_OPENCHANNELACCOUNT": "Добавить агента в Openchannel Account",
+		"CANNED_ANSWER_NOT_FOUND": "Консервированный ответ не найден",
+		"CANNED_ANSWER_SEARCH": "Введите текст, чтобы найти Консервированный ответ",
+		"MAPKEY": "Ключ карты",
+		"SEND": "послать",
+		"TO": "к",
+		"AGENTTRANSFER": "Передача агента",
+		"AGENTTRANSFERTIMEOUT": "Тайм-аут передачи агента",
+		"QUEUETRANSFER": "Передача очереди",
+		"QUEUETRANSFERTIMEOUT": "Тайм-аут передачи очереди",
+		"TRANSFER": "Перечислить",
+		"CANNEDANSWERS": "Консервированные ответы",
 		"DOWNLOAD_INTERACTION": "Скачать",
-		"OPENCHANNELCANNEDANSWERS": "Заранее определенные ответы",
-		"LOGIN_TIME": "Время входа в систему",
+		"OPENCHANNELCANNEDANSWERS": "Консервированные ответы",
+		"LOGIN_TIME": "Время входа",
 		"PAUSE_TIME": "Время паузы",
 		"TEAMS_ASSOCIATION": "Ассоциация команд",
-		"MANDATORYDISPOSITION": "Обязательная диспозиция",
-		"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования в случае включения обязательной диспозиции",
-		"DIALOGFLOW": "Сервис Dialogflow",
-		"EDIT_DIALOGFLOW": "Редактирование конфигурации: Dialogflow",
-		"LANGUAGE": "Язык",
+		"MANDATORYDISPOSITION": "Обязательное распоряжение",
+		"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования, если включена обязательная утилизация",
+		"DIALOGFLOW": "Dialogflow",
+		"EDIT_DIALOGFLOW": "Изменить конфигурацию диалога",
+		"LANGUAGE": "язык",
 		"WELCOMEMESSAGE": "Приветственное сообщение",
 		"ACCESSKEYID": "Идентификатор ключа доступа",
 		"AMAZONLEX": "AmazonLex",
 		"BOTNAME": "Имя бота",
-		"EDIT_AMAZONLEX": "Редактировать конфигурацию Lex",
-		"LEXREGION": "Регион",
-		"SECRETACCESSKEY": "Секретный ключ доступа",
-		"TOOLTIP_SCREENRECORDING_OFF": "Доступна запись с экрана",
-		"TOOLTIP_SCREENRECORDING_ON": "Идет запись с экрана",
+		"EDIT_AMAZONLEX": "Изменить конфигурацию Lex",
+		"LEXREGION": "Область",
+		"SECRETACCESSKEY": "Секрет ключа доступа",
+		"TOOLTIP_SCREENRECORDING_OFF": "Запись экрана доступна",
+		"TOOLTIP_SCREENRECORDING_ON": "Идет запись экрана",
 		"DOWNLOAD_WITHOUT_ATTACHMENTS": "Скачать без вложений",
-		"DOWNLOAD_WITH_ATTACHMENTS": "Скачать с вложениями",
+		"DOWNLOAD_WITH_ATTACHMENTS": "Скачать с вложениями",
 		"LASTMESSAGE": "Последнее сообщение"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/ar.json b/public/app/main/apps/settings/i18n/ar.json
index ad27957..64e4a3c 100644
--- a/public/app/main/apps/settings/i18n/ar.json
+++ b/public/app/main/apps/settings/i18n/ar.json
@@ -33,7 +33,16 @@
 			"BLOCKDURATION_REQUIRED": "حقل الزامي",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "يجب أن تكون القيمة أكبر من أو تساوي",
 			"LOGINMAILFREQUENCY_REQUIRED": "حقل الزامي",
-			"USERNAME_REQUIRED": "حقل الزامي"
+			"USERNAME_REQUIRED": "حقل الزامي",
+			"ACCESSKEY_REQUIRED": "حقل الزامي",
+			"BUCKET_REQUIRED": "حقل الزامي",
+			"LANGUAGE_REQUIRED": "حقل الزامي",
+			"SECRETACCESSKEY_REQUIRED": "حقل الزامي",
+			"SENTIMENTACCOUNT_REQUIRED": "حقل الزامي",
+			"SENTIMENTREGION_REQUIRED": "حقل الزامي",
+			"SERVICE_REQUIRED": "حقل الزامي",
+			"TRANSCRIBEACCOUNT_REQUIRED": "حقل الزامي",
+			"TRANSCRIBEREGION_REQUIRED": "حقل الزامي"
 		},
 		"HELP": {
 			"ADDRESS": "العنوان",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "تردد بريد تسجيل الدخول (ثانية)",
 		"USERNAME": "اسم المستخدم",
 		"GOOGLE_SSO_ENABLED": "تم تمكين تسجيل الدخول الموحد من Google",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "معرف مفتاح الوصول",
+		"ADD_CLOUDPROVIDER": "إضافة حساب",
+		"AI": "أ. أدوات",
+		"AITOOLS": "أ. أدوات",
+		"APPZONE": "منطقة التطبيقات",
+		"BUCKET": "دلو",
+		"DELETE": "حذف",
+		"DELETE_CLOUDPROVIDER": "حذف الحساب",
+		"EDIT_CLOUDPROVIDER": "تحرير الحساب",
+		"LANGUAGE": "لغة",
+		"NEW_CLOUDPROVIDER": "حساب جديد",
+		"SECRETACCESSKEY": "مفتاح الوصول السري",
+		"SENTIMENTACCOUNT": "حساب تحليل المشاعر",
+		"SENTIMENTANALYSIS": "تحليل المشاعر",
+		"SENTIMENTREGION": "منطقة تحليل المشاعر",
+		"SERVICE": "الخدمات",
+		"TRANSCRIBE": "نسخ",
+		"TRANSCRIBEACCOUNT": "نسخ الحساب",
+		"TRANSCRIBEREGION": "كتابة المنطقة",
+		"WHATSAPP": "رابط WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/da.json b/public/app/main/apps/settings/i18n/da.json
index 4a902f0..74261d6 100644
--- a/public/app/main/apps/settings/i18n/da.json
+++ b/public/app/main/apps/settings/i18n/da.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "Obligatorisk felt",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Værdien skal være større end eller lig med",
 			"LOGINMAILFREQUENCY_REQUIRED": "Obligatorisk felt",
-			"USERNAME_REQUIRED": "Obligatorisk felt"
+			"USERNAME_REQUIRED": "Obligatorisk felt",
+			"ACCESSKEY_REQUIRED": "Obligatorisk felt",
+			"BUCKET_REQUIRED": "Obligatorisk felt",
+			"LANGUAGE_REQUIRED": "Obligatorisk felt",
+			"SECRETACCESSKEY_REQUIRED": "Obligatorisk felt",
+			"SENTIMENTACCOUNT_REQUIRED": "Obligatorisk felt",
+			"SENTIMENTREGION_REQUIRED": "Obligatorisk felt",
+			"SERVICE_REQUIRED": "Obligatorisk felt",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Obligatorisk felt",
+			"TRANSCRIBEREGION_REQUIRED": "Obligatorisk felt"
 		},
 		"EDIT_NETWORK": "Edit Network",
 		"DELETE_NETWORK": "Delete Network",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Login-mailfrekvens (sek)",
 		"USERNAME": "Brugernavn",
 		"GOOGLE_SSO_ENABLED": "Google SSO aktiveret",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "Adgangskode-ID",
+		"ADD_CLOUDPROVIDER": "Tilføj konto",
+		"AI": "A.I. Værktøj",
+		"AITOOLS": "A.I. Værktøj",
+		"APPZONE": "Appzone",
+		"BUCKET": "Spand",
+		"DELETE": "Slet",
+		"DELETE_CLOUDPROVIDER": "Slet konto",
+		"EDIT_CLOUDPROVIDER": "Rediger konto",
+		"LANGUAGE": "Sprog",
+		"NEW_CLOUDPROVIDER": "Ny konto",
+		"SECRETACCESSKEY": "Hemmelig adgangsnøgle",
+		"SENTIMENTACCOUNT": "Konto for følelsesanalyse",
+		"SENTIMENTANALYSIS": "Følelsesanalyse",
+		"SENTIMENTREGION": "Region for følelsesanalyse",
+		"SERVICE": "Service",
+		"TRANSCRIBE": "Transcribe",
+		"TRANSCRIBEACCOUNT": "Transskribe konto",
+		"TRANSCRIBEREGION": "Transkriber region",
+		"WHATSAPP": "WhatsApp-stik"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/de.json b/public/app/main/apps/settings/i18n/de.json
index e8d68dc..587ed56 100644
--- a/public/app/main/apps/settings/i18n/de.json
+++ b/public/app/main/apps/settings/i18n/de.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "Pflichtfeld",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Der Wert muss größer oder gleich sein",
 			"LOGINMAILFREQUENCY_REQUIRED": "Pflichtfeld",
-			"USERNAME_REQUIRED": "Pflichtfeld"
+			"USERNAME_REQUIRED": "Pflichtfeld",
+			"ACCESSKEY_REQUIRED": "Pflichtfeld",
+			"BUCKET_REQUIRED": "Pflichtfeld",
+			"LANGUAGE_REQUIRED": "Pflichtfeld",
+			"SECRETACCESSKEY_REQUIRED": "Pflichtfeld",
+			"SENTIMENTACCOUNT_REQUIRED": "Pflichtfeld",
+			"SENTIMENTREGION_REQUIRED": "Pflichtfeld",
+			"SERVICE_REQUIRED": "Pflichtfeld",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Pflichtfeld",
+			"TRANSCRIBEREGION_REQUIRED": "Pflichtfeld"
 		},
 		"EDIT_NETWORK": "Netzwerk bearbeiten",
 		"DELETE_NETWORK": "Netzwerk löschen",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Anmelde-Mail-Häufigkeit (Sek.)",
 		"USERNAME": "Nutzername",
 		"GOOGLE_SSO_ENABLED": "Google SSO aktiviert",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "Zugriffsschlüssel-ID",
+		"ADD_CLOUDPROVIDER": "Konto hinzufügen",
+		"AI": "A.I. Werkzeuge",
+		"AITOOLS": "A.I. Werkzeuge",
+		"APPZONE": "App Zone",
+		"BUCKET": "Eimer",
+		"DELETE": "Löschen",
+		"DELETE_CLOUDPROVIDER": "Konto löschen",
+		"EDIT_CLOUDPROVIDER": "Konto bearbeiten",
+		"LANGUAGE": "Sprache",
+		"NEW_CLOUDPROVIDER": "Neues Konto",
+		"SECRETACCESSKEY": "Geheimer Zugangsschlüssel",
+		"SENTIMENTACCOUNT": "Sentiment Analysis Account",
+		"SENTIMENTANALYSIS": "Stimmungsanalyse",
+		"SENTIMENTREGION": "Sentiment Analysis Region",
+		"SERVICE": "Bedienung",
+		"TRANSCRIBE": "Transkribieren",
+		"TRANSCRIBEACCOUNT": "Konto transkribieren",
+		"TRANSCRIBEREGION": "Region transkribieren",
+		"WHATSAPP": "WhatsApp Connector"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/en.json b/public/app/main/apps/settings/i18n/en.json
index 1995b99..eb6850f 100644
--- a/public/app/main/apps/settings/i18n/en.json
+++ b/public/app/main/apps/settings/i18n/en.json
@@ -51,6 +51,7 @@
 		"CHAT": "Chat",
 		"MAIL": "Email",
 		"MESSAGING": "Sms",
+		"WHATSAPP": "WhatsApp Connector",
 		"FAX": "Fax",
 		"OPENCHANNEL": "Open Channel",
 		"AGENTS": "Agents",
@@ -103,56 +104,7 @@
 		"IMAPGENERALSETTINGS": "IMAP",
 		"LOGINMAILFREQUENCY": "Login Mail Frequency (sec)",
 		"DEFAULTSCREENRECORDINGPATH": "Screen Recording path",
-		"SSO": "SSO",
-		"GOOGLE_SSO_ENABLED": "Google SSO Enabled",
-		"HELP": {
-			"DEFAULTSCREENRECORDINGPATH": "Enter the path where to store screen recording files on the Agent computer (leave empty for default Video Folder path)",
-			"RTLSUPPORT": "Enables the RTL Support for Arabic, Persian and Hebrew languages",
-			"ADDRESS": "External (public) ip address",
-			"USERNAME": "Username",
-			"PASSWORD": "Password",
-			"LOCALNETADDRESS": "Local ip address/subnet",
-			"SMTP_SECURE": "If true, the connection to the server will use TLS",
-			"SMTP_USERNAME": "Username used for authentication",
-			"SMTP_PASSWORD": "Password used for authentication",
-			"EMAILADDRESS": "The message origin Email address (from)",
-			"SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
-			"MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
-			"LOGINMAILFREQUENCY": "Please remember to restart the EMAIL service each time this parameter has been changed"
-		},
-		"ERRORS": {
-			"CHATTIMEOUT_REQUIRED": "Mandatory field",
-			"CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
-			"MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
-			"ADDRESS_REQUIRED": "Mandatory field",
-			"MIN_INTERNAL_REQUIRED": "Mandatory field",
-			"MIN_MAILBOX_REQUIRED": "Mandatory field",
-			"NAME_REQUIRED": "Mandatory field",
-			"HEADER_WHITELABEL_REQUIRED": "Mandatory field",
-			"LOCALNETADDRESS_REQUIRED": "Mandatory field",
-			"LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
-			"ADDRESS_MUST_VALID_PATTERN": "Wrong format",
-			"ACCOUNTNAME_REQUIRED": "Mandatory field",
-			"EMAIL_MUST_VALID": "Wrong format",
-			"SMTP_USERNAME_REQUIRED": "Mandatory field",
-			"PASSWORD_REQUIRED": "Mandatory field",
-			"SMTP_HOST_REQUIRED": "Mandatory field",
-			"SMTP_PORT_REQUIRED": "Mandatory field",
-			"MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"PAGE_TITLE_REQUIRED": "Mandatory field",
-			"EMAIL_REQUIRED": "Mandatory field",
-			"PLAN_REQUIRED": "Mandatory field",
-			"LICENSE_REQUIRED": "Mandatory field",
-			"LOGINMAILFREQUENCY_REQUIRED": "Mandatory field",
-			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"ALLOWEDLOGINATTEMPTS_REQUIRED": "Mandatory field",
-			"BLOCKDURATION_REQUIRED": "Mandatory field",
-			"USERNAME_REQUIRED": "Mandatory field"
-		},
+		"APPZONE": "App Zone",
 		"EDIT_NETWORK": "Edit Network",
 		"DELETE_NETWORK": "Delete Network",
 		"BACK": "Back",
@@ -215,6 +167,83 @@
 		"UPDATE_LICENSE_MANUALLY": "Do you want to update your license manually?",
 		"SECURITY": "Security",
 		"ALLOWEDLOGINATTEMPTS": "Allowed login attempts before locking the user/agent",
-		"BLOCKDURATION": "Minutes to wait before automatic unlock"
+		"BLOCKDURATION": "Minutes to wait before automatic unlock",
+		"AI": "A.I. Tools",
+		"AITOOLS": "A.I. Tools",
+		"SERVICE": "Service",
+		"NEW_CLOUDPROVIDER": "New Account",
+		"ADD_CLOUDPROVIDER": "Add Account",
+		"DELETE": "Delete",
+		"SECRETACCESSKEY": "Secret Access Key",
+		"ACCESSKEY": "Access Key ID",
+		"EDIT_CLOUDPROVIDER": "Edit Account",
+		"DELETE_CLOUDPROVIDER": "Delete Account",
+		"LANGUAGE": "Language",
+		"BUCKET": "Bucket",
+		"TRANSCRIBE": "Transcribe",
+		"TRANSCRIBEREGION": "Transcribe Region",
+		"TRANSCRIBEACCOUNT": "Transcribe Account",
+		"SENTIMENTANALYSIS": "Sentiment Analysis",
+		"SENTIMENTREGION": "Sentiment Analysis Region",
+		"SENTIMENTACCOUNT": "Sentiment Analysis Account",
+		"SSO": "SSO",
+		"GOOGLE_SSO_ENABLED": "Google SSO Enabled",
+		"HELP": {
+			"DEFAULTSCREENRECORDINGPATH": "Enter the path where to store screen recording files on the Agent computer (leave empty for default Video Folder path)",
+			"RTLSUPPORT": "Enables the RTL Support for Arabic, Persian and Hebrew languages",
+			"ADDRESS": "External (public) ip address",
+			"LOCALNETADDRESS": "Local ip address/subnet",
+			"SMTP_SECURE": "If true, the connection to the server will use TLS",
+			"SMTP_USERNAME": "Username used for authentication",
+			"SMTP_PASSWORD": "Password used for authentication",
+			"EMAILADDRESS": "The message origin Email address (from)",
+			"SECURITY_SUITE": "Enables the secure password format, the mandatory password reset after the first login and the password expiration after 90 days",
+			"MOTIONBARREMEMBERME": "Enable/Disable the Remember Me feature in Motion Phonebar",
+			"LOGINMAILFREQUENCY": "Please remember to restart the EMAIL service each time this parameter has been changed",
+			"USERNAME": "Username",
+			"PASSWORD": "Password"
+		},
+		"ERRORS": {
+			"CHATTIMEOUT_REQUIRED": "Mandatory field",
+			"CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Wrong format",
+			"MOTIONBARAUTOUPDATERURL_REQUIRED": "Mandatory field",
+			"ADDRESS_REQUIRED": "Mandatory field",
+			"MIN_INTERNAL_REQUIRED": "Mandatory field",
+			"MIN_MAILBOX_REQUIRED": "Mandatory field",
+			"NAME_REQUIRED": "Mandatory field",
+			"HEADER_WHITELABEL_REQUIRED": "Mandatory field",
+			"LOCALNETADDRESS_REQUIRED": "Mandatory field",
+			"LOCALNETADDRESS_MUST_VALID_PATTERN": "Wrong format",
+			"ADDRESS_MUST_VALID_PATTERN": "Wrong format",
+			"ACCOUNTNAME_REQUIRED": "Mandatory field",
+			"EMAIL_MUST_VALID": "Wrong format",
+			"SMTP_USERNAME_REQUIRED": "Mandatory field",
+			"PASSWORD_REQUIRED": "Mandatory field",
+			"SMTP_HOST_REQUIRED": "Mandatory field",
+			"SMTP_PORT_REQUIRED": "Mandatory field",
+			"MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"PAGE_TITLE_REQUIRED": "Mandatory field",
+			"EMAIL_REQUIRED": "Mandatory field",
+			"PLAN_REQUIRED": "Mandatory field",
+			"LICENSE_REQUIRED": "Mandatory field",
+			"LOGINMAILFREQUENCY_REQUIRED": "Mandatory field",
+			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"ALLOWEDLOGINATTEMPTS_REQUIRED": "Mandatory field",
+			"BLOCKDURATION_REQUIRED": "Mandatory field",
+			"SERVICE_REQUIRED": "Mandatory field",
+			"SECRETACCESSKEY_REQUIRED": "Mandatory field",
+			"ACCESSKEY_REQUIRED": "Mandatory field",
+			"LANGUAGE_REQUIRED": "Mandatory field",
+			"BUCKET_REQUIRED": "Mandatory field",
+			"TRANSCRIBEREGION_REQUIRED": "Mandatory field",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Mandatory field",
+			"SENTIMENTREGION_REQUIRED": "Mandatory field",
+			"SENTIMENTACCOUNT_REQUIRED": "Mandatory field",
+			"USERNAME_REQUIRED": "Mandatory field"
+		}
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/es.json b/public/app/main/apps/settings/i18n/es.json
index 2f3c80d..6683f5f 100644
--- a/public/app/main/apps/settings/i18n/es.json
+++ b/public/app/main/apps/settings/i18n/es.json
@@ -48,7 +48,16 @@
 			"BLOCKDURATION_REQUIRED": "Campo obligatorio",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El valor debe ser mayor o igual que",
 			"LOGINMAILFREQUENCY_REQUIRED": "Campo obligatorio",
-			"USERNAME_REQUIRED": "Campo obligatorio"
+			"USERNAME_REQUIRED": "Campo obligatorio",
+			"ACCESSKEY_REQUIRED": "Campo obligatorio",
+			"BUCKET_REQUIRED": "Campo obligatorio",
+			"LANGUAGE_REQUIRED": "Campo obligatorio",
+			"SECRETACCESSKEY_REQUIRED": "Campo obligatorio",
+			"SENTIMENTACCOUNT_REQUIRED": "Campo obligatorio",
+			"SENTIMENTREGION_REQUIRED": "Campo obligatorio",
+			"SERVICE_REQUIRED": "Campo obligatorio",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Campo obligatorio",
+			"TRANSCRIBEREGION_REQUIRED": "Campo obligatorio"
 		},
 		"ACCOUNTNAME": "Nombre de la cuenta",
 		"ADDRESS": "Dirección",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Frecuencia de correo de inicio de sesión (seg.)",
 		"USERNAME": "Nombre de usuario",
 		"GOOGLE_SSO_ENABLED": "Google SSO habilitado",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "ID de clave de acceso",
+		"ADD_CLOUDPROVIDER": "Añadir cuenta",
+		"AI": "AI. Herramientas",
+		"AITOOLS": "AI. Herramientas",
+		"APPZONE": "Zona de aplicaciones",
+		"BUCKET": "Cubeta",
+		"DELETE": "Eliminar",
+		"DELETE_CLOUDPROVIDER": "Borrar cuenta",
+		"EDIT_CLOUDPROVIDER": "Editar cuenta",
+		"LANGUAGE": "Idioma",
+		"NEW_CLOUDPROVIDER": "Nueva cuenta",
+		"SECRETACCESSKEY": "Clave de acceso secreta",
+		"SENTIMENTACCOUNT": "Cuenta de análisis de sentimiento",
+		"SENTIMENTANALYSIS": "Análisis de los sentimientos",
+		"SENTIMENTREGION": "Región de análisis de sentimiento",
+		"SERVICE": "Servicio",
+		"TRANSCRIBE": "Transcribir",
+		"TRANSCRIBEACCOUNT": "Transcribir cuenta",
+		"TRANSCRIBEREGION": "Transcribir región",
+		"WHATSAPP": "Conector de WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/fa.json b/public/app/main/apps/settings/i18n/fa.json
index 485cece..dc4f4d4 100644
--- a/public/app/main/apps/settings/i18n/fa.json
+++ b/public/app/main/apps/settings/i18n/fa.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "زمینه اجباری",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "مقدار باید بیشتر یا مساوی باشد",
 			"LOGINMAILFREQUENCY_REQUIRED": "زمینه اجباری",
-			"USERNAME_REQUIRED": "زمینه اجباری"
+			"USERNAME_REQUIRED": "زمینه اجباری",
+			"ACCESSKEY_REQUIRED": "زمینه اجباری",
+			"BUCKET_REQUIRED": "زمینه اجباری",
+			"LANGUAGE_REQUIRED": "زمینه اجباری",
+			"SECRETACCESSKEY_REQUIRED": "زمینه اجباری",
+			"SENTIMENTACCOUNT_REQUIRED": "زمینه اجباری",
+			"SENTIMENTREGION_REQUIRED": "زمینه اجباری",
+			"SERVICE_REQUIRED": "زمینه اجباری",
+			"TRANSCRIBEACCOUNT_REQUIRED": "زمینه اجباری",
+			"TRANSCRIBEREGION_REQUIRED": "زمینه اجباری"
 		},
 		"EDIT_NETWORK": "ویرایش شبکه",
 		"DELETE_NETWORK": "شبکه را حذف کنید",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "فرکانس ورود به سیستم (ثانیه)",
 		"USERNAME": "نام کاربری",
 		"GOOGLE_SSO_ENABLED": "Google SSO فعال است",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "شناسه کلید دسترسی",
+		"ADD_CLOUDPROVIDER": "اضافه کردن حساب",
+		"AI": "A.I. ابزارها",
+		"AITOOLS": "A.I. ابزارها",
+		"APPZONE": "منطقه برنامه",
+		"BUCKET": "سطل",
+		"DELETE": "حذف",
+		"DELETE_CLOUDPROVIDER": "حذف حساب کاربری",
+		"EDIT_CLOUDPROVIDER": "ویرایش حساب",
+		"LANGUAGE": "زبان",
+		"NEW_CLOUDPROVIDER": "حساب جدید",
+		"SECRETACCESSKEY": "کلید دسترسی مخفی",
+		"SENTIMENTACCOUNT": "حساب کاربری تجزیه و تحلیل احساسات",
+		"SENTIMENTANALYSIS": "تجزیه و تحلیل احساسات",
+		"SENTIMENTREGION": "منطقه تجزیه و تحلیل احساسات",
+		"SERVICE": "سرویس",
+		"TRANSCRIBE": "رونویسی",
+		"TRANSCRIBEACCOUNT": "رونویسی حساب",
+		"TRANSCRIBEREGION": "منطقه را رونویسی کنید",
+		"WHATSAPP": "اتصال واتساپ"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/fi.json b/public/app/main/apps/settings/i18n/fi.json
index 0c69cd3..2f7689e 100644
--- a/public/app/main/apps/settings/i18n/fi.json
+++ b/public/app/main/apps/settings/i18n/fi.json
@@ -113,7 +113,16 @@
 			"BLOCKDURATION_REQUIRED": "Pakollinen kenttä",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Arvon on oltava suurempi tai yhtä suuri kuin",
 			"LOGINMAILFREQUENCY_REQUIRED": "Pakollinen kenttä",
-			"USERNAME_REQUIRED": "Pakollinen kenttä"
+			"USERNAME_REQUIRED": "Pakollinen kenttä",
+			"ACCESSKEY_REQUIRED": "Pakollinen kenttä",
+			"BUCKET_REQUIRED": "Pakollinen kenttä",
+			"LANGUAGE_REQUIRED": "Pakollinen kenttä",
+			"SECRETACCESSKEY_REQUIRED": "Pakollinen kenttä",
+			"SENTIMENTACCOUNT_REQUIRED": "Pakollinen kenttä",
+			"SENTIMENTREGION_REQUIRED": "Pakollinen kenttä",
+			"SERVICE_REQUIRED": "Pakollinen kenttä",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Pakollinen kenttä",
+			"TRANSCRIBEREGION_REQUIRED": "Pakollinen kenttä"
 		},
 		"EDIT_NETWORK": "Muokkaa verkko",
 		"DELETE_NETWORK": "Poista verkko",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Sisäänkirjautumisen postitaajuus (sek)",
 		"USERNAME": "Käyttäjätunnus",
 		"GOOGLE_SSO_ENABLED": "Google SSO käytössä",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "Käyttöavaintunnus",
+		"ADD_CLOUDPROVIDER": "Lisää tili",
+		"AI": "A.I. Työkalut",
+		"AITOOLS": "A.I. Työkalut",
+		"APPZONE": "Sovellusalue",
+		"BUCKET": "Ämpäri",
+		"DELETE": "Poistaa",
+		"DELETE_CLOUDPROVIDER": "Poista tili",
+		"EDIT_CLOUDPROVIDER": "Muokkaa tiliä",
+		"LANGUAGE": "Kieli",
+		"NEW_CLOUDPROVIDER": "Uusi tili",
+		"SECRETACCESSKEY": "Salainen käyttöavain",
+		"SENTIMENTACCOUNT": "Sentiment-analyysitili",
+		"SENTIMENTANALYSIS": "Aistien analyysi",
+		"SENTIMENTREGION": "Sentimenttianalyysialue",
+		"SERVICE": "palvelu",
+		"TRANSCRIBE": "Kirjoittaa puhtaaksi",
+		"TRANSCRIBEACCOUNT": "Tilisiirto",
+		"TRANSCRIBEREGION": "Transkriptioalue",
+		"WHATSAPP": "WhatsApp-liitin"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/fr.json b/public/app/main/apps/settings/i18n/fr.json
index d774aa7..049e0fa 100644
--- a/public/app/main/apps/settings/i18n/fr.json
+++ b/public/app/main/apps/settings/i18n/fr.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "Champ obligatoire",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "La valeur doit être supérieure ou égale à",
 			"LOGINMAILFREQUENCY_REQUIRED": "Champ obligatoire",
-			"USERNAME_REQUIRED": "Champ obligatoire"
+			"USERNAME_REQUIRED": "Champ obligatoire",
+			"ACCESSKEY_REQUIRED": "Champ obligatoire",
+			"BUCKET_REQUIRED": "Champ obligatoire",
+			"LANGUAGE_REQUIRED": "Champ obligatoire",
+			"SECRETACCESSKEY_REQUIRED": "Champ obligatoire",
+			"SENTIMENTACCOUNT_REQUIRED": "Champ obligatoire",
+			"SENTIMENTREGION_REQUIRED": "Champ obligatoire",
+			"SERVICE_REQUIRED": "Champ obligatoire",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Champ obligatoire",
+			"TRANSCRIBEREGION_REQUIRED": "Champ obligatoire"
 		},
 		"EDIT_NETWORK": "Modifier un réseau",
 		"DELETE_NETWORK": "Supprimer réseau",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Fréquence de connexion par e-mail (sec)",
 		"USERNAME": "Nom d'utilisateur",
 		"GOOGLE_SSO_ENABLED": "Google SSO activé",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "ID de la clé d'accès",
+		"ADD_CLOUDPROVIDER": "Ajouter un compte",
+		"AI": "A.I. Outils",
+		"AITOOLS": "A.I. Outils",
+		"APPZONE": "Zone d'application",
+		"BUCKET": "Seau",
+		"DELETE": "Supprimer",
+		"DELETE_CLOUDPROVIDER": "Supprimer le compte",
+		"EDIT_CLOUDPROVIDER": "Modifier le compte",
+		"LANGUAGE": "Langue",
+		"NEW_CLOUDPROVIDER": "Nouveau compte",
+		"SECRETACCESSKEY": "Clé d'accès secrète",
+		"SENTIMENTACCOUNT": "Compte d'analyse des sentiments",
+		"SENTIMENTANALYSIS": "Analyse des sentiments",
+		"SENTIMENTREGION": "Région d'analyse des sentiments",
+		"SERVICE": "Un service",
+		"TRANSCRIBE": "Transcrire",
+		"TRANSCRIBEACCOUNT": "Transcrire le compte",
+		"TRANSCRIBEREGION": "Transcrire la région",
+		"WHATSAPP": "Connecteur WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/he.json b/public/app/main/apps/settings/i18n/he.json
index bcdf699..b15900b 100644
--- a/public/app/main/apps/settings/i18n/he.json
+++ b/public/app/main/apps/settings/i18n/he.json
@@ -138,7 +138,16 @@
 			"BLOCKDURATION_REQUIRED": "שדה חובה",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "הערך חייב להיות גדול או שווה לו",
 			"LOGINMAILFREQUENCY_REQUIRED": "שדה חובה",
-			"USERNAME_REQUIRED": "שדה חובה"
+			"USERNAME_REQUIRED": "שדה חובה",
+			"ACCESSKEY_REQUIRED": "שדה חובה",
+			"BUCKET_REQUIRED": "שדה חובה",
+			"LANGUAGE_REQUIRED": "שדה חובה",
+			"SECRETACCESSKEY_REQUIRED": "שדה חובה",
+			"SENTIMENTACCOUNT_REQUIRED": "שדה חובה",
+			"SENTIMENTREGION_REQUIRED": "שדה חובה",
+			"SERVICE_REQUIRED": "שדה חובה",
+			"TRANSCRIBEACCOUNT_REQUIRED": "שדה חובה",
+			"TRANSCRIBEREGION_REQUIRED": "שדה חובה"
 		},
 		"EDIT_NETWORK": "ערוך רשת",
 		"DELETE_NETWORK": "מחק רשת",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "תדירות דואר בכניסה (שניות)",
 		"USERNAME": "שם משתמש",
 		"GOOGLE_SSO_ENABLED": "Google SSO מופעל",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "גישה למזהה מפתח",
+		"ADD_CLOUDPROVIDER": "הוסף חשבון",
+		"AI": "A.I. כלים",
+		"AITOOLS": "A.I. כלים",
+		"APPZONE": "אזור אפליקציות",
+		"BUCKET": "דְלִי",
+		"DELETE": "לִמְחוֹק",
+		"DELETE_CLOUDPROVIDER": "מחק חשבון",
+		"EDIT_CLOUDPROVIDER": "ערוך חשבון",
+		"LANGUAGE": "שפה",
+		"NEW_CLOUDPROVIDER": "חשבון חדש",
+		"SECRETACCESSKEY": "מפתח גישה סודית",
+		"SENTIMENTACCOUNT": "חשבון ניתוח רגשות",
+		"SENTIMENTANALYSIS": "ניתוח הסנטימנט",
+		"SENTIMENTREGION": "אזור ניתוח רגשות",
+		"SERVICE": "שֵׁרוּת",
+		"TRANSCRIBE": "לְתַעֲתֵק",
+		"TRANSCRIBEACCOUNT": "תעתיק חשבון",
+		"TRANSCRIBEREGION": "לתמלל אזור",
+		"WHATSAPP": "מחבר WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/hi.json b/public/app/main/apps/settings/i18n/hi.json
index 0a1313a..b4ea7fe 100644
--- a/public/app/main/apps/settings/i18n/hi.json
+++ b/public/app/main/apps/settings/i18n/hi.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "आवश्यक स्थान",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "मान इससे अधिक या उसके बराबर होना चाहिए",
 			"LOGINMAILFREQUENCY_REQUIRED": "आवश्यक स्थान",
-			"USERNAME_REQUIRED": "आवश्यक स्थान"
+			"USERNAME_REQUIRED": "आवश्यक स्थान",
+			"ACCESSKEY_REQUIRED": "आवश्यक स्थान",
+			"BUCKET_REQUIRED": "आवश्यक स्थान",
+			"LANGUAGE_REQUIRED": "आवश्यक स्थान",
+			"SECRETACCESSKEY_REQUIRED": "आवश्यक स्थान",
+			"SENTIMENTACCOUNT_REQUIRED": "आवश्यक स्थान",
+			"SENTIMENTREGION_REQUIRED": "आवश्यक स्थान",
+			"SERVICE_REQUIRED": "आवश्यक स्थान",
+			"TRANSCRIBEACCOUNT_REQUIRED": "आवश्यक स्थान",
+			"TRANSCRIBEREGION_REQUIRED": "आवश्यक स्थान"
 		},
 		"EDIT_NETWORK": "नेटवर्क संपादित करें",
 		"DELETE_NETWORK": "नेटवर्क हटाएं",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "लॉगिन मेल फ्रीक्वेंसी (सेकंड)",
 		"USERNAME": "उपयोगकर्ता नाम",
 		"GOOGLE_SSO_ENABLED": "Google SSO सक्षम है",
-		"SSO": "एसएसओ"
+		"SSO": "एसएसओ",
+		"ACCESSKEY": "एक्सेस की आईडी",
+		"ADD_CLOUDPROVIDER": "खाता जोड़ो",
+		"AI": "A.I. उपकरण",
+		"AITOOLS": "A.I. उपकरण",
+		"APPZONE": "ऐप ज़ोन",
+		"BUCKET": "बाल्टी",
+		"DELETE": "हटाएं",
+		"DELETE_CLOUDPROVIDER": "खाता हटा दो",
+		"EDIT_CLOUDPROVIDER": "खाता संपादित करें",
+		"LANGUAGE": "भाषा: हिन्दी",
+		"NEW_CLOUDPROVIDER": "नया खाता",
+		"SECRETACCESSKEY": "गुप्त पहुँच कुंजी",
+		"SENTIMENTACCOUNT": "वाक्य विश्लेषण खाता",
+		"SENTIMENTANALYSIS": "भावनाओं का विश्लेषण",
+		"SENTIMENTREGION": "वाक्य विश्लेषण क्षेत्र",
+		"SERVICE": "सर्विस",
+		"TRANSCRIBE": "लिप्यंतरित",
+		"TRANSCRIBEACCOUNT": "खाता का हस्तांतरण",
+		"TRANSCRIBEREGION": "क्षेत्र का वर्णन करें",
+		"WHATSAPP": "WhatsApp कनेक्टर"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/id.json b/public/app/main/apps/settings/i18n/id.json
index 474a770..d4ec7bc 100644
--- a/public/app/main/apps/settings/i18n/id.json
+++ b/public/app/main/apps/settings/i18n/id.json
@@ -33,7 +33,16 @@
 			"BLOCKDURATION_REQUIRED": "Bidang wajib",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Nilai harus lebih besar dari atau sama dengan",
 			"LOGINMAILFREQUENCY_REQUIRED": "Bidang wajib",
-			"USERNAME_REQUIRED": "Bidang wajib"
+			"USERNAME_REQUIRED": "Bidang wajib",
+			"ACCESSKEY_REQUIRED": "Bidang wajib",
+			"BUCKET_REQUIRED": "Bidang wajib",
+			"LANGUAGE_REQUIRED": "Bidang wajib",
+			"SECRETACCESSKEY_REQUIRED": "Bidang wajib",
+			"SENTIMENTACCOUNT_REQUIRED": "Bidang wajib",
+			"SENTIMENTREGION_REQUIRED": "Bidang wajib",
+			"SERVICE_REQUIRED": "Bidang wajib",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Bidang wajib",
+			"TRANSCRIBEREGION_REQUIRED": "Bidang wajib"
 		},
 		"HELP": {
 			"ADDRESS": "Alamat ip eksternal (publik)",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Frekuensi Email Masuk (dtk)",
 		"USERNAME": "Nama pengguna",
 		"GOOGLE_SSO_ENABLED": "Google SSO Diaktifkan",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "Access Key ID",
+		"ADD_CLOUDPROVIDER": "Menambahkan akun",
+		"AI": "A.I. Alat",
+		"AITOOLS": "A.I. Alat",
+		"APPZONE": "Zona Aplikasi",
+		"BUCKET": "Ember",
+		"DELETE": "Menghapus",
+		"DELETE_CLOUDPROVIDER": "Hapus akun",
+		"EDIT_CLOUDPROVIDER": "Mengedit akun",
+		"LANGUAGE": "Bahasa",
+		"NEW_CLOUDPROVIDER": "Akun baru",
+		"SECRETACCESSKEY": "Kunci Akses Rahasia",
+		"SENTIMENTACCOUNT": "Akun Analisis Sentimen",
+		"SENTIMENTANALYSIS": "Analisis Sentimen",
+		"SENTIMENTREGION": "Wilayah Analisis Sentimen",
+		"SERVICE": "Layanan",
+		"TRANSCRIBE": "Menuliskan",
+		"TRANSCRIBEACCOUNT": "Transkripsikan Akun",
+		"TRANSCRIBEREGION": "Transkripsikan Wilayah",
+		"WHATSAPP": "Konektor WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/it.json b/public/app/main/apps/settings/i18n/it.json
index 0225957..0556ff5 100644
--- a/public/app/main/apps/settings/i18n/it.json
+++ b/public/app/main/apps/settings/i18n/it.json
@@ -42,6 +42,7 @@
 		"CHAT": "Chat",
 		"MAIL": "Email",
 		"MESSAGING": "Sms",
+		"WHATSAPP": "WhatsApp Connector",
 		"FAX": "Fax",
 		"OPENCHANNEL": "Open Channel",
 		"AGENTS": "Agenti",
@@ -92,54 +93,6 @@
 		"IMAPGENERALSETTINGS": "IMAP",
 		"LOGINMAILFREQUENCY": "Frequenza controllo email sul server (sec)",
 		"DEFAULTSCREENRECORDINGPATH": "Screen Recording path",
-		"HELP": {
-			"ADDRESS": "Indirizzo della rete",
-			"LOCALNETADDRESS": "Indirizzo IP/Subnet mask",
-			"SMTP_SECURE": "Se attivo, la conessione al server verrà effettuata usando il protocollo TLS",
-			"SMTP_USERNAME": "Username usato per l'autenticazione",
-			"SMTP_PASSWORD": "Password usata per l'autenticazione",
-			"EMAILADDRESS": "Specifica l'indirizzo di provenienza del messaggio (da)",
-			"SECURITY_SUITE": "Abilita il formato sicuro per le password, il reset della password obbligatorio al primo login e la scadenza della password dopo 90 giorni",
-			"MOTIONBARREMEMBERME": "Abilita/Disabilita la funzione Remember Me della Motion Phonebar",
-			"RTLSUPPORT": "Abilita il supporto RTL per le lingue araba, persiana ed ebraica",
-			"LOGINMAILFREQUENCY": "Si prega di riavviare il servizio EMAIL sul server dopo la modifica",
-			"DEFAULTSCREENRECORDINGPATH": "Immettere il percorso in cui archiviare i file di registrazione dello schermo sul computer dell'agente (lasciare vuoto per il percorso della cartella video predefinita)",
-			"PASSWORD": "Parola d'ordine",
-			"USERNAME": "Nome utente"
-		},
-		"ERRORS": {
-			"CHATTIMEOUT_REQUIRED": "Campo obbligatorio",
-			"CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"ADDRESS_REQUIRED": "Campo obbligatorio",
-			"MIN_INTERNAL_REQUIRED": "Campo obbligatorio",
-			"MIN_MAILBOX_REQUIRED": "Campo obbligatorio",
-			"NAME_REQUIRED": "Campo obbligatorio",
-			"HEADER_WHITELABEL_REQUIRED": "Campo obbligatorio",
-			"LOCALNETADDRESS_REQUIRED": "Campo obbligatorio",
-			"LOCALNETADDRESS_MUST_VALID_PATTERN": "Il campo deve avere un formato valido",
-			"ADDRESS_MUST_VALID_PATTERN": "IIl campo deve avere un formato valido",
-			"ACCOUNTNAME_REQUIRED": "Campo obbligatorio",
-			"EMAIL_MUST_VALID": "Il campo deve avere un formato valido",
-			"SMTP_USERNAME_REQUIRED": "Campo obbligatorio",
-			"PASSWORD_REQUIRED": "Campo obbligatorio",
-			"SMTP_HOST_REQUIRED": "Campo obbligatorio",
-			"SMTP_PORT_REQUIRED": "Campo obbligatorio",
-			"MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"PAGE_TITLE_REQUIRED": "Campo obbligatorio",
-			"EMAIL_REQUIRED": "Campo obbligatorio",
-			"PLAN_REQUIRED": "Campo obbligatorio",
-			"MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Formato errato",
-			"MOTIONBARAUTOUPDATERURL_REQUIRED": "Campo obbligatorio",
-			"LICENSE_REQUIRED": "Campo obbligatorio",
-			"LOGINMAILFREQUENCY_REQUIRED": "Campo obbligatorio",
-			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"ALLOWEDLOGINATTEMPTS_REQUIRED": "Campo obbligatorio",
-			"BLOCKDURATION_REQUIRED": "Campo obbligatorio",
-			"USERNAME_REQUIRED": "Campo obbligatorio"
-		},
 		"EDIT_NETWORK": "Modifica Rete",
 		"DELETE_NETWORK": "Elimina Rete",
 		"BACK": "Indietro",
@@ -213,8 +166,84 @@
 		"SECURITY": "Sicurezza",
 		"BLOCKDURATION": "Tempo necessario prima dello sblocco automatico",
 		"ALLOWEDLOGINATTEMPTS": "Tentativi di accesso consentiti prima di bloccare l'utente / agente",
+		"AI": "Strumenti A.I.",
+		"AITOOLS": "Strumenti A.I.",
+		"SERVICE": "Servizio",
+		"NEW_CLOUDPROVIDER": "Nuovo Account",
+		"ADD_CLOUDPROVIDER": "Aggiungi Account",
+		"DELETE": "Elimina",
+		"SECRETACCESSKEY": "Secret Access Key",
+		"ACCESSKEY": "Access Key ID",
+		"EDIT_CLOUDPROVIDER": "Modifica Account",
+		"DELETE_CLOUDPROVIDER": "Elimina Account",
+		"LANGUAGE": "Lingua",
+		"BUCKET": "Bucket",
+		"TRANSCRIBE": "Transcribe",
+		"TRANSCRIBEREGION": "Transcribe Regione",
+		"TRANSCRIBEACCOUNT": "Transcribe Account",
+		"SENTIMENTANALYSIS": "Sentiment Analysis",
+		"SENTIMENTREGION": "Sentiment Analysis Regione",
+		"SENTIMENTACCOUNT": "Sentiment Analysis Account",
 		"USERNAME": "Nome utente",
 		"GOOGLE_SSO_ENABLED": "SSO di Google abilitato",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"HELP": {
+			"ADDRESS": "Indirizzo della rete",
+			"LOCALNETADDRESS": "Indirizzo IP/Subnet mask",
+			"SMTP_SECURE": "Se attivo, la conessione al server verrà effettuata usando il protocollo TLS",
+			"SMTP_USERNAME": "Username usato per l'autenticazione",
+			"SMTP_PASSWORD": "Password usata per l'autenticazione",
+			"EMAILADDRESS": "Specifica l'indirizzo di provenienza del messaggio (da)",
+			"SECURITY_SUITE": "Abilita il formato sicuro per le password, il reset della password obbligatorio al primo login e la scadenza della password dopo 90 giorni",
+			"MOTIONBARREMEMBERME": "Abilita/Disabilita la funzione Remember Me della Motion Phonebar",
+			"RTLSUPPORT": "Abilita il supporto RTL per le lingue araba, persiana ed ebraica",
+			"LOGINMAILFREQUENCY": "Si prega di riavviare il servizio EMAIL sul server dopo la modifica",
+			"DEFAULTSCREENRECORDINGPATH": "Immettere il percorso in cui archiviare i file di registrazione dello schermo sul computer dell'agente (lasciare vuoto per il percorso della cartella video predefinita)",
+			"PASSWORD": "Parola d'ordine",
+			"USERNAME": "Nome utente"
+		},
+		"ERRORS": {
+			"CHATTIMEOUT_REQUIRED": "Campo obbligatorio",
+			"CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"ADDRESS_REQUIRED": "Campo obbligatorio",
+			"MIN_INTERNAL_REQUIRED": "Campo obbligatorio",
+			"MIN_MAILBOX_REQUIRED": "Campo obbligatorio",
+			"NAME_REQUIRED": "Campo obbligatorio",
+			"HEADER_WHITELABEL_REQUIRED": "Campo obbligatorio",
+			"LOCALNETADDRESS_REQUIRED": "Campo obbligatorio",
+			"LOCALNETADDRESS_MUST_VALID_PATTERN": "Il campo deve avere un formato valido",
+			"ADDRESS_MUST_VALID_PATTERN": "IIl campo deve avere un formato valido",
+			"ACCOUNTNAME_REQUIRED": "Campo obbligatorio",
+			"EMAIL_MUST_VALID": "Il campo deve avere un formato valido",
+			"SMTP_USERNAME_REQUIRED": "Campo obbligatorio",
+			"PASSWORD_REQUIRED": "Campo obbligatorio",
+			"SMTP_HOST_REQUIRED": "Campo obbligatorio",
+			"SMTP_PORT_REQUIRED": "Campo obbligatorio",
+			"MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"PAGE_TITLE_REQUIRED": "Campo obbligatorio",
+			"EMAIL_REQUIRED": "Campo obbligatorio",
+			"PLAN_REQUIRED": "Campo obbligatorio",
+			"MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Formato errato",
+			"MOTIONBARAUTOUPDATERURL_REQUIRED": "Campo obbligatorio",
+			"LICENSE_REQUIRED": "Campo obbligatorio",
+			"LOGINMAILFREQUENCY_REQUIRED": "Campo obbligatorio",
+			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"ALLOWEDLOGINATTEMPTS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"BLOCKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"ALLOWEDLOGINATTEMPTS_REQUIRED": "Campo obbligatorio",
+			"BLOCKDURATION_REQUIRED": "Campo obbligatorio",
+			"SERVICE_REQUIRED": "Campo obbligatorio",
+			"SECRETACCESSKEY_REQUIRED": "Campo obbligatorio",
+			"ACCESSKEY_REQUIRED": "Campo obbligatorio",
+			"BUCKET_REQUIRED": "Campo obbligatorio",
+			"LANGUAGE_REQUIRED": "Campo obbligatorio",
+			"SENTIMENTACCOUNT_REQUIRED": "Campo obbligatorio",
+			"SENTIMENTREGION_REQUIRED": "Campo obbligatorio",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Campo obbligatorio",
+			"TRANSCRIBEREGION_REQUIRED": "Campo obbligatorio",
+			"USERNAME_REQUIRED": "Campo obbligatorio"
+		},
+		"APPZONE": "Zona app"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/ja.json b/public/app/main/apps/settings/i18n/ja.json
index 35cd375..a075dd7 100644
--- a/public/app/main/apps/settings/i18n/ja.json
+++ b/public/app/main/apps/settings/i18n/ja.json
@@ -33,7 +33,16 @@
 			"BLOCKDURATION_REQUIRED": "必須フィールド",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "値は以上でなければなりません",
 			"LOGINMAILFREQUENCY_REQUIRED": "必須フィールド",
-			"USERNAME_REQUIRED": "必須フィールド"
+			"USERNAME_REQUIRED": "必須フィールド",
+			"ACCESSKEY_REQUIRED": "必須フィールド",
+			"BUCKET_REQUIRED": "必須フィールド",
+			"LANGUAGE_REQUIRED": "必須フィールド",
+			"SECRETACCESSKEY_REQUIRED": "必須フィールド",
+			"SENTIMENTACCOUNT_REQUIRED": "必須フィールド",
+			"SENTIMENTREGION_REQUIRED": "必須フィールド",
+			"SERVICE_REQUIRED": "必須フィールド",
+			"TRANSCRIBEACCOUNT_REQUIRED": "必須フィールド",
+			"TRANSCRIBEREGION_REQUIRED": "必須フィールド"
 		},
 		"HELP": {
 			"ADDRESS": "外部（パブリック）IPアドレス",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "ログインメールの頻度（秒）",
 		"USERNAME": "ユーザー名",
 		"GOOGLE_SSO_ENABLED": "Google SSOが有効",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "アクセスキーID",
+		"ADD_CLOUDPROVIDER": "アカウントを追加する",
+		"AI": "A.I.ツール",
+		"AITOOLS": "A.I.ツール",
+		"APPZONE": "アプリゾーン",
+		"BUCKET": "バケツ",
+		"DELETE": "削除する",
+		"DELETE_CLOUDPROVIDER": "アカウントを削除する",
+		"EDIT_CLOUDPROVIDER": "アカウントの編集",
+		"LANGUAGE": "言語",
+		"NEW_CLOUDPROVIDER": "新しいアカウント",
+		"SECRETACCESSKEY": "シークレットアクセスキー",
+		"SENTIMENTACCOUNT": "感情分析アカウント",
+		"SENTIMENTANALYSIS": "感情分析",
+		"SENTIMENTREGION": "感情分析領域",
+		"SERVICE": "サービス",
+		"TRANSCRIBE": "文字起こし",
+		"TRANSCRIBEACCOUNT": "文字起こしアカウント",
+		"TRANSCRIBEREGION": "文字起こし地域",
+		"WHATSAPP": "WhatsAppコネクタ"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/ko.json b/public/app/main/apps/settings/i18n/ko.json
index 95fb353..8ec3c7e 100644
--- a/public/app/main/apps/settings/i18n/ko.json
+++ b/public/app/main/apps/settings/i18n/ko.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "필수 필드",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "값은 크거나 같아야합니다",
 			"LOGINMAILFREQUENCY_REQUIRED": "필수 필드",
-			"USERNAME_REQUIRED": "필수 필드"
+			"USERNAME_REQUIRED": "필수 필드",
+			"ACCESSKEY_REQUIRED": "필수 필드",
+			"BUCKET_REQUIRED": "필수 필드",
+			"LANGUAGE_REQUIRED": "필수 필드",
+			"SECRETACCESSKEY_REQUIRED": "필수 필드",
+			"SENTIMENTACCOUNT_REQUIRED": "필수 필드",
+			"SENTIMENTREGION_REQUIRED": "필수 필드",
+			"SERVICE_REQUIRED": "필수 필드",
+			"TRANSCRIBEACCOUNT_REQUIRED": "필수 필드",
+			"TRANSCRIBEREGION_REQUIRED": "필수 필드"
 		},
 		"EDIT_NETWORK": "네트워크 수정",
 		"DELETE_NETWORK": "네트워크 삭제",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "로그인 메일 빈도 (초)",
 		"USERNAME": "사용자 이름",
 		"GOOGLE_SSO_ENABLED": "Google SSO 사용",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "액세스 키 ID",
+		"ADD_CLOUDPROVIDER": "계정을 추가",
+		"AI": "일체 포함. 도구",
+		"AITOOLS": "일체 포함. 도구",
+		"APPZONE": "앱 존",
+		"BUCKET": "버킷",
+		"DELETE": "지우다",
+		"DELETE_CLOUDPROVIDER": "계정 삭제",
+		"EDIT_CLOUDPROVIDER": "계정 수정",
+		"LANGUAGE": "언어",
+		"NEW_CLOUDPROVIDER": "새 계정",
+		"SECRETACCESSKEY": "비밀 액세스 키",
+		"SENTIMENTACCOUNT": "감정 분석 계정",
+		"SENTIMENTANALYSIS": "감정 분석",
+		"SENTIMENTREGION": "감정 분석 영역",
+		"SERVICE": "서비스",
+		"TRANSCRIBE": "고쳐 쓰다",
+		"TRANSCRIBEACCOUNT": "계정 기록",
+		"TRANSCRIBEREGION": "지역 기록",
+		"WHATSAPP": "WhatsApp 커넥터"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/lv.json b/public/app/main/apps/settings/i18n/lv.json
index 4c5a815..0c6fc98 100644
--- a/public/app/main/apps/settings/i18n/lv.json
+++ b/public/app/main/apps/settings/i18n/lv.json
@@ -34,7 +34,16 @@
 			"BLOCKDURATION_REQUIRED": "Obligāts lauks",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Vērtībai jābūt lielākai vai vienādai ar",
 			"LOGINMAILFREQUENCY_REQUIRED": "Obligāts lauks",
-			"USERNAME_REQUIRED": "Obligāts lauks"
+			"USERNAME_REQUIRED": "Obligāts lauks",
+			"ACCESSKEY_REQUIRED": "Obligāts lauks",
+			"BUCKET_REQUIRED": "Obligāts lauks",
+			"LANGUAGE_REQUIRED": "Obligāts lauks",
+			"SECRETACCESSKEY_REQUIRED": "Obligāts lauks",
+			"SENTIMENTACCOUNT_REQUIRED": "Obligāts lauks",
+			"SENTIMENTREGION_REQUIRED": "Obligāts lauks",
+			"SERVICE_REQUIRED": "Obligāts lauks",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Obligāts lauks",
+			"TRANSCRIBEREGION_REQUIRED": "Obligāts lauks"
 		},
 		"HELP": {
 			"ADDRESS": "Ārējā (publiskā) IP adrese",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Pieteikšanās pasta frekvence (sek)",
 		"USERNAME": "Lietotājvārds",
 		"GOOGLE_SSO_ENABLED": "Google SSO ir iespējots",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "Piekļuves atslēgas ID",
+		"ADD_CLOUDPROVIDER": "Pievienot kontu",
+		"AI": "A.I. Rīki",
+		"AITOOLS": "A.I. Rīki",
+		"APPZONE": "Lietotņu zona",
+		"BUCKET": "Kauss",
+		"DELETE": "Dzēst",
+		"DELETE_CLOUDPROVIDER": "Dzēst kontu",
+		"EDIT_CLOUDPROVIDER": "Rediģēt kontu",
+		"LANGUAGE": "Valoda",
+		"NEW_CLOUDPROVIDER": "Jauns konts",
+		"SECRETACCESSKEY": "Slepena piekļuves atslēga",
+		"SENTIMENTACCOUNT": "Sentimentu analīzes konts",
+		"SENTIMENTANALYSIS": "Sentimentu analīze",
+		"SENTIMENTREGION": "Sentimentu analīzes reģions",
+		"SERVICE": "apkalpošana",
+		"TRANSCRIBE": "Atšifrēt",
+		"TRANSCRIBEACCOUNT": "Atšifrēt kontu",
+		"TRANSCRIBEREGION": "Transkripcijas reģions",
+		"WHATSAPP": "WhatsApp savienotājs"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/nl.json b/public/app/main/apps/settings/i18n/nl.json
index acd8212..1d05fed 100644
--- a/public/app/main/apps/settings/i18n/nl.json
+++ b/public/app/main/apps/settings/i18n/nl.json
@@ -113,7 +113,16 @@
 			"BLOCKDURATION_REQUIRED": "Verplicht veld",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "De waarde moet groter dan of gelijk zijn aan",
 			"LOGINMAILFREQUENCY_REQUIRED": "Verplicht veld",
-			"USERNAME_REQUIRED": "Verplicht veld"
+			"USERNAME_REQUIRED": "Verplicht veld",
+			"ACCESSKEY_REQUIRED": "Verplicht veld",
+			"BUCKET_REQUIRED": "Verplicht veld",
+			"LANGUAGE_REQUIRED": "Verplicht veld",
+			"SECRETACCESSKEY_REQUIRED": "Verplicht veld",
+			"SENTIMENTACCOUNT_REQUIRED": "Verplicht veld",
+			"SENTIMENTREGION_REQUIRED": "Verplicht veld",
+			"SERVICE_REQUIRED": "Verplicht veld",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Verplicht veld",
+			"TRANSCRIBEREGION_REQUIRED": "Verplicht veld"
 		},
 		"EDIT_NETWORK": "Edit netwerk",
 		"DELETE_NETWORK": "Netwerk verwijderen",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Aanmeldingsfrequentie (sec)",
 		"USERNAME": "Gebruikersnaam",
 		"GOOGLE_SSO_ENABLED": "Google SSO ingeschakeld",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "Toegangssleutel-ID",
+		"ADD_CLOUDPROVIDER": "Account toevoegen",
+		"AI": "A.I. Gereedschap",
+		"AITOOLS": "A.I. Gereedschap",
+		"APPZONE": "App-zone",
+		"BUCKET": "Emmer",
+		"DELETE": "Verwijderen",
+		"DELETE_CLOUDPROVIDER": "Account verwijderen",
+		"EDIT_CLOUDPROVIDER": "Bewerk account",
+		"LANGUAGE": "Taal",
+		"NEW_CLOUDPROVIDER": "Nieuw account",
+		"SECRETACCESSKEY": "Geheime toegangssleutel",
+		"SENTIMENTACCOUNT": "Sentimentanalyse-account",
+		"SENTIMENTANALYSIS": "Sentiment analyse",
+		"SENTIMENTREGION": "Sentimentanalyse regio",
+		"SERVICE": "Onderhoud",
+		"TRANSCRIBE": "Transcriberen",
+		"TRANSCRIBEACCOUNT": "Account transcriberen",
+		"TRANSCRIBEREGION": "Transcribeer regio",
+		"WHATSAPP": "WhatsApp-aansluiting"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/no.json b/public/app/main/apps/settings/i18n/no.json
index 2a1b019..b59529c 100644
--- a/public/app/main/apps/settings/i18n/no.json
+++ b/public/app/main/apps/settings/i18n/no.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "Obligatoriske felt",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Verdien må være større enn eller lik",
 			"LOGINMAILFREQUENCY_REQUIRED": "Obligatoriske felt",
-			"USERNAME_REQUIRED": "Obligatoriske felt"
+			"USERNAME_REQUIRED": "Obligatoriske felt",
+			"ACCESSKEY_REQUIRED": "Obligatoriske felt",
+			"BUCKET_REQUIRED": "Obligatoriske felt",
+			"LANGUAGE_REQUIRED": "Obligatoriske felt",
+			"SECRETACCESSKEY_REQUIRED": "Obligatoriske felt",
+			"SENTIMENTACCOUNT_REQUIRED": "Obligatoriske felt",
+			"SENTIMENTREGION_REQUIRED": "Obligatoriske felt",
+			"SERVICE_REQUIRED": "Obligatoriske felt",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Obligatoriske felt",
+			"TRANSCRIBEREGION_REQUIRED": "Obligatoriske felt"
 		},
 		"EDIT_NETWORK": "Endre nettverk",
 		"DELETE_NETWORK": "Slette nettverket",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Påloggingspostfrekvens (sek)",
 		"USERNAME": "Brukernavn",
 		"GOOGLE_SSO_ENABLED": "Google SSO aktivert",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "Tilgangsnøkkel-ID",
+		"ADD_CLOUDPROVIDER": "Legg til konto",
+		"AI": "A.I. Verktøy",
+		"AITOOLS": "A.I. Verktøy",
+		"APPZONE": "App Zone",
+		"BUCKET": "Bøtte",
+		"DELETE": "Slett",
+		"DELETE_CLOUDPROVIDER": "Slett konto",
+		"EDIT_CLOUDPROVIDER": "Rediger bruker",
+		"LANGUAGE": "Språk",
+		"NEW_CLOUDPROVIDER": "Ny konto",
+		"SECRETACCESSKEY": "Hemmelig tilgangsnøkkel",
+		"SENTIMENTACCOUNT": "Sentiment Analysekonto",
+		"SENTIMENTANALYSIS": "Sentiment Analyse",
+		"SENTIMENTREGION": "Sentiment Analyse Region",
+		"SERVICE": "Service",
+		"TRANSCRIBE": "Transkriber",
+		"TRANSCRIBEACCOUNT": "Transkriber konto",
+		"TRANSCRIBEREGION": "Transkribere region",
+		"WHATSAPP": "WhatsApp-kontakt"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/pl.json b/public/app/main/apps/settings/i18n/pl.json
index 8e6d501..cbe8337 100644
--- a/public/app/main/apps/settings/i18n/pl.json
+++ b/public/app/main/apps/settings/i18n/pl.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "Pole obowiązkowe",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Wartość musi być większa lub równa",
 			"LOGINMAILFREQUENCY_REQUIRED": "Pole obowiązkowe",
-			"USERNAME_REQUIRED": "Pole obowiązkowe"
+			"USERNAME_REQUIRED": "Pole obowiązkowe",
+			"ACCESSKEY_REQUIRED": "Pole obowiązkowe",
+			"BUCKET_REQUIRED": "Pole obowiązkowe",
+			"LANGUAGE_REQUIRED": "Pole obowiązkowe",
+			"SECRETACCESSKEY_REQUIRED": "Pole obowiązkowe",
+			"SENTIMENTACCOUNT_REQUIRED": "Pole obowiązkowe",
+			"SENTIMENTREGION_REQUIRED": "Pole obowiązkowe",
+			"SERVICE_REQUIRED": "Pole obowiązkowe",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Pole obowiązkowe",
+			"TRANSCRIBEREGION_REQUIRED": "Pole obowiązkowe"
 		},
 		"EDIT_NETWORK": "Edycja sieci",
 		"DELETE_NETWORK": "Usuń sieć",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Częstotliwość logowania do logowania (s)",
 		"USERNAME": "Nazwa Użytkownika",
 		"GOOGLE_SSO_ENABLED": "Włączone logowanie jednokrotne Google",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "Identyfikator klucza dostępu",
+		"ADD_CLOUDPROVIDER": "Dodaj konto",
+		"AI": "A.I. Przybory",
+		"AITOOLS": "A.I. Przybory",
+		"APPZONE": "Strefa aplikacji",
+		"BUCKET": "Wiadro",
+		"DELETE": "Usunąć",
+		"DELETE_CLOUDPROVIDER": "Usuń konto",
+		"EDIT_CLOUDPROVIDER": "Edytuj konto",
+		"LANGUAGE": "Język",
+		"NEW_CLOUDPROVIDER": "Nowe konto",
+		"SECRETACCESSKEY": "Tajny klucz dostępu",
+		"SENTIMENTACCOUNT": "Konto analizy nastrojów",
+		"SENTIMENTANALYSIS": "Analiza nastrojów",
+		"SENTIMENTREGION": "Region analizy nastrojów",
+		"SERVICE": "Usługa",
+		"TRANSCRIBE": "Rozpisać",
+		"TRANSCRIBEACCOUNT": "Transkrybuj konto",
+		"TRANSCRIBEREGION": "Region transkrypcji",
+		"WHATSAPP": "Złącze WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/pt-BR.json b/public/app/main/apps/settings/i18n/pt-BR.json
index 95c5170..4734ab4 100644
--- a/public/app/main/apps/settings/i18n/pt-BR.json
+++ b/public/app/main/apps/settings/i18n/pt-BR.json
@@ -140,7 +140,16 @@
 			"BLOCKDURATION_REQUIRED": "Campo obrigatório",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
 			"LOGINMAILFREQUENCY_REQUIRED": "Campo obrigatório",
-			"USERNAME_REQUIRED": "Campo obrigatório"
+			"USERNAME_REQUIRED": "Campo obrigatório",
+			"ACCESSKEY_REQUIRED": "Campo obrigatório",
+			"BUCKET_REQUIRED": "Campo obrigatório",
+			"LANGUAGE_REQUIRED": "Campo obrigatório",
+			"SECRETACCESSKEY_REQUIRED": "Campo obrigatório",
+			"SENTIMENTACCOUNT_REQUIRED": "Campo obrigatório",
+			"SENTIMENTREGION_REQUIRED": "Campo obrigatório",
+			"SERVICE_REQUIRED": "Campo obrigatório",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Campo obrigatório",
+			"TRANSCRIBEREGION_REQUIRED": "Campo obrigatório"
 		},
 		"EDIT_NETWORK": "Editar rede",
 		"DELETE_NETWORK": "Excluir rede",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Frequência de email de login (s)",
 		"USERNAME": "Nome do usuário",
 		"GOOGLE_SSO_ENABLED": "SSO do Google ativado",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "ID da chave de acesso",
+		"ADD_CLOUDPROVIDER": "Adicionar Conta",
+		"AI": "A.I. Ferramentas",
+		"AITOOLS": "A.I. Ferramentas",
+		"APPZONE": "App Zone",
+		"BUCKET": "Balde",
+		"DELETE": "Excluir",
+		"DELETE_CLOUDPROVIDER": "Deletar conta",
+		"EDIT_CLOUDPROVIDER": "Editar conta",
+		"LANGUAGE": "Língua",
+		"NEW_CLOUDPROVIDER": "Nova conta",
+		"SECRETACCESSKEY": "Chave de acesso secreta",
+		"SENTIMENTACCOUNT": "Conta de análise de sentimento",
+		"SENTIMENTANALYSIS": "Análise de sentimentos",
+		"SENTIMENTREGION": "Região de análise de sentimento",
+		"SERVICE": "Serviço",
+		"TRANSCRIBE": "Transcrever",
+		"TRANSCRIBEACCOUNT": "Transcrever conta",
+		"TRANSCRIBEREGION": "Transcrever região",
+		"WHATSAPP": "Conector WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/pt-PT.json b/public/app/main/apps/settings/i18n/pt-PT.json
index dcea7c2..061fd3f 100644
--- a/public/app/main/apps/settings/i18n/pt-PT.json
+++ b/public/app/main/apps/settings/i18n/pt-PT.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "Campo obrigatório",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "O valor deve ser maior ou igual a",
 			"LOGINMAILFREQUENCY_REQUIRED": "Campo obrigatório",
-			"USERNAME_REQUIRED": "Campo obrigatório"
+			"USERNAME_REQUIRED": "Campo obrigatório",
+			"ACCESSKEY_REQUIRED": "Campo obrigatório",
+			"BUCKET_REQUIRED": "Campo obrigatório",
+			"LANGUAGE_REQUIRED": "Campo obrigatório",
+			"SECRETACCESSKEY_REQUIRED": "Campo obrigatório",
+			"SENTIMENTACCOUNT_REQUIRED": "Campo obrigatório",
+			"SENTIMENTREGION_REQUIRED": "Campo obrigatório",
+			"SERVICE_REQUIRED": "Campo obrigatório",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Campo obrigatório",
+			"TRANSCRIBEREGION_REQUIRED": "Campo obrigatório"
 		},
 		"EDIT_NETWORK": "Editar rede",
 		"DELETE_NETWORK": "Excluir redes",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Frequência de email de login (s)",
 		"USERNAME": "Nome do usuário",
 		"GOOGLE_SSO_ENABLED": "SSO do Google ativado",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "ID da chave de acesso",
+		"ADD_CLOUDPROVIDER": "Adicionar Conta",
+		"AI": "A.I. Ferramentas",
+		"AITOOLS": "A.I. Ferramentas",
+		"APPZONE": "App Zone",
+		"BUCKET": "Balde",
+		"DELETE": "Excluir",
+		"DELETE_CLOUDPROVIDER": "Deletar conta",
+		"EDIT_CLOUDPROVIDER": "Editar conta",
+		"LANGUAGE": "Língua",
+		"NEW_CLOUDPROVIDER": "Nova conta",
+		"SECRETACCESSKEY": "Chave de acesso secreta",
+		"SENTIMENTACCOUNT": "Conta de análise de sentimento",
+		"SENTIMENTANALYSIS": "Análise de sentimentos",
+		"SENTIMENTREGION": "Região de análise de sentimento",
+		"SERVICE": "Serviço",
+		"TRANSCRIBE": "Transcrever",
+		"TRANSCRIBEACCOUNT": "Transcrever conta",
+		"TRANSCRIBEREGION": "Transcrever região",
+		"WHATSAPP": "Conector WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/ru.json b/public/app/main/apps/settings/i18n/ru.json
index 6a419a4..2cd6cbd 100644
--- a/public/app/main/apps/settings/i18n/ru.json
+++ b/public/app/main/apps/settings/i18n/ru.json
@@ -1,110 +1,110 @@
 {
 	"SETTINGS": {
-		"PREFERRED": "Предпочитаемый логотип",
-		"DEFAULT_PREFERRED": "Предпочитаемый логотип по умолчанию",
-		"MOTIONBAR": "Панель Motionbar",
+		"PREFERRED": "Preferred Logo",
+		"DEFAULT_PREFERRED": "Default Preferred Logo",
+		"MOTIONBAR": "Motionbar",
 		"WEBRTC": "WebRTC",
-		"RELOAD": "Перезагрузка",
+		"RELOAD": "Перезагрузить",
 		"VERIFY": "Проверить",
 		"INTERFACE": "Интерфейс",
-		"UPDATING": "Обновление",
+		"UPDATING": "Обновления",
 		"REMOTE_VERSION": "Удаленная версия",
-		"NO_NEW_VERSION_AVAILABLE": "Новая версия отсутствует",
-		"TOP_N_PROCESSES": "Топ {{значение}} процессов",
-		"SYSTEM": "Система",
-		"FILE_SYSTEM": "Файловая система",
+		"NO_NEW_VERSION_AVAILABLE": "Не доступна новая версия",
+		"TOP_N_PROCESSES": "Верхняя {{значение}} процессов",
+		"SYSTEM": "Системы",
+		"FILE_SYSTEM": "Файловой системы",
 		"PROCESSES": "Процессы",
-		"MOUNT_POINT": "Монтирование",
-		"AVG_LOAD": "Средняя нагрузка",
-		"TOTAL": "Всего",
+		"MOUNT_POINT": "Крепление",
+		"AVG_LOAD": "AVG нагрузки",
+		"TOTAL": "Итого",
 		"USED": "Используется",
-		"FREE": "Свободно",
+		"FREE": "Бесплатно",
 		"NAME": "Имя",
-		"STATE": "Состояние",
+		"STATE": "Государство",
 		"CHAT": "Чат",
-		"MAIL": "Электронная почта",
-		"MESSAGING": "SMS",
+		"MAIL": "По электронной почте",
+		"MESSAGING": "Sms",
 		"FAX": "Факс",
-		"OPENCHANNEL": "Открытый канал",
-		"AGENTS": "Агенты",
+		"OPENCHANNEL": "Открыть канал",
+		"AGENTS": "Операторы",
 		"USERS": "Пользователи",
 		"TELEPHONES": "Телефоны",
 		"STAFF": "Персонал",
 		"CHANNELS": "Каналы",
 		"MODULES": "Модули",
-		"CM": "Менеджер контактов",
-		"DIALER": "Система обзвона",
+		"CM": "Контакты Manager",
+		"DIALER": "Система автоматического обзвона",
 		"JSCRIPTY": "Jscripty",
-		"CUSTOM": "Адаптация",
-		"UPDATE": "Обновить",
+		"CUSTOM": "Пользовательская настройка",
+		"UPDATE": "Обновление",
 		"OTHERS": "Другие",
 		"SETTINGS": "Настройки",
-		"GENERAL": "Общие",
-		"SMTP": "SMTP",
-		"NETWORKS": "Сети",
+		"GENERAL": "Генеральной",
+		"SMTP": "Сервер SMTP",
+		"NETWORKS": "Сетей",
 		"UPDATES": "Обновления",
-		"LICENSE": "Лицензия",
-		"ID": "Идентификатор",
-		"MIN_INTERNAL": "Мин. внутренний",
-		"MIN_MAILBOX": "Мин. почтовый ящик",
-		"INSTALLED_AT": "Установлен в",
-		"SEARCH_FOR_ANYONE": "Поиск",
-		"EDIT_GENERAL": "Редактировать Общие",
+		"LICENSE": "Лицензии",
+		"ID": "Id",
+		"MIN_INTERNAL": "Мин. Внутренний",
+		"MIN_MAILBOX": "Мин почтового ящика",
+		"INSTALLED_AT": "Установлен на",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
+		"EDIT_GENERAL": "Редактировать общие",
 		"SECURE_PASSWORD": "Безопасный пароль",
 		"LOGO": "Логотип",
 		"DEFAULT_LOGO": "Логотип по умолчанию",
-		"DEFAULT_LOGIN_LOGO": "Логотип на странице входа в систему по умолчанию",
-		"WHITELABEL": "White Label",
-		"CREATED_AT": "Создано на",
+		"DEFAULT_LOGIN_LOGO": "Введите логин и пароль по умолчанию логотип",
+		"WHITELABEL": "На этикетке белого цвета",
+		"CREATED_AT": "Созданные в",
 		"SAVE": "Сохранить",
 		"SMTP_SERVICE": "Сервис",
-		"SMTP_HOST": "Хост",
-		"SMTP_USERNAME": "Имя пользователя",
+		"SMTP_HOST": "Узел SMTP",
+		"SMTP_USERNAME": "Имя пользователя SMTP",
 		"DESCRIPTION": "Описание",
-		"SMTP_PASSWORD": "Пароль",
-		"SMTP_PORT": "Порт",
-		"SMTP_SECURE": "Безопасные",
+		"SMTP_PASSWORD": "Пароль SMTP",
+		"SMTP_PORT": "Порт SMTP",
+		"SMTP_SECURE": "Закрепите",
 		"TYPE": "Тип",
 		"ADDRESS": "Адрес",
 		"NEW_NETWORK": "Новая сеть",
 		"ADD_NETWORK": "Добавить сеть",
 		"HELP": {
-			"ADDRESS": "Внешний (публичный) IP-адрес",
-			"LOCALNETADDRESS": "Локальный IP-адрес/подсеть",
-			"SMTP_SECURE": "Если было указано значение True, для соединения с сервером будет использоваться протокол TLS",
-			"SMTP_USERNAME": "Имя пользователя, используемое для аутентификации",
-			"SMTP_PASSWORD": "Пароль, используемый для аутентификации",
-			"EMAILADDRESS": "Исходный электронная почта сообщения (от кого)",
-			"SECURITY_SUITE": "Включает безопасный формат пароля, обязательный сброс пароля после первого входа в систему и истечение срока действия пароля через 90 дней",
-			"MOTIONBARREMEMBERME": "Включить/отключить функцию «Запомнить меня» в телефонной панели Motion",
-			"RTLSUPPORT": "Включает поддержку RTL для арабского, персидского и иврита",
-			"DEFAULTSCREENRECORDINGPATH": "Введите путь для сохранения файлов записи с экрана на компьютере агента (оставьте пустым путь по умолчанию для папки видео)",
-			"LOGINMAILFREQUENCY": "Не забывайте перезапускать службу ЭЛЕКТРОННОЙ ПОЧТЫ каждый раз, когда данный параметр был изменен",
+			"ADDRESS": "Адрес сети",
+			"LOCALNETADDRESS": "IP-адрес и маску подсети",
+			"SMTP_SECURE": "Если true соединение будет использовать TLS при подключении к серверу",
+			"SMTP_USERNAME": "Имя пользователя используется для проверки подлинности",
+			"SMTP_PASSWORD": "Пароль используется для проверки подлинности",
+			"EMAILADDRESS": "Укажите происхождения адрес электронной почты сообщение (С).",
+			"SECURITY_SUITE": "Включает безопасный формат пароля, обязательный сброс пароля после первого входа и истечения срока действия пароля через 90 дней",
+			"MOTIONBARREMEMBERME": "Включить / отключить функцию «Запомнить меня» в телефонной панели Motion",
+			"RTLSUPPORT": "Включает поддержку RTL для арабского, персидского и иврита",
+			"DEFAULTSCREENRECORDINGPATH": "Введите путь для сохранения файлов записи экрана на компьютере агента (оставьте пустым для пути к видео папке по умолчанию)",
+			"LOGINMAILFREQUENCY": "Пожалуйста, не забывайте перезапускать сервис EMAIL каждый раз, когда этот параметр был изменен",
 			"PASSWORD": "пароль",
 			"USERNAME": "имя пользователя"
 		},
 		"ERRORS": {
-			"ADDRESS_REQUIRED": "Обязательное поле",
-			"MIN_INTERNAL_REQUIRED": "Обязательное поле",
-			"MIN_MAILBOX_REQUIRED": "Обязательное поле",
-			"NAME_REQUIRED": "Обязательное поле",
-			"HEADER_WHITELABEL_REQUIRED": "Обязательное поле",
-			"LOCALNETADDRESS_REQUIRED": "Обязательное поле",
-			"LOCALNETADDRESS_MUST_VALID_PATTERN": "Неверный формат",
-			"ADDRESS_MUST_VALID_PATTERN": "Неверный формат",
-			"ACCOUNTNAME_REQUIRED": "Обязательное поле",
-			"SMTP_USERNAME_REQUIRED": "Обязательное поле",
-			"PASSWORD_REQUIRED": "Обязательное поле",
-			"SMTP_HOST_REQUIRED": "Обязательное поле",
-			"SMTP_PORT_REQUIRED": "Обязательное поле",
-			"MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
+			"ADDRESS_REQUIRED": "Адрес не требуется",
+			"MIN_INTERNAL_REQUIRED": "Минимальный внутренний не требуется",
+			"MIN_MAILBOX_REQUIRED": "Минимальная почтового ящика не требуется",
+			"NAME_REQUIRED": "Это имя требуется",
+			"HEADER_WHITELABEL_REQUIRED": "В whitelabel не требуется",
+			"LOCALNETADDRESS_REQUIRED": "Адрес Localnet требуется",
+			"LOCALNETADDRESS_MUST_VALID_PATTERN": "Localnet должен быть действительным действительный шаблон",
+			"ADDRESS_MUST_VALID_PATTERN": "Адрес должен быть действительным шаблон",
+			"ACCOUNTNAME_REQUIRED": "Имя учетной записи не требуется",
+			"SMTP_USERNAME_REQUIRED": "Имя пользователя не требуется",
+			"PASSWORD_REQUIRED": "Пароль не требуется",
+			"SMTP_HOST_REQUIRED": "Хост не требуется",
+			"SMTP_PORT_REQUIRED": "Порт не требуется",
+			"MIN_INTERNAL_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Мин. Внутренний должно быть больше или равно",
+			"MIN_MAILBOX_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Мин. Почтовый ящик должен быть больше или равен",
 			"PAGE_TITLE_REQUIRED": "Обязательное поле",
 			"EMAIL_REQUIRED": "Обязательное поле",
 			"PLAN_REQUIRED": "Обязательное поле",
 			"MOTIONBARAUTOUPDATERURL_MUST_VALID_URL": "Неверный формат",
 			"MOTIONBARAUTOUPDATERURL_REQUIRED": "Обязательное поле",
-			"EMAIL_MUST_VALID": "Неверный формат",
+			"EMAIL_MUST_VALID": "Неправильный формат",
 			"LICENSE_REQUIRED": "Обязательное поле",
 			"CHATTIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
 			"CHATTIMEOUT_REQUIRED": "Обязательное поле",
@@ -114,107 +114,136 @@
 			"BLOCKDURATION_REQUIRED": "Обязательное поле",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
 			"LOGINMAILFREQUENCY_REQUIRED": "Обязательное поле",
-			"USERNAME_REQUIRED": "Обязательное поле"
+			"USERNAME_REQUIRED": "Обязательное поле",
+			"ACCESSKEY_REQUIRED": "Обязательное поле",
+			"BUCKET_REQUIRED": "Обязательное поле",
+			"LANGUAGE_REQUIRED": "Обязательное поле",
+			"SECRETACCESSKEY_REQUIRED": "Обязательное поле",
+			"SENTIMENTACCOUNT_REQUIRED": "Обязательное поле",
+			"SENTIMENTREGION_REQUIRED": "Обязательное поле",
+			"SERVICE_REQUIRED": "Обязательное поле",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Обязательное поле",
+			"TRANSCRIBEREGION_REQUIRED": "Обязательное поле"
 		},
-		"EDIT_NETWORK": "Редактировать сеть",
+		"EDIT_NETWORK": "Редактировать сети",
 		"DELETE_NETWORK": "Удалить сеть",
 		"BACK": "Назад",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
-		"EXPIRATION_DATE": "Дата истечения срока действия",
-		"REQUEST_LICENSE": "Запросить лицензию",
-		"EMAIL": "Электронная почта",
+		"SELECT_NONE": "Выберите пункт None",
+		"EXPIRATION_DATE": "Дата окончания срока действия",
+		"REQUEST_LICENSE": "Запрос лицензии",
+		"EMAIL": "Адрес электронной почты",
 		"SEND": "Отправить",
-		"PLAN": "План",
-		"MONTH_TO_MONTH": "Ежемесячн.",
-		"MOTION_PROCESS_MANAGEMENT": "Управление процессами Motion",
-		"USEFUL_COMMANDS": "Полезные команды",
+		"PLAN": "План действий",
+		"MONTH_TO_MONTH": "Месяца в месяц",
+		"MOTION_PROCESS_MANAGEMENT": "Движение процесса управления",
+		"USEFUL_COMMANDS": "Полезных команд",
 		"COMMAND": "Команда",
 		"PM2_LIST": "Список всех процессов",
-		"PM2_START": "Запустить процесс по идентификатору или имени",
-		"PM2_STOP": "Остановить процесс по идентификатору или имени либо вставить «все» для остановки всех активных процессов",
-		"PM2_RESTART": "Перезапустить процесс по идентификатору или имени",
-		"PM2_LOGS": "Запустить поток всех файлов журнала процессов, если не указаны конкретный идентификатор процесса или имя",
+		"PM2_START": "Начать процесс по ID или Имя",
+		"PM2_STOP": "Остановить процесс по id или имя, вставьте 'все', чтобы остановить все активные процессы",
+		"PM2_RESTART": "Перезапуск процесса с идентификатором или именем",
+		"PM2_LOGS": "Поток все журналы файл, или конкретных процесса идентификатор или имя",
 		"PASSWORD": "Пароль",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"STUNADDR": "Адрес сервера STUN",
-		"CHANGELOG": "Журнал изменений",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"STUNADDR": "Изумите адрес",
+		"CHANGELOG": "Changelog",
 		"CURRENT_VERSION": "Текущая версия",
-		"CUSTOMIZATIONS": "Адаптации",
-		"LOCALNETADDRESS": "Адрес локальной сети",
+		"CUSTOMIZATIONS": "Пользовательские настройки",
+		"LOCALNETADDRESS": "Адрес Localnet",
 		"NEW_VERSION": "Новая версия",
 		"TRIAL_VERSION": "Пробная версия",
-		"TOKEN": "Токен",
-		"NEW_TOKEN_DETECTED": "Обнаружен новый токен",
-		"EXPIRATION_GRAY_PERIOD": "Истечение льготного периода",
-		"NEW_TOKEN": "Новый токен",
+		"TOKEN": "Маркер",
+		"NEW_TOKEN_DETECTED": "Новый маркер обнаружен",
+		"EXPIRATION_GRAY_PERIOD": "Серый Период истечения срока действия",
+		"NEW_TOKEN": "Новый маркер",
 		"PRICES": "Цены",
 		"UPDATE_LICENSE": "Обновить лицензию",
-		"LOGOLOGIN": "Логотип на странице входа в систему",
+		"LOGOLOGIN": "Введите логин и пароль логотип",
 		"EXPIRATION_REASON": "Причина истечения срока действия",
-		"GLOBAL": "Глобальный",
-		"SMTP_AUTHENTICATION": "Аутентификация",
-		"LICENSE_REQUEST_SENT": "Благодарим! Группа лицензирования оперативно проверит вашу учетную запись и подтвердит ваш запрос ‒ когда изменения вступят в силу, вы получите электронное письмо. Для получения дополнительной информации, обратитесь, пожалуйста, по адресу электронной почты [email-masked].",
+		"GLOBAL": "Глобальной",
+		"SMTP_AUTHENTICATION": "Проверка подлинности",
+		"LICENSE_REQUEST_SENT": "Спасибо вам! Лицензирование Группа будет проверьте вашу учетную запись в программе Virtualize ASAP, с тем чтобы утвердить ваши запросы: Вы получите e-mail, когда изменения вступят в силу. Обратитесь к [email-masked] за любой дополнительной информацией.",
 		"ACCOUNTNAME": "Имя учетной записи",
-		"EMAILADDRESS": "Электронная почта",
-		"OLD_TOKEN": "Старый токен",
-		"SEND_EMAIL_TO": "Отправить письмо на электронная почта",
-		"JIRA_ERROR_MESSAGE": "Ошибка при запросе лицензии. Пожалуйста, свяжитесь с нашей группой лицензирования, отправив свой запрос на электронная почта: [email-masked]",
+		"EMAILADDRESS": "Адрес электронной почты",
+		"OLD_TOKEN": "Старый маркер",
+		"SEND_EMAIL_TO": "Отправьте сообщение электронной почты на адрес",
+		"JIRA_ERROR_MESSAGE": "Ошибка во время запроса лицензии. Обратитесь в нашу группу лицензии на [email-masked] с вашей просьбой",
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"SMTP_SSL": "SMTP SSL",
-		"ENABLED": "Включено",
-		"DISABLED": "Отключено",
-		"UNLIMITED_CHANNELS": "Каналы без ограничений",
+		"OF": "В",
+		"SMTP_SSL": "SSL SMTP",
+		"ENABLED": "Enabled (Включено)",
+		"DISABLED": "Disabled (Отключено)",
+		"UNLIMITED_CHANNELS": "Неограниченного количества каналов",
 		"PAGE_TITLE": "Заголовок страницы",
-		"DEFAULT_PAGE_TITLE": "Заголовок страницы по умолчанию",
-		"CALLYSQUARE": "Cally Square",
-		"DEFAULT_HEADER_WHITELABEL": "Заголовок: White Label по умолчанию",
-		"HEADER_WHITELABEL": "Заголовок White Label",
-		"EXPIRATION_REASON_MESSAGE_CHANGED": "Уникальный идентификатор вашего устройства был обновлен вследствие изменения в вашей системе.",
-		"CALL_RECORDING_ENCRYPTION": "Шифрование голосовой записи",
-		"TURNADDR": "Адрес TURN",
-		"TURN_USERNAME": "Имя пользователя TURN",
-		"TURN_PASSWORD": "Пароль TURN",
-		"PERPETUAL": "Бессрочн.",
-		"SECURITY_SUITE": "Security Suite",
-		"ANNUALLY": "Ежегодн.",
-		"MOTIONBARAUTOUPDATER": "Автообновление",
-		"MOTIONBARAUTOUPDATERURL": "URL-адрес: автообновление",
+		"DEFAULT_PAGE_TITLE": "Страницей по умолчанию название",
+		"CALLYSQUARE": "Cally квадратных",
+		"DEFAULT_HEADER_WHITELABEL": "Нижний колонтитул по умолчанию на этикетке белого цвета",
+		"HEADER_WHITELABEL": "Нижний колонтитул этикетке белого цвета",
+		"EXPIRATION_REASON_MESSAGE_CHANGED": "Ваша машина уникальный идентификатор был обновлен из-за изменений в вашей системе. Контакты xCALLY Движения Поддержки отправки ваш старый и новый идентификатор UUID.",
+		"CALL_RECORDING_ENCRYPTION": "Шифрование записи голоса",
+		"TURNADDR": "Адрес TURN",
+		"TURN_USERNAME": "TURN Username",
+		"TURN_PASSWORD": "Пароль TURN",
+		"PERPETUAL": "бессрочный",
+		"SECURITY_SUITE": "Люкс для обеспечения безопасности",
+		"ANNUALLY": "ежегодно",
+		"MOTIONBARAUTOUPDATER": "Автоматическое обновление",
+		"MOTIONBARAUTOUPDATERURL": "URL-адрес автоматического обновления",
 		"JAWS": "Jaws",
 		"ENABLEEMAILPREVIEW": "Включить предварительный просмотр электронной почты",
-		"REPORT": "Отчет",
-		"SPLIT": "Разделить отчет",
-		"SPLITSIZECSV": "Размер разделенного отчета [записи в формате CSV]",
-		"SPLITSIZEPDF": "Размер разделенного отчета [записи в формате PDF]",
-		"SPLITSIZEXLSX": "Размер разделенного отчета [записи в формате XLSX]",
-		"AGENTOMNIDESKTOPINTERFACE": "Agent Omni Desktop Interface",
+		"REPORT": "отчет",
+		"SPLIT": "Сплит-отчет",
+		"SPLITSIZECSV": "Разделить размер отчета [CSV-записи]",
+		"SPLITSIZEPDF": "Разделить размер отчета [записи в формате PDF]",
+		"SPLITSIZEXLSX": "Разделить размер отчета [записи XLSX]",
+		"AGENTOMNIDESKTOPINTERFACE": "Интерфейс рабочего стола оператора Omni",
 		"MESSAGESALIGNMENT": "Выравнивание сообщений",
-		"ENTER_LICENSE": "Введите вашу лицензию",
-		"EXPIRATION_CHANGED_ADVISE": "Обратитесь в группу лицензирования XCALLY Motion, отправив свой старый и свой новый UUID.",
-		"EXPIRATION_REASON_MESSAGE_DISABLED": "Ваша лицензия была деактивирована.",
-		"UPDATE_LICENSE_MANUALLY": "Хотите обновить лицензию вручную?",
+		"ENTER_LICENSE": "Введите свою лицензию",
+		"EXPIRATION_CHANGED_ADVISE": "Свяжитесь с командой xCALLY Motion License, отправляющей как ваш старый, так и ваш новый uuid.",
+		"EXPIRATION_REASON_MESSAGE_DISABLED": "Ваша лицензия отключена.",
+		"UPDATE_LICENSE_MANUALLY": "Вы хотите обновить лицензию вручную?",
 		"ADDONS": "Дополнения",
-		"SESSIONS": "Сессии",
-		"VIRTUAL": "Чат",
-		"VOICE": "Голос",
+		"SESSIONS": "сессии",
+		"VIRTUAL": "чат",
+		"VOICE": "голос",
 		"CHATTIMEOUT": "Тайм-аут при закрытии чата",
-		"MOTIONBARREMEMBERME": "Запомнить меня",
-		"RTLSUPPORT": "Поддержка RTL",
-		"DEFAULTSCREENRECORDINGPATH": "Путь для записи с экрана",
-		"SCREENRECORDING": "Запись с экрана",
-		"VIDEO": "Видео",
+		"MOTIONBARREMEMBERME": "Запомни меня",
+		"RTLSUPPORT": "Поддержка RTL",
+		"DEFAULTSCREENRECORDINGPATH": "Путь записи экрана",
+		"SCREENRECORDING": "Запись экрана",
+		"VIDEO": "видео",
 		"BLOCKDURATION": "Минуты ожидания до автоматической разблокировки",
 		"SECURITY": "Безопасность",
-		"ALLOWEDLOGINATTEMPTS": "Разрешенные попытки входа в систему до блокировки пользователя/агента",
+		"ALLOWEDLOGINATTEMPTS": "Разрешенные попытки входа в систему перед блокировкой пользователя / агента",
 		"DEFAULT_FAVICON": "Фавикон по умолчанию",
-		"FAVICON": "Фавикон",
+		"FAVICON": "Favicon",
 		"IMAPGENERALSETTINGS": "IMAP",
-		"LOGINMAILFREQUENCY": "Частота входящей почты (с)",
+		"LOGINMAILFREQUENCY": "Частота входящей почты (сек)",
 		"USERNAME": "имя пользователя",
 		"GOOGLE_SSO_ENABLED": "Google SSO включен",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "Идентификатор ключа доступа",
+		"ADD_CLOUDPROVIDER": "Добавить аккаунт",
+		"AI": "А.И. инструменты",
+		"AITOOLS": "А.И. инструменты",
+		"APPZONE": "Зона приложений",
+		"BUCKET": "ведро",
+		"DELETE": "Удалить",
+		"DELETE_CLOUDPROVIDER": "Удалить аккаунт",
+		"EDIT_CLOUDPROVIDER": "Редактировать аккаунт",
+		"LANGUAGE": "язык",
+		"NEW_CLOUDPROVIDER": "Новый аккаунт",
+		"SECRETACCESSKEY": "Секретный ключ доступа",
+		"SENTIMENTACCOUNT": "Счет анализа настроений",
+		"SENTIMENTANALYSIS": "Анализ настроений",
+		"SENTIMENTREGION": "Область анализа настроений",
+		"SERVICE": "обслуживание",
+		"TRANSCRIBE": "Расшифруйте",
+		"TRANSCRIBEACCOUNT": "Расшифровать аккаунт",
+		"TRANSCRIBEREGION": "Расшифровать регион",
+		"WHATSAPP": "Коннектор WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/sv.json b/public/app/main/apps/settings/i18n/sv.json
index 9a1fdb0..830353c 100644
--- a/public/app/main/apps/settings/i18n/sv.json
+++ b/public/app/main/apps/settings/i18n/sv.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "Obligatoriskt fält",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Värdet måste vara större än eller lika med",
 			"LOGINMAILFREQUENCY_REQUIRED": "Obligatoriskt fält",
-			"USERNAME_REQUIRED": "Obligatoriskt fält"
+			"USERNAME_REQUIRED": "Obligatoriskt fält",
+			"ACCESSKEY_REQUIRED": "Obligatoriskt fält",
+			"BUCKET_REQUIRED": "Obligatoriskt fält",
+			"LANGUAGE_REQUIRED": "Obligatoriskt fält",
+			"SECRETACCESSKEY_REQUIRED": "Obligatoriskt fält",
+			"SENTIMENTACCOUNT_REQUIRED": "Obligatoriskt fält",
+			"SENTIMENTREGION_REQUIRED": "Obligatoriskt fält",
+			"SERVICE_REQUIRED": "Obligatoriskt fält",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Obligatoriskt fält",
+			"TRANSCRIBEREGION_REQUIRED": "Obligatoriskt fält"
 		},
 		"EDIT_NETWORK": "Edit Network",
 		"DELETE_NETWORK": "Ta bort nätverket",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Logga in e-postfrekvens (sek)",
 		"USERNAME": "Användarnamn",
 		"GOOGLE_SSO_ENABLED": "Google SSO aktiverat",
-		"SSO": "SSO"
+		"SSO": "SSO",
+		"ACCESSKEY": "Åtkomstnyckel-ID",
+		"ADD_CLOUDPROVIDER": "Lägg till konto",
+		"AI": "A.I. Verktyg",
+		"AITOOLS": "A.I. Verktyg",
+		"APPZONE": "Appzon",
+		"BUCKET": "Hink",
+		"DELETE": "Radera",
+		"DELETE_CLOUDPROVIDER": "Radera konto",
+		"EDIT_CLOUDPROVIDER": "Redigera konto",
+		"LANGUAGE": "Språk",
+		"NEW_CLOUDPROVIDER": "Nytt konto",
+		"SECRETACCESSKEY": "Nyckel för hemlig åtkomst",
+		"SENTIMENTACCOUNT": "Sentiment Analys konto",
+		"SENTIMENTANALYSIS": "Sentimentanalys",
+		"SENTIMENTREGION": "Sentimentanalysregion",
+		"SERVICE": "Service",
+		"TRANSCRIBE": "Transkribera",
+		"TRANSCRIBEACCOUNT": "Transkribera konto",
+		"TRANSCRIBEREGION": "Transkribera region",
+		"WHATSAPP": "WhatsApp-anslutning"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/tr.json b/public/app/main/apps/settings/i18n/tr.json
index c650aa6..f0147c2 100644
--- a/public/app/main/apps/settings/i18n/tr.json
+++ b/public/app/main/apps/settings/i18n/tr.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "Zorunlu alan",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Değer şuna eşit veya daha büyük olmalıdır",
 			"LOGINMAILFREQUENCY_REQUIRED": "Zorunlu alan",
-			"USERNAME_REQUIRED": "Zorunlu alan"
+			"USERNAME_REQUIRED": "Zorunlu alan",
+			"ACCESSKEY_REQUIRED": "Zorunlu alan",
+			"BUCKET_REQUIRED": "Zorunlu alan",
+			"LANGUAGE_REQUIRED": "Zorunlu alan",
+			"SECRETACCESSKEY_REQUIRED": "Zorunlu alan",
+			"SENTIMENTACCOUNT_REQUIRED": "Zorunlu alan",
+			"SENTIMENTREGION_REQUIRED": "Zorunlu alan",
+			"SERVICE_REQUIRED": "Zorunlu alan",
+			"TRANSCRIBEACCOUNT_REQUIRED": "Zorunlu alan",
+			"TRANSCRIBEREGION_REQUIRED": "Zorunlu alan"
 		},
 		"EDIT_NETWORK": "Edit Ağ",
 		"DELETE_NETWORK": "Delete Ağ",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "Giriş Posta Sıklığı (sn)",
 		"USERNAME": "Kullanıcı adı",
 		"GOOGLE_SSO_ENABLED": "Google TOA Etkin",
-		"SSO": "TOA"
+		"SSO": "TOA",
+		"ACCESSKEY": "Erişim Anahtarı Kimliği",
+		"ADD_CLOUDPROVIDER": "Hesap eklemek",
+		"AI": "A. I. Araçlar",
+		"AITOOLS": "A. I. Araçlar",
+		"APPZONE": "Uygulama Bölgesi",
+		"BUCKET": "Kova",
+		"DELETE": "Sil",
+		"DELETE_CLOUDPROVIDER": "Hesabı sil",
+		"EDIT_CLOUDPROVIDER": "Hesabı düzenlemek",
+		"LANGUAGE": "Dil",
+		"NEW_CLOUDPROVIDER": "Yeni hesap",
+		"SECRETACCESSKEY": "Gizli Erişim Anahtarı",
+		"SENTIMENTACCOUNT": "Duyarlılık Analizi Hesabı",
+		"SENTIMENTANALYSIS": "Duygu Analizi",
+		"SENTIMENTREGION": "Duyarlılık Analizi Bölgesi",
+		"SERVICE": "Hizmet",
+		"TRANSCRIBE": "Uyarlamak",
+		"TRANSCRIBEACCOUNT": "Hesabı Metne Dönüştür",
+		"TRANSCRIBEREGION": "Bölgeyi Metne Dönüştür",
+		"WHATSAPP": "WhatsApp Bağlayıcısı"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/zh-CN.json b/public/app/main/apps/settings/i18n/zh-CN.json
index 1f1b794..e6dad99 100644
--- a/public/app/main/apps/settings/i18n/zh-CN.json
+++ b/public/app/main/apps/settings/i18n/zh-CN.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "必填项",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "该值必须大于或等于",
 			"LOGINMAILFREQUENCY_REQUIRED": "必填项",
-			"USERNAME_REQUIRED": "必填项"
+			"USERNAME_REQUIRED": "必填项",
+			"ACCESSKEY_REQUIRED": "必填项",
+			"BUCKET_REQUIRED": "必填项",
+			"LANGUAGE_REQUIRED": "必填项",
+			"SECRETACCESSKEY_REQUIRED": "必填项",
+			"SENTIMENTACCOUNT_REQUIRED": "必填项",
+			"SENTIMENTREGION_REQUIRED": "必填项",
+			"SERVICE_REQUIRED": "必填项",
+			"TRANSCRIBEACCOUNT_REQUIRED": "必填项",
+			"TRANSCRIBEREGION_REQUIRED": "必填项"
 		},
 		"EDIT_NETWORK": "编辑网络",
 		"DELETE_NETWORK": "删除网络",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "登录邮件频率（秒）",
 		"USERNAME": "用户名",
 		"GOOGLE_SSO_ENABLED": "已启用Google SSO",
-		"SSO": "单点登录"
+		"SSO": "单点登录",
+		"ACCESSKEY": "访问密钥ID",
+		"ADD_CLOUDPROVIDER": "新增帐户",
+		"AI": "我工具类",
+		"AITOOLS": "我工具类",
+		"APPZONE": "应用专区",
+		"BUCKET": "桶",
+		"DELETE": "删除",
+		"DELETE_CLOUDPROVIDER": "删除帐户",
+		"EDIT_CLOUDPROVIDER": "编辑帐户",
+		"LANGUAGE": "语言",
+		"NEW_CLOUDPROVIDER": "新账户",
+		"SECRETACCESSKEY": "秘密访问密钥",
+		"SENTIMENTACCOUNT": "情绪分析账户",
+		"SENTIMENTANALYSIS": "情绪分析",
+		"SENTIMENTREGION": "情绪分析区域",
+		"SERVICE": "服务",
+		"TRANSCRIBE": "录制",
+		"TRANSCRIBEACCOUNT": "转录帐户",
+		"TRANSCRIBEREGION": "转录区",
+		"WHATSAPP": "WhatsApp连接器"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/settings/i18n/zh-TW.json b/public/app/main/apps/settings/i18n/zh-TW.json
index f9d3593..30c8b95 100644
--- a/public/app/main/apps/settings/i18n/zh-TW.json
+++ b/public/app/main/apps/settings/i18n/zh-TW.json
@@ -114,7 +114,16 @@
 			"BLOCKDURATION_REQUIRED": "必填項",
 			"LOGINMAILFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "該值必須大於或等於",
 			"LOGINMAILFREQUENCY_REQUIRED": "必填項",
-			"USERNAME_REQUIRED": "必填項"
+			"USERNAME_REQUIRED": "必填項",
+			"ACCESSKEY_REQUIRED": "必填項",
+			"BUCKET_REQUIRED": "必填項",
+			"LANGUAGE_REQUIRED": "必填項",
+			"SECRETACCESSKEY_REQUIRED": "必填項",
+			"SENTIMENTACCOUNT_REQUIRED": "必填項",
+			"SENTIMENTREGION_REQUIRED": "必填項",
+			"SERVICE_REQUIRED": "必填項",
+			"TRANSCRIBEACCOUNT_REQUIRED": "必填項",
+			"TRANSCRIBEREGION_REQUIRED": "必填項"
 		},
 		"EDIT_NETWORK": "編輯網路",
 		"DELETE_NETWORK": "刪除網路",
@@ -215,6 +224,26 @@
 		"LOGINMAILFREQUENCY": "登錄郵件頻率（秒）",
 		"USERNAME": "用戶名",
 		"GOOGLE_SSO_ENABLED": "已啟用Google SSO",
-		"SSO": "單點登錄"
+		"SSO": "單點登錄",
+		"ACCESSKEY": "訪問密鑰ID",
+		"ADD_CLOUDPROVIDER": "新增帳戶",
+		"AI": "我工具類",
+		"AITOOLS": "我工具類",
+		"APPZONE": "應用專區",
+		"BUCKET": "桶",
+		"DELETE": "刪除",
+		"DELETE_CLOUDPROVIDER": "刪除帳戶",
+		"EDIT_CLOUDPROVIDER": "編輯帳戶",
+		"LANGUAGE": "語言",
+		"NEW_CLOUDPROVIDER": "新賬戶",
+		"SECRETACCESSKEY": "秘密訪問密鑰",
+		"SENTIMENTACCOUNT": "情緒分析賬戶",
+		"SENTIMENTANALYSIS": "情緒分析",
+		"SENTIMENTREGION": "情緒分析區域",
+		"SERVICE": "服務",
+		"TRANSCRIBE": "錄製",
+		"TRANSCRIBEACCOUNT": "轉錄帳戶",
+		"TRANSCRIBEREGION": "轉錄區",
+		"WHATSAPP": "WhatsApp連接器"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/sms/i18n/ru.json b/public/app/main/apps/sms/i18n/ru.json
index e13e8ea..ad092be 100644
--- a/public/app/main/apps/sms/i18n/ru.json
+++ b/public/app/main/apps/sms/i18n/ru.json
@@ -2,36 +2,36 @@
 	"SMS": {
 		"KEY": "Ключ",
 		"NAME": "Имя",
-		"SMSQUEUES": "Очереди SMS",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"SMSQUEUES": "Очереди сообщений SMS",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"STRATEGY": "Стратегия",
 		"ERRORS": {
-			"KEY_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
-			"KEY_REQUIRED": "Обязательное поле",
-			"NAME_REQUIRED": "Обязательное поле",
-			"AGENT_TIMEOUT_REQUIRED": "Обязательное поле",
-			"PHONE_REQUIRED": "Обязательное поле",
-			"SID_REQUIRED": "Обязательное поле",
-			"TOKEN_REQUIRED": "Обязательное поле",
-			"USERNAME_REQUIRED": "Обязательное поле",
-			"PASSWORD_REQUIRED": "Обязательное поле",
-			"MOTIONADDRESS_REQUIRED": "Обязательное поле",
-			"MOTIONADDRESS_MUST_VALID_URL": "Неверный формат",
-			"ACCEPTURL_MUST_VALID_URL": "Неверный формат",
-			"TIMEOUT_REQUIRED": "Обязательное поле",
-			"REJECTURL_MUST_VALID_URL": "Неверный формат",
-			"CLOSEURL_MUST_VALID_URL": "Неверный формат",
-			"TYPE_REQUIRED": "Обязательное поле",
-			"LIST_REQUIRED": "Обязательное поле",
-			"PRIORITY_REQUIRED": "Обязательное поле",
-			"CONDITION_REQUIRED": "Обязательное поле",
-			"TRUEPRIORITY_REQUIRED": "Обязательное поле",
-			"FALSEPRIORITY_REQUIRED": "Обязательное поле",
-			"AGENT_REQUIRED": "Обязательное поле",
-			"QUEUE_REQUIRED": "Обязательное поле",
-			"DISPOSITION_REQUIRED": "Обязательное поле",
-			"ACCOUNTSID_REQUIRED": "Обязательное поле",
-			"AUTHTOKEN_REQUIRED": "Обязательное поле",
+			"KEY_MAX_LENGTH": "Ключ должен иметь максимальную длину равную {{max}}",
+			"KEY_REQUIRED": "Ключ",
+			"NAME_REQUIRED": "Это имя требуется",
+			"AGENT_TIMEOUT_REQUIRED": "Оператор - тайм-аут требуется",
+			"PHONE_REQUIRED": "Номер телефона не требуется",
+			"SID_REQUIRED": "Значение SID не требуется",
+			"TOKEN_REQUIRED": "Маркер не требуется",
+			"USERNAME_REQUIRED": "Имя пользователя не требуется",
+			"PASSWORD_REQUIRED": "Пароль не требуется",
+			"MOTIONADDRESS_REQUIRED": "Движение адрес не требуется",
+			"MOTIONADDRESS_MUST_VALID_URL": "Движение адрес должен быть записан в действительный формат",
+			"ACCEPTURL_MUST_VALID_URL": "Принять URL должен быть записан в действительный формат",
+			"TIMEOUT_REQUIRED": "Тайм-аут не требуется",
+			"REJECTURL_MUST_VALID_URL": "Отклонить URL должен быть записан в действительный формат",
+			"CLOSEURL_MUST_VALID_URL": "Закрыть адрес URL должен быть записан в действительный формат",
+			"TYPE_REQUIRED": "Типа не требуется",
+			"LIST_REQUIRED": "Список не требуется",
+			"PRIORITY_REQUIRED": "Приоритет не требуется",
+			"CONDITION_REQUIRED": "Это состояние требует",
+			"TRUEPRIORITY_REQUIRED": "Истинный приоритет не требуется",
+			"FALSEPRIORITY_REQUIRED": "Ложный Приоритет не требуется",
+			"AGENT_REQUIRED": "Агент обязан",
+			"QUEUE_REQUIRED": "Очереди не требуется",
+			"DISPOSITION_REQUIRED": "Распоряжения не требуется",
+			"ACCOUNTSID_REQUIRED": "SID учетной записи не требуется",
+			"AUTHTOKEN_REQUIRED": "Маркер аутентификации не требуется",
 			"MOTIONPROXY_REQUIRED": "Обязательное поле",
 			"MOTIONPROXY_MUST_VALID_URL": "Неверный формат",
 			"TEXT_MAX_LENGTH": "Значение должно иметь максимальную длину, равную {{max}}",
@@ -60,226 +60,226 @@
 			"BASEURL_REQUIRED": "Обязательное поле",
 			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Обязательное поле",
 			"ACCESSKEYID_REQUIRED": "Требуется идентификатор ключа доступа",
-			"BOTNAME_REQUIRED": "Требуется имя бота",
+			"BOTNAME_REQUIRED": "Имя бота обязательно",
 			"SECRETACCESSKEY_REQUIRED": "Требуется секретный ключ доступа"
 		},
-		"AGENT_TIMEOUT": "Тайм-аут агента",
+		"AGENT_TIMEOUT": "Время ожидания оператора",
 		"DESCRIPTION": "Описание",
-		"ADD_SMSQUEUE": "Добавить очередь SMS",
-		"EDIT_SMSQUEUE": "Редактировать очередь SMS",
-		"DELETE_SMSQUEUE": "Удалить очередь SMS",
+		"ADD_SMSQUEUE": "Добавить сервер SMS очереди",
+		"EDIT_SMSQUEUE": "Редактировать сервер SMS очереди",
+		"DELETE_SMSQUEUE": "Удаление SMS-очереди",
 		"SETTINGS": "Настройки",
-		"GENERAL": "Общие",
-		"CREATED_AT": "Создано на",
+		"GENERAL": "Генеральной",
+		"CREATED_AT": "Созданные в",
 		"SAVE": "Сохранить",
-		"SMSACCOUNTS": "Учетные записи SMS",
+		"SMSACCOUNTS": "SMS счетов",
 		"TYPE": "Тип",
-		"PHONE": "Телефон",
+		"PHONE": "Номер телефона",
 		"SID": "SID",
-		"TOKEN": "Токен",
-		"SMSTYPE": "Тип SMS",
+		"TOKEN": "Маркер",
+		"SMSTYPE": "Тип сообщений SMS",
 		"USERNAME": "Имя пользователя",
 		"PASSWORD": "Пароль",
 		"MOTIONADDRESS": "Адрес движения",
-		"ADD_SMSACCOUNT": "Добавить учетную запись SMS",
-		"EDIT_SMSACCOUNT": "Редактировать учетную запись SMS",
-		"DELETE_SMSACCOUNT": "Удалить учетную запись SMS",
+		"ADD_SMSACCOUNT": "Добавить учетную запись сервера SMS",
+		"EDIT_SMSACCOUNT": "Редактировать учетную запись сервера SMS",
+		"DELETE_SMSACCOUNT": "Удалить учетную запись сервера SMS",
 		"LIST": "Список",
-		"FIDELITY": "Точность",
+		"FIDELITY": "Четкость",
 		"API": "API",
-		"DISPOSITIONS": "Диспозиции",
+		"DISPOSITIONS": "Распоряжения",
 		"WEBHOOKS": "WebHooks",
 		"ACTIONS": "Действия",
-		"ACCEPT": "Принять",
+		"ACCEPT": "Согласиться с",
 		"ACCEPTMETHOD": "Принять метод",
-		"ACCEPTURL": "Принять URL",
+		"ACCEPTURL": "Согласиться с URL",
 		"REJECT": "Отклонить",
 		"REJECTMETHOD": "Отклонить метод",
-		"REJECTURL": "Отклонить URL",
+		"REJECTURL": "Отклонить URL",
 		"CLOSE": "Закрыть",
-		"CLOSEMETHOD": "Закрыть метод",
-		"CLOSEURL": "Закрыть URL",
+		"CLOSEMETHOD": "Закройте метод",
+		"CLOSEURL": "Закрыть URL",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
+		"SELECT_NONE": "Выберите пункт None",
 		"BACK": "Назад",
 		"SMS": "SMS",
-		"ID": "Идентификатор",
-		"CONFIRM_PASSWORD": "Подтверждение пароля",
-		"SMSDISPOSITIONS": "Диспозиции SMS",
-		"NO_SMSDISPOSITION_AVAILABLE": "Диспозиции SMS отсутствуют",
-		"NEW_SMSDISPOSITION": "Новая диспозиция SMS",
-		"ADD_SMSDISPOSITION": "Добавить диспозицию SMS",
-		"EDIT_SMSDISPOSITION": "Редактировать диспозицию SMS",
-		"DELETE_SMSDISPOSITION": "Удалить диспозицию SMS",
-		"NEW_SMSQUEUE": "Новая очередь SMS",
-		"NEW_SMSACCOUNT": "Новая учетная запись SMS",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"ALL_TEAMS": "Все команды",
-		"SELECTED_TEAMS": "Избранные команды",
+		"ID": "Id",
+		"CONFIRM_PASSWORD": "Подтвердите пароль",
+		"SMSDISPOSITIONS": "SMS распоряжения",
+		"NO_SMSDISPOSITION_AVAILABLE": "SMS не распоряжения имеющихся",
+		"NEW_SMSDISPOSITION": "Новые SMS-Disposition",
+		"ADD_SMSDISPOSITION": "Добавить сервер SMS распоряжения",
+		"EDIT_SMSDISPOSITION": "Редактировать сервер SMS распоряжения",
+		"DELETE_SMSDISPOSITION": "Удаление SMS-Disposition",
+		"NEW_SMSQUEUE": "Новые SMS-сообщения очереди ожидания",
+		"NEW_SMSACCOUNT": "Новая учетная запись сервера SMS",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"ALL_TEAMS": "Все группы",
+		"SELECTED_TEAMS": "Выбранные группы",
 		"HELP": {
-			"NAME": "Поддерживаются только цифры, буквы и специальные символы (._)",
-			"LIST": "Список менеджера контактов, используемый для ассоциирования контактов",
-			"RECEIVEURL": "Это автоматически сгенерированная строка API, которую необходимо использовать для получения сообщений в вашей учетной записи от вашего SMS-провайдера (необходимо использовать метод POST): нажмите кнопку вызова диалогового окна «Буфер обмена», чтобы скопировать ее",
-			"MOTIONPROXY": "Поле должно иметь следующий формат: <protocol>://<ipaddress>[:<port>]. Пример: https://X.Y.Z.W",
-			"DELIVERYREPORTURL": "Это автоматически сгенерированная строка API, которую необходимо использовать для получения отчета о доставке отправленных сообщений от вашего SMS-провайдера (необходимо использовать метод POST): нажмите кнопку вызова диалогового окна «Буфер обмена», чтобы скопировать ее",
-			"MANDATORYDISPOSITION": "Обязательная диспозиция",
-			"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования в случае включения обязательной диспозиции",
-			"WELCOMEMESSAGE": "Это первое ответное сообщение, отправленное для новых взаимодействий."
+			"NAME": "Только цифры, буквы и специальные символы (_) поддерживаются",
+			"LIST": "Contact Manager список используется для связи контакты",
+			"RECEIVEURL": "Это автоматически сгенерированное API строки необходимо использовать для получения сообщений внутри вашего счета с SMS-услуг (метод POST должны использоваться). Вы можете нажать кнопку буфер обмена для копирования его в буфер обмена.",
+			"MOTIONPROXY": "Поле должно иметь следующий формат: <protocol>:// <IP_адрес>[<port>]. Пример: https://X.Y.Z.W",
+			"DELIVERYREPORTURL": "Это автоматически созданная строка API, которую вы должны использовать для получения отчета о доставке отправленных сообщений от вашего провайдера SMS (должен использоваться метод POST): нажмите кнопку буфера обмена, чтобы скопировать его",
+			"MANDATORYDISPOSITION": "Обязательное распоряжение",
+			"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования, когда включена обязательная утилизация",
+			"WELCOMEMESSAGE": "Это первое ответное сообщение, отправленное на новые взаимодействия"
 		},
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"TEAMADD_SMSQUEUE": "Добавить команду к очереди SMS",
-		"AGENTADD_SMSQUEUE": "Добавить агента к очереди SMS",
-		"ALL_AGENTS": "Все агенты",
-		"SELECTED_AGENTS": "Выбранные агенты",
-		"RECEIVEURL": "Получить URL-адрес",
+		"OF": "В",
+		"TEAMADD_SMSQUEUE": "Команда Добавить в очередь",
+		"AGENTADD_SMSQUEUE": "Добавить оператора в очереди",
+		"ALL_AGENTS": "Все операторы",
+		"SELECTED_AGENTS": "Выбранные операторы",
+		"RECEIVEURL": "Получить URL",
 		"INTERACTION": "Взаимодействие",
-		"INTERACTIONS": "Взаимодействия",
-		"NO_INTERACTION_AVAILABLE": "Взаимодействия отсутствуют",
-		"CONTACT": "Контакт",
-		"STARTEDAT": "Начато в",
-		"AGENT": "Агент",
-		"CLOSEDAT": "Закрыто в",
-		"DISPOSITION": "Диспозиция",
+		"INTERACTIONS": "Взаимодействие",
+		"NO_INTERACTION_AVAILABLE": "Нет доступных взаимодействий",
+		"CONTACT": "Контакты",
+		"STARTEDAT": "Началась в",
+		"AGENT": "Оператор",
+		"CLOSEDAT": "Закрыт",
+		"DISPOSITION": "Отчуждения",
 		"NOTES": "Примечания",
-		"GOTO": "Перейти к",
-		"GOTOIF": "Переход по условию / GotoIf",
-		"NOOP": "Noop",
-		"QUEUE": "Очередь",
+		"GOTO": "Гото",
+		"GOTOIF": "Gotoif",
+		"NOOP": "Нооп",
+		"QUEUE": "Очереди",
 		"TIMEOUT": "Тайм-аут",
 		"VALUE": "Значение",
-		"EDIT_AGENT": "Редактировать агента",
-		"EDIT_GOTO": "Редактировать Перейти к",
-		"EDIT_NOOP": "Редактировать Noop",
-		"EDIT_GOTOIF": "Редактировать GotoIf",
-		"EDIT_QUEUE": "Редактировать очередь",
-		"CONDITION": "Условие",
+		"EDIT_AGENT": "Редактирование оператора",
+		"EDIT_GOTO": "Редактировать гото",
+		"EDIT_NOOP": "Редактировать Noop",
+		"EDIT_GOTOIF": "Gotoif редактировать",
+		"EDIT_QUEUE": "Редактирование очереди",
+		"CONDITION": "Состояние",
 		"TRUEPRIORITY": "Истинный приоритет",
 		"FALSEPRIORITY": "Ложный приоритет",
 		"PRIORITY": "Приоритет",
 		"GOTOP": "Gotop",
-		"EDIT_GOTOP": "Редактировать Gotop",
+		"EDIT_GOTOP": "Gotop редактировать",
 		"EDIT_CLOSE": "Редактировать Закрыть",
 		"FILTER": "Фильтр",
-		"SELECT_STATUS": "Выбрать статус",
+		"SELECT_STATUS": "Выберите состояние",
 		"ALL": "Все",
-		"SELECT_ACCOUNT": "Выбрать учетную запись",
+		"SELECT_ACCOUNT": "Выберите учетную запись",
 		"OPENED": "Открыть",
-		"CLOSED": "Закрытые",
+		"CLOSED": "Закрыт",
 		"STATUS": "Состояние",
-		"ACCOUNT": "Учетная запись",
+		"ACCOUNT": "Внимание",
 		"OPEN": "Открыть",
-		"INFO": "Информация",
-		"ACCOUNTSID": "SID учетной записи",
-		"AUTHTOKEN": "Токен Auth",
-		"PROXY": "Прокси",
-		"ADVANCED": "Продвинутый",
-		"MOTIONPROXY": "Прокси или домен Motion",
-		"REALTIME": "Режим реального времени",
+		"INFO": "Инфо",
+		"ACCOUNTSID": "SID учетной записи",
+		"AUTHTOKEN": "Маркер аутентификации",
+		"PROXY": "Прокси-сервер",
+		"ADVANCED": "Расширенный",
+		"MOTIONPROXY": "Прокси-сервер или Движение доменных",
+		"REALTIME": "В режиме реального времени",
 		"UNKNOWN": "Неизвестно",
-		"UNREGISTERED": "Не зарегистрирован",
-		"UNAVAILABLE": "Отсутствует",
-		"NOT_INUSE": "Не используется",
-		"REACHABLE": "Достижимые",
-		"IN_USE": "Используется",
+		"UNREGISTERED": "Незарегистрированный",
+		"UNAVAILABLE": "Недоступен",
+		"NOT_INUSE": "Не используется",
+		"REACHABLE": "Добраться",
+		"IN_USE": "В использовании",
 		"AGENTS": "Агенты",
-		"QUEUES": "Очереди",
-		"FULLNAME": "Полное имя",
-		"INTERNAL": "Внутренний",
+		"QUEUES": "Очередей",
+		"FULLNAME": "Fullname",
+		"INTERNAL": "Внутренние",
 		"PHONE_STATE": "Состояние телефона",
-		"PHONE_STATUS": "Статус телефона",
+		"PHONE_STATUS": "Состояние телефона",
 		"PAUSE": "Пауза",
-		"LOGOUT": "Выход",
-		"AGENTADD_QUEUE": "Добавить агента к очереди SMS",
-		"UNPAUSE": "Конец паузы",
-		"DEFAULT_PAUSE": "Пауза по умолчанию",
-		"LOGGED_IN": "Зарегистрирован в системе",
-		"PAUSED": "Поставлен на паузу",
+		"LOGOUT": "Выход из системы",
+		"AGENTADD_QUEUE": "Добавить оператора в очереди SMS",
+		"UNPAUSE": "Конец Пауза",
+		"DEFAULT_PAUSE": "По умолчанию пауза",
+		"LOGGED_IN": "Вход в систему",
+		"PAUSED": "Приостановлено",
 		"READY": "Готов",
-		"WAITING": "Ожидание",
+		"WAITING": "Свободные",
 		"VOICE": "Голос",
 		"CHAT": "Чат",
-		"MAIL": "Электронная почта",
-		"OPENCHANNEL": "Открытый канал",
+		"MAIL": "Почта",
+		"OPENCHANNEL": "Открыть канал",
 		"FAX": "Факс",
-		"AGENTSADD_QUEUE": "Добавить агентов к очереди SMS",
-		"NO_AGENT_ONLINE": "Агент отсутствует онлайн",
-		"GOTOREALTIME_SMSQUEUE": "Перейти к очереди SMS в реальном времени",
-		"PARTIALPAUSE": "Частичная пауза",
-		"BUSY": "Линия занята",
+		"AGENTSADD_QUEUE": "Добавить операторов в очереди SMS",
+		"NO_AGENT_ONLINE": "Ни один оператор На Сайте",
+		"GOTOREALTIME_SMSQUEUE": "Перейти к Sms в режиме реального времени очереди",
+		"PARTIALPAUSE": "Parital Пауза",
+		"BUSY": "Занят",
 		"TIMER": "Таймер",
-		"IDLE": "Линия свободна",
+		"IDLE": "Обороты холостого хода",
 		"CAPACITY": "Емкость",
 		"SEND": "Отправить",
-		"TO": "Кому",
+		"TO": "К",
 		"MESSAGE": "Сообщение",
-		"TAGS": "Теги",
-		"INTERACTIONS_SMSACCOUNT": "Перейти к взаимодействиям",
-		"REFRESH_INTERACTIONS": "Обновить взаимодействия",
-		"CANNED_ANSWER_NOT_FOUND": "Готовые ответы не найдены",
-		"CANNED_ANSWER_SEARCH": "Ввести текст для поиска готового ответа",
-		"NO_SMSDISPOSITIONS_AVAILABLE": "Диспозиция SMS отсутствует",
-		"NO_SMSCANNEDANSWER_AVAILABLE": "Заранее определенные ответы отсутствуют",
-		"NEW_SMSCANNEDANSWER": "Новый заранее определенный ответ",
-		"ADD_SMSCANNEDANSWER": "Добавить заранее определенный ответ",
-		"EDIT_SMSCANNEDANSWER": "Редактировать",
+		"TAGS": "Tags",
+		"INTERACTIONS_SMSACCOUNT": "Перейти к взаимодействию",
+		"REFRESH_INTERACTIONS": "Обновить взаимодействий",
+		"CANNED_ANSWER_NOT_FOUND": "Нет консервов ответы были найдены",
+		"CANNED_ANSWER_SEARCH": "Введите текст для поиска ответа на консервы",
+		"NO_SMSDISPOSITIONS_AVAILABLE": "Нет доступных смесей",
+		"NO_SMSCANNEDANSWER_AVAILABLE": "Нет готовых ответов",
+		"NEW_SMSCANNEDANSWER": "Новый Консервированный Ответ",
+		"ADD_SMSCANNEDANSWER": "Добавить консервированный ответ",
+		"EDIT_SMSCANNEDANSWER": "редактировать",
 		"DELETE_SMSCANNEDANSWER": "Удалить",
-		"DELIVERYREPORTURL": "URL-адрес отчета о доставке",
+		"DELIVERYREPORTURL": "URL отчета о доставке",
 		"DELETE": "Удалить",
 		"SENDERSTRING": "Строка отправителя",
-		"DELIVERYREPORT": "Отчет о доставке",
-		"METHOD": "Метод",
-		"ADD_NOTE": "Добавить примечание",
-		"NOTE": "Примечание",
-		"SPYINTERACTION": "Шпион",
+		"DELIVERYREPORT": "Отчет о доставке",
+		"METHOD": "метод",
+		"ADD_NOTE": "Добавить заметку",
+		"NOTE": "Заметка",
+		"SPYINTERACTION": "шпион",
 		"AUTOREPLY": "Автоответчик",
-		"EDIT_AUTOREPLY": "Редактирование автоответчика",
+		"EDIT_AUTOREPLY": "Редактировать автоматический ответ",
 		"TIMES": "Количество раз за взаимодействие",
 		"TEXT": "Текст",
-		"INSERT_MESSAGE_HERE": "Введите текстовое сообщение здесь",
+		"INSERT_MESSAGE_HERE": "Вставьте свое текстовое сообщение здесь",
 		"DELETE_INTERACTION": "Удалить взаимодействие",
-		"AUTHID": "Идентификатор Auth",
-		"COMMAND": "Команда",
-		"EDIT_SYSTEM": "Редактировать систему",
-		"SYSTEM": "Система",
-		"VARIABLE": "Переменная",
-		"NOTIFICATION": "Уведомление",
-		"NOTIFICATIONSHAKE": "Shake",
-		"NOTIFICATIONSOUND": "Звук",
-		"NOTIFICATIONTEMPLATE": "Шаблон",
-		"WAITFORTHEASSIGNEDAGENT": "Ожидание ответа назначенного агента",
-		"EDIT_TAG": "Редактирование тега",
+		"AUTHID": "Auth ID",
+		"COMMAND": "команда",
+		"EDIT_SYSTEM": "Изменить систему",
+		"SYSTEM": "система",
+		"VARIABLE": "переменная",
+		"NOTIFICATION": "уведомление",
+		"NOTIFICATIONSHAKE": "Встряска",
+		"NOTIFICATIONSOUND": "звук",
+		"NOTIFICATIONTEMPLATE": "шаблон",
+		"WAITFORTHEASSIGNEDAGENT": "Подождите, пока назначенный агент",
+		"EDIT_TAG": "Изменить тег",
 		"TAG": "Тег",
-		"AGENTADD_SMSACCOUNT": "Добавить агента в учетную запись SMS",
-		"AGENTTRANSFER": "Передача агенту",
-		"AGENTTRANSFERTIMEOUT": "Тайм-аут передачи агенту",
-		"QUEUETRANSFER": "Передача в очередь",
-		"QUEUETRANSFERTIMEOUT": "Тайм-аут передачи в очередь",
-		"TRANSFER": "Перевод вызова",
-		"CANNEDANSWERS": "Заранее определенные ответы",
+		"AGENTADD_SMSACCOUNT": "Добавить аккаунт агента в SMS",
+		"AGENTTRANSFER": "Передача агента",
+		"AGENTTRANSFERTIMEOUT": "Тайм-аут передачи агента",
+		"QUEUETRANSFER": "Передача очереди",
+		"QUEUETRANSFERTIMEOUT": "Тайм-аут передачи очереди",
+		"TRANSFER": "Перечислить",
+		"CANNEDANSWERS": "Консервированные ответы",
 		"DOWNLOAD_INTERACTION": "Скачать",
-		"SMSCANNEDANSWERS": "Заранее определенные ответы",
-		"LOGIN_TIME": "Время входа в систему",
+		"SMSCANNEDANSWERS": "Консервированные ответы",
+		"LOGIN_TIME": "Время входа",
 		"PAUSE_TIME": "Время паузы",
 		"APIKEY": "ApiKey",
-		"BASEURL": "Базовый URL",
+		"BASEURL": "Базовый URL",
 		"TEAMS_ASSOCIATION": "Ассоциация команд",
-		"MANDATORYDISPOSITION": "Обязательная диспозиция",
-		"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования в случае включения обязательной диспозиции",
+		"MANDATORYDISPOSITION": "Обязательное распоряжение",
+		"MANDATORYDISPOSITIONPAUSEID": "Пауза для использования, когда включена обязательная утилизация",
 		"ACCESSKEYID": "Идентификатор ключа доступа",
 		"AMAZONLEX": "AmazonLex",
 		"BOTNAME": "Имя бота",
-		"DIALOGFLOW": "Сервис DialogFlow",
-		"EDIT_AMAZONLEX": "Редактировать конфигурацию Lex",
-		"EDIT_DIALOGFLOW": "Редактирование конфигурации: DialogFlow",
-		"LANGUAGE": "Язык",
-		"LEXREGION": "Регион",
-		"SECRETACCESSKEY": "Секретный ключ доступа",
-		"WELCOMEMESSAGE": "Приветственное сообщение",
-		"DOWNLOAD_WITHOUT_ATTACHMENT": "Скачать без вложений",
-		"DOWNLOAD_WITH_ATTACHMENT": "Скачать с вложениями",
+		"DIALOGFLOW": "DialogFlow",
+		"EDIT_AMAZONLEX": "Изменить конфигурацию Lex",
+		"EDIT_DIALOGFLOW": "Изменить конфигурацию DialogFlow",
+		"LANGUAGE": "язык",
+		"LEXREGION": "Область",
+		"SECRETACCESSKEY": "Секрет ключа доступа",
+		"WELCOMEMESSAGE": "Приветствие",
+		"DOWNLOAD_WITHOUT_ATTACHMENT": "Скачать без вложения",
+		"DOWNLOAD_WITH_ATTACHMENT": "Скачать с приложением",
 		"LASTMESSAGE": "Последнее сообщение"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/ar.json b/public/app/main/apps/staff/i18n/ar.json
index 0e6fed5..359611d 100644
--- a/public/app/main/apps/staff/i18n/ar.json
+++ b/public/app/main/apps/staff/i18n/ar.json
@@ -37,7 +37,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "حقل الزامي",
 			"USERPROFILE_REQUIRED": "حقل الزامي",
 			"PASSWORD_OLDPASSWORD_MATCH": "يجب أن تكون كلمة المرور الجديدة مختلفة عن كلمة المرور السابقة",
-			"CONFIRM_REQUIRED": "حقل الزامي"
+			"CONFIRM_REQUIRED": "حقل الزامي",
+			"WHATSAPPCAPACITY_REQUIRED": "حقل الزامي"
 		},
 		"HELP": {
 			"ALLOWCODECS": "السماح بالكود",
@@ -64,7 +65,8 @@
 			"APIKEY": "يرجى استخدام زر \"API key manager\" على شريط الأدوات لإدارة هذا المفتاح",
 			"ENABLEAUTOMATICSCREENRECORDING": "تتوفر الوظيفة للقناة الصوتية فقط",
 			"BLOCKED": "قفل / فتح الوصول",
-			"DISABLED": "حدد لإلغاء تنشيط / إلغاء تحديد لإعادة تنشيط"
+			"DISABLED": "حدد لإلغاء تنشيط / إلغاء تحديد لإعادة تنشيط",
+			"WHATSAPPCAPACITY": "الحد الأقصى لعدد تفاعلات القناة المتزامنة لكل وكيل (0 = غير محدود)"
 		},
 		"ADD_AGENT": "إضافة ممثل خدمة",
 		"ADD_USER": "إضافة المستخدم",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "تمكين تسجيل الفيديو",
 		"BLOCKED": "مقفل",
 		"DISABLED": "المعطلة",
-		"REGENERATE": "تجديد"
+		"REGENERATE": "تجديد",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "جميع قوائم انتظار WhatsApp",
+		"ALL_WHATSAPPACCOUNTS": "جميع حسابات WhatsApp",
+		"ALL_WHATSAPPQUEUES": "جميع قوائم انتظار Whataspp",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "إضافة عامل إلى قوائم انتظار WhatsApp",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "إضافة المستخدم إلى قوائم انتظار WhatsApp",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "قوائم انتظار WhatsApp المحددة",
+		"SELECTED_WHATSAPPACCOUNTS": "حسابات WhatsApp المحددة",
+		"SELECTED_WHATSAPPQUEUES": "قوائم انتظار WhatsApp المحددة",
+		"USERADD_WHATSAPPACCOUNTS": "أضف حساب WhatsApp إلى المستخدم",
+		"USERADD_WHATSAPPQUEUES": "أضف قائمة انتظار Whataspp إلى المستخدم",
+		"WHATSAPP": "رابط WhatsApp",
+		"WHATSAPPCAPACITY": "سعة موصل WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/da.json b/public/app/main/apps/staff/i18n/da.json
index c33ad85..4bba930 100644
--- a/public/app/main/apps/staff/i18n/da.json
+++ b/public/app/main/apps/staff/i18n/da.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Obligatorisk felt",
 			"USERPROFILE_REQUIRED": "Obligatorisk felt",
 			"PASSWORD_OLDPASSWORD_MATCH": "Den nye adgangskode skal være forskellig fra den forrige",
-			"CONFIRM_REQUIRED": "Obligatorisk felt"
+			"CONFIRM_REQUIRED": "Obligatorisk felt",
+			"WHATSAPPCAPACITY_REQUIRED": "Obligatorisk felt"
 		},
 		"ACCOUNT": "Konto",
 		"VOICE": "Voice",
@@ -112,7 +113,8 @@
 			"APIKEY": "Brug knappen 'API-nøglemanager' på værktøjslinjen til at administrere denne nøgle",
 			"ENABLEAUTOMATICSCREENRECORDING": "Funktionaliteten er kun tilgængelig for stemmekanal",
 			"BLOCKED": "Lås / lås op adgang",
-			"DISABLED": "vælg for at deaktivere / fjerne markering for at genaktivere"
+			"DISABLED": "vælg for at deaktivere / fjerne markering for at genaktivere",
+			"WHATSAPPCAPACITY": "Maksimum antal samtidige kanalinteraktioner pr. Agent (0 = ubegrænset)"
 		},
 		"NEW_PASSWORD": "Ny adgangskode",
 		"CONFIRM_PASSWORD": "Bekræft adgangskode",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Aktivér videooptagelse",
 		"BLOCKED": "Låst",
 		"DISABLED": "Deaktiveret",
-		"REGENERATE": "Regenerer"
+		"REGENERATE": "Regenerer",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-køer",
+		"ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-konti",
+		"ALL_WHATSAPPQUEUES": "Alle Whataspp-køer",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Føj agent til WhatsApp-køer",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Føj bruger til WhatsApp-køer",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Valgte WhatsApp-køer",
+		"SELECTED_WHATSAPPACCOUNTS": "Valgte WhatsApp-konti",
+		"SELECTED_WHATSAPPQUEUES": "Valgte WhatsApp-køer",
+		"USERADD_WHATSAPPACCOUNTS": "Føj WhatsApp-konto til brugeren",
+		"USERADD_WHATSAPPQUEUES": "Føj Whataspp-kø til bruger",
+		"WHATSAPP": "WhatsApp-stik",
+		"WHATSAPPCAPACITY": "WhatsApp-konnektorkapacitet"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/de.json b/public/app/main/apps/staff/i18n/de.json
index 12818ed..37192a1 100644
--- a/public/app/main/apps/staff/i18n/de.json
+++ b/public/app/main/apps/staff/i18n/de.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Pflichtfeld",
 			"USERPROFILE_REQUIRED": "Pflichtfeld",
 			"PASSWORD_OLDPASSWORD_MATCH": "Das neue Passwort muss sich vom vorherigen Passwort unterscheiden",
-			"CONFIRM_REQUIRED": "Pflichtfeld"
+			"CONFIRM_REQUIRED": "Pflichtfeld",
+			"WHATSAPPCAPACITY_REQUIRED": "Pflichtfeld"
 		},
 		"ACCOUNT": "Konto",
 		"VOICE": "Voice",
@@ -112,7 +113,8 @@
 			"APIKEY": "Verwenden Sie die Schaltfläche \"API-Schlüsselmanager\" in der Symbolleiste, um diesen Schlüssel zu verwalten",
 			"ENABLEAUTOMATICSCREENRECORDING": "Die Funktionalität ist nur für Sprachkanäle verfügbar",
 			"BLOCKED": "Zugriff sperren / entsperren",
-			"DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren"
+			"DISABLED": "Zum Deaktivieren auswählen / Zum Reaktivieren deaktivieren",
+			"WHATSAPPCAPACITY": "Maximale Anzahl gleichzeitiger Kanalinteraktionen pro Agent (0 = unbegrenzt)"
 		},
 		"NEW_PASSWORD": "Neues Kennwort",
 		"CONFIRM_PASSWORD": "Passwort bestätigen",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Videoaufnahme aktivieren",
 		"BLOCKED": "Gesperrt",
 		"DISABLED": "Deaktiviert",
-		"REGENERATE": "Regenerieren"
+		"REGENERATE": "Regenerieren",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-Warteschlangen",
+		"ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-Konten",
+		"ALL_WHATSAPPQUEUES": "Alle Whataspp-Warteschlangen",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agent zu WhatsApp-Warteschlangen hinzufügen",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Benutzer zu WhatsApp-Warteschlangen hinzufügen",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Ausgewählte WhatsApp-Warteschlangen",
+		"SELECTED_WHATSAPPACCOUNTS": "Ausgewählte WhatsApp-Konten",
+		"SELECTED_WHATSAPPQUEUES": "Ausgewählte WhatsApp-Warteschlangen",
+		"USERADD_WHATSAPPACCOUNTS": "WhatsApp-Konto zum Benutzer hinzufügen",
+		"USERADD_WHATSAPPQUEUES": "Fügen Sie dem Benutzer die Whataspp-Warteschlange hinzu",
+		"WHATSAPP": "WhatsApp Connector",
+		"WHATSAPPCAPACITY": "WhatsApp Connector-Kapazität"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/en.json b/public/app/main/apps/staff/i18n/en.json
index fe7140b..15b31ec 100644
--- a/public/app/main/apps/staff/i18n/en.json
+++ b/public/app/main/apps/staff/i18n/en.json
@@ -78,6 +78,7 @@
 			"MAILCAPACITY_REQUIRED": "Mandatory field",
 			"FAXCAPACITY_REQUIRED": "Mandatory field",
 			"SMSCAPACITY_REQUIRED": "Mandatory field",
+			"WHATSAPPCAPACITY_REQUIRED": "Mandatory field",
 			"OPENCHANNELCAPACITY_REQUIRED": "Mandatory field",
 			"SIPEXPIRES_REQUIRED": "Mandatory field",
 			"SIPPORT_REQUIRED": "Mandatory field",
@@ -129,6 +130,7 @@
 			"MAILCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
 			"FAXCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
 			"SMSCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
+			"WHATSAPPCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
 			"OPENCHANNELCAPACITY": "Maximum number of concurrent channel interactions per agent (0=unlimited)",
 			"CALLGROUP": "The agent's callgroup",
 			"PICKUPGROUP": "The groups in which the agent can answer calls",
@@ -153,6 +155,7 @@
 		"MAILCAPACITY": "Email Capacity",
 		"FAXCAPACITY": "Fax Capacity",
 		"SMSCAPACITY": "Sms Capacity",
+		"WHATSAPPCAPACITY": "WhatsApp Connector Capacity",
 		"OPENCHANNELCAPACITY": "Open Channel Capacity",
 		"MOTIONBAR": "Motion Bar",
 		"SETTINGS": "Settings",
@@ -207,12 +210,14 @@
 		"QUEUEADD_AGENT_CHAT_INBOUND": "Add Agent to Chat Queues",
 		"QUEUEADD_AGENT_MAIL_INBOUND": "Add Agent to Email Queues",
 		"QUEUEADD_AGENT_SMS_INBOUND": "Add Agent to SMS Queues",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Add Agent to WhatsApp Queues",
 		"QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Add Agent to Open Channel Queues",
 		"QUEUEADD_AGENT_FAX_INBOUND": "Add Agent to Fax Queues",
 		"QUEUEADD_USER_VOICE_INBOUND": "Add User to Voice Queues",
 		"QUEUEADD_USER_CHAT_INBOUND": "Add User to Chat Queues",
 		"QUEUEADD_USER_MAIL_INBOUND": "Add User to Email Queues",
 		"QUEUEADD_USER_SMS_INBOUND": "Add User to SMS Queues",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Add User to WhatsApp Queues",
 		"QUEUEADD_USER_OPENCHANNEL_INBOUND": "Add User to Open Channel Queues",
 		"QUEUEADD_USER_FAX_INBOUND": "Add User to Fax Queues",
 		"ALL_TEAMS": "All Teams",
@@ -228,6 +233,8 @@
 		"SELECTED_QUEUES_MAIL_INBOUND": "Selected Email Queues",
 		"ALL_QUEUES_SMS_INBOUND": "All SMS Queues",
 		"SELECTED_QUEUES_SMS_INBOUND": "Selected SMS Queues",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "All WhatsApp Queues",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Selected WhatsApp Queues",
 		"ALL_QUEUES_OPENCHANNEL_INBOUND": "All Open Channel Queues",
 		"SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Selected Open Channel Queues",
 		"ALL_QUEUES_FAX_INBOUND": "All Fax Queues",
@@ -246,6 +253,7 @@
 		"CHANNELS": "Channels",
 		"CHAT": "Chat",
 		"SMS": "Sms",
+		"WHATSAPP": "WhatsApp Connector",
 		"OPENCHANNEL": "Open Channel",
 		"FAX": "Fax",
 		"QUEUEADD_USER_VOICE_OUTBOUND": "Add User to Queue Campaigns",
@@ -273,6 +281,9 @@
 		"USERADD_SMSQUEUES": "Add SMS Queue to User",
 		"ALL_SMSQUEUES": "All SMS Queues",
 		"SELECTED_SMSQUEUES": "Selected SMS Queues",
+		"USERADD_WHATSAPPQUEUES": "Add Whataspp Queue to User",
+		"ALL_WHATSAPPQUEUES": "All Whataspp Queues",
+		"SELECTED_WHATSAPPQUEUES": "Selected WhatsApp Queues",
 		"USERADD_FAXQUEUES": "Add Fax Queue to User",
 		"ALL_FAXQUEUES": "All Fax Queues",
 		"SELECTED_FAXQUEUES": "Selected Fax Queues",
@@ -297,6 +308,9 @@
 		"USERADD_SMSACCOUNTS": "Add SMS Account to User",
 		"ALL_SMSACCOUNTS": "All SMS Accounts",
 		"SELECTED_SMSACCOUNTS": "Selected SMS Accounts",
+		"USERADD_WHATSAPPACCOUNTS": "Add WhatsApp Account to User",
+		"ALL_WHATSAPPACCOUNTS": "All WhatsApp Accounts",
+		"SELECTED_WHATSAPPACCOUNTS": "Selected WhatsApp Accounts",
 		"USERADD_OPENCHANNELACCOUNTS": "Add Open Channel Account to User",
 		"ALL_OPENCHANNELACCOUNTS": "All Open Channel Accounts",
 		"SELECTED_OPENCHANNELACCOUNTS": "Selected Open Channel Accounts",
diff --git a/public/app/main/apps/staff/i18n/es.json b/public/app/main/apps/staff/i18n/es.json
index 4ddc847..ab2756d 100644
--- a/public/app/main/apps/staff/i18n/es.json
+++ b/public/app/main/apps/staff/i18n/es.json
@@ -25,7 +25,8 @@
 			"APIKEY": "Utilice el botón 'API key manager' en la barra de herramientas para administrar esta clave",
 			"ENABLEAUTOMATICSCREENRECORDING": "La funcionalidad solo está disponible para el canal de voz",
 			"BLOCKED": "Desactivar para desbloquear una cuenta bloqueada",
-			"DISABLED": "Deshabilitar / Habilitar la cuenta"
+			"DISABLED": "Deshabilitar / Habilitar la cuenta",
+			"WHATSAPPCAPACITY": "Número máximo de interacciones de canal simultáneas por agente (0 = ilimitado)"
 		},
 		"ERRORS": {
 			"ACCOUNTNAME_REQUIRED": "Campo obligatorio",
@@ -64,7 +65,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Campo obligatorio",
 			"USERPROFILE_REQUIRED": "Campo obligatorio",
 			"PASSWORD_OLDPASSWORD_MATCH": "La nueva contraseña debe ser diferente de la anterior.",
-			"CONFIRM_REQUIRED": "Campo obligatorio"
+			"CONFIRM_REQUIRED": "Campo obligatorio",
+			"WHATSAPPCAPACITY_REQUIRED": "Campo obligatorio"
 		},
 		"ACCOUNT": "Cuenta",
 		"ACCOUNTNAME": "Nombre de Cuenta",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Habilitar grabación de video",
 		"BLOCKED": "Bloqueado",
 		"DISABLED": "Deshabilitado",
-		"REGENERATE": "Regenerado"
+		"REGENERATE": "Regenerado",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Todas las colas de WhatsApp",
+		"ALL_WHATSAPPACCOUNTS": "Todas las cuentas de WhatsApp",
+		"ALL_WHATSAPPQUEUES": "Todas las colas de Whataspp",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Agregar agente a las colas de WhatsApp",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Agregar usuario a las colas de WhatsApp",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Colas de WhatsApp seleccionadas",
+		"SELECTED_WHATSAPPACCOUNTS": "Cuentas de WhatsApp seleccionadas",
+		"SELECTED_WHATSAPPQUEUES": "Colas de WhatsApp seleccionadas",
+		"USERADD_WHATSAPPACCOUNTS": "Agregar cuenta de WhatsApp al usuario",
+		"USERADD_WHATSAPPQUEUES": "Agregar cola de Whataspp al usuario",
+		"WHATSAPP": "Conector de WhatsApp",
+		"WHATSAPPCAPACITY": "Capacidad del conector de WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/fa.json b/public/app/main/apps/staff/i18n/fa.json
index b105ff7..e4def7a 100644
--- a/public/app/main/apps/staff/i18n/fa.json
+++ b/public/app/main/apps/staff/i18n/fa.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "زمینه اجباری",
 			"USERPROFILE_REQUIRED": "زمینه اجباری",
 			"PASSWORD_OLDPASSWORD_MATCH": "رمزعبور جدید باید با رمز قبلی متفاوت باشد",
-			"CONFIRM_REQUIRED": "زمینه اجباری"
+			"CONFIRM_REQUIRED": "زمینه اجباری",
+			"WHATSAPPCAPACITY_REQUIRED": "زمینه اجباری"
 		},
 		"ACCOUNT": "اشتراک",
 		"VOICE": "صدا",
@@ -112,7 +113,8 @@
 			"APIKEY": "لطفاً برای مدیریت این کلید از دکمه \"مدیر کلید API\" در نوار ابزار استفاده کنید",
 			"ENABLEAUTOMATICSCREENRECORDING": "این عملکرد فقط برای کانال صوتی در دسترس است",
 			"BLOCKED": "دسترسی را قفل / باز کنید",
-			"DISABLED": "غیرفعال کردن / انتخاب مجدد برای فعال کردن مجدد را انتخاب کنید"
+			"DISABLED": "غیرفعال کردن / انتخاب مجدد برای فعال کردن مجدد را انتخاب کنید",
+			"WHATSAPPCAPACITY": "حداکثر تعداد متقابل کانال همزمان در هر عامل (0 = نامحدود)"
 		},
 		"NEW_PASSWORD": "اسم رمز جدید",
 		"CONFIRM_PASSWORD": "تأیید رمز ورود",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "ضبط ویدیو را فعال کنید",
 		"BLOCKED": "قفل شده",
 		"DISABLED": "غیرفعال شده است",
-		"REGENERATE": "بازسازی"
+		"REGENERATE": "بازسازی",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "همه صف های WhatsApp",
+		"ALL_WHATSAPPACCOUNTS": "همه حساب های WhatsApp",
+		"ALL_WHATSAPPQUEUES": "تمام صف های Whataspp",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "عامل را به صف های WhatsApp اضافه کنید",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "کاربر را به صف های WhatsApp اضافه کنید",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "صف های WhatsApp انتخاب شده است",
+		"SELECTED_WHATSAPPACCOUNTS": "حساب های واتس اپ انتخاب شده است",
+		"SELECTED_WHATSAPPQUEUES": "صف های WhatsApp انتخاب شده است",
+		"USERADD_WHATSAPPACCOUNTS": "حساب WhatsApp را به کاربر اضافه کنید",
+		"USERADD_WHATSAPPQUEUES": "صف Whataspp را به کاربر اضافه کنید",
+		"WHATSAPP": "اتصال واتساپ",
+		"WHATSAPPCAPACITY": "ظرفیت اتصال WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/fi.json b/public/app/main/apps/staff/i18n/fi.json
index 88f6187..18ef615 100644
--- a/public/app/main/apps/staff/i18n/fi.json
+++ b/public/app/main/apps/staff/i18n/fi.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Pakollinen kenttä",
 			"USERPROFILE_REQUIRED": "Pakollinen kenttä",
 			"PASSWORD_OLDPASSWORD_MATCH": "Uuden salasanan on oltava erilainen kuin edellinen",
-			"CONFIRM_REQUIRED": "Pakollinen kenttä"
+			"CONFIRM_REQUIRED": "Pakollinen kenttä",
+			"WHATSAPPCAPACITY_REQUIRED": "Pakollinen kenttä"
 		},
 		"ACCOUNT": "Tili",
 		"VOICE": "Ääni",
@@ -112,7 +113,8 @@
 			"APIKEY": "Käytä työkalurivin API-avainten hallinta -painiketta tämän avaimen hallintaan",
 			"ENABLEAUTOMATICSCREENRECORDING": "Toiminto on saatavana vain äänikanaville",
 			"BLOCKED": "Lukitse / avaa pääsy",
-			"DISABLED": "valitse, jos haluat poistaa käytöstä tai poistaa valinnan uudelleen aktivoidaksesi"
+			"DISABLED": "valitse, jos haluat poistaa käytöstä tai poistaa valinnan uudelleen aktivoidaksesi",
+			"WHATSAPPCAPACITY": "Samanaikaisten kanavavuorovaikutusten enimmäismäärä agenttia kohden (0 = rajaton)"
 		},
 		"NEW_PASSWORD": "Uusi salasana",
 		"CONFIRM_PASSWORD": "Vahvista salasana",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Ota videotallennus käyttöön",
 		"BLOCKED": "kiinni",
 		"DISABLED": "deaktivoitu",
-		"REGENERATE": "uudistua"
+		"REGENERATE": "uudistua",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Kaikki WhatsApp-jonot",
+		"ALL_WHATSAPPACCOUNTS": "Kaikki WhatsApp-tilit",
+		"ALL_WHATSAPPQUEUES": "Kaikki Whataspp -jonot",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lisää agentti WhatsApp-jonoihin",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Lisää käyttäjä WhatsApp-jonoihin",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Valitut WhatsApp -jonot",
+		"SELECTED_WHATSAPPACCOUNTS": "Valitut WhatsApp-tilit",
+		"SELECTED_WHATSAPPQUEUES": "Valitut WhatsApp -jonot",
+		"USERADD_WHATSAPPACCOUNTS": "Lisää WhatsApp-tili käyttäjälle",
+		"USERADD_WHATSAPPQUEUES": "Lisää Whataspp Queue käyttäjälle",
+		"WHATSAPP": "WhatsApp-liitin",
+		"WHATSAPPCAPACITY": "WhatsApp-liittimen kapasiteetti"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/fr.json b/public/app/main/apps/staff/i18n/fr.json
index b79b201..25a2827 100644
--- a/public/app/main/apps/staff/i18n/fr.json
+++ b/public/app/main/apps/staff/i18n/fr.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Champ obligatoire",
 			"USERPROFILE_REQUIRED": "Champ obligatoire",
 			"PASSWORD_OLDPASSWORD_MATCH": "Le nouveau mot de passe doit être différent du précédent",
-			"CONFIRM_REQUIRED": "Champ obligatoire"
+			"CONFIRM_REQUIRED": "Champ obligatoire",
+			"WHATSAPPCAPACITY_REQUIRED": "Champ obligatoire"
 		},
 		"ACCOUNT": "Compte",
 		"VOICE": "Voix",
@@ -112,7 +113,8 @@
 			"APIKEY": "Veuillez utiliser le bouton 'Gestionnaire de clés d'API' sur la barre d'outils pour gérer cette clé.",
 			"ENABLEAUTOMATICSCREENRECORDING": "La fonctionnalité est disponible uniquement pour le canal vocal",
 			"BLOCKED": "Verrouiller / Déverrouiller l'accès",
-			"DISABLED": "sélectionner pour désactiver / désélectionner pour réactiver"
+			"DISABLED": "sélectionner pour désactiver / désélectionner pour réactiver",
+			"WHATSAPPCAPACITY": "Nombre maximum d'interactions de canal simultanées par agent (0 = illimité)"
 		},
 		"NEW_PASSWORD": "Nouveau mot de passe",
 		"CONFIRM_PASSWORD": "Confirmer le mot de passe",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Activer l'enregistrement vidéo",
 		"BLOCKED": "Fermé à clé",
 		"DISABLED": "Désactivée",
-		"REGENERATE": "Régénérer"
+		"REGENERATE": "Régénérer",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Toutes les files d'attente WhatsApp",
+		"ALL_WHATSAPPACCOUNTS": "Tous les comptes WhatsApp",
+		"ALL_WHATSAPPQUEUES": "Toutes les files d'attente Whataspp",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Ajouter un agent aux files d'attente WhatsApp",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Ajouter un utilisateur aux files d'attente WhatsApp",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Files d'attente WhatsApp sélectionnées",
+		"SELECTED_WHATSAPPACCOUNTS": "Comptes WhatsApp sélectionnés",
+		"SELECTED_WHATSAPPQUEUES": "Files d'attente WhatsApp sélectionnées",
+		"USERADD_WHATSAPPACCOUNTS": "Ajouter un compte WhatsApp à l'utilisateur",
+		"USERADD_WHATSAPPQUEUES": "Ajouter la file d'attente Whataspp à l'utilisateur",
+		"WHATSAPP": "Connecteur WhatsApp",
+		"WHATSAPPCAPACITY": "Capacité du connecteur WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/he.json b/public/app/main/apps/staff/i18n/he.json
index fc51df7..5f83179 100644
--- a/public/app/main/apps/staff/i18n/he.json
+++ b/public/app/main/apps/staff/i18n/he.json
@@ -87,7 +87,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "שדה חובה",
 			"USERPROFILE_REQUIRED": "שדה חובה",
 			"PASSWORD_OLDPASSWORD_MATCH": "הסיסמה החדשה חייבת להיות שונה מזו הקודמת",
-			"CONFIRM_REQUIRED": "שדה חובה"
+			"CONFIRM_REQUIRED": "שדה חובה",
+			"WHATSAPPCAPACITY_REQUIRED": "שדה חובה"
 		},
 		"ACCOUNT": "חשבון",
 		"VOICE": "קול",
@@ -125,7 +126,8 @@
 			"APIKEY": "אנא השתמש בכפתור 'מנהל מקש API' בסרגל הכלים כדי לנהל מפתח זה",
 			"ENABLEAUTOMATICSCREENRECORDING": "הפונקציונליות זמינה רק לערוץ קולי",
 			"BLOCKED": "נעילה / ביטול נעילת גישה",
-			"DISABLED": "בחר לבטל / לבטל את הבחירה להפעלה מחדש"
+			"DISABLED": "בחר לבטל / לבטל את הבחירה להפעלה מחדש",
+			"WHATSAPPCAPACITY": "המספר המרבי של אינטראקציות ערוצים במקביל לסוכן (0 = בלתי מוגבל)"
 		},
 		"NEW_PASSWORD": "סיסמה חדשה",
 		"CONFIRM_PASSWORD": "אשר סיסמה",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "אפשר הקלטת וידאו",
 		"BLOCKED": "נעול",
 		"DISABLED": "מבוטל",
-		"REGENERATE": "התחדש"
+		"REGENERATE": "התחדש",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "כל התורים ב- WhatsApp",
+		"ALL_WHATSAPPACCOUNTS": "כל חשבונות WhatsApp",
+		"ALL_WHATSAPPQUEUES": "כל התורים ב- Whataspp",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "הוסף סוכן לתורי WhatsApp",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "הוסף משתמש לתורי WhatsApp",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "תורי WhatsApp שנבחרו",
+		"SELECTED_WHATSAPPACCOUNTS": "חשבונות WhatsApp שנבחרו",
+		"SELECTED_WHATSAPPQUEUES": "תורי WhatsApp שנבחרו",
+		"USERADD_WHATSAPPACCOUNTS": "הוסף חשבון WhatsApp למשתמש",
+		"USERADD_WHATSAPPQUEUES": "הוסף תור Whataspp למשתמש",
+		"WHATSAPP": "מחבר WhatsApp",
+		"WHATSAPPCAPACITY": "קיבולת מחבר WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/hi.json b/public/app/main/apps/staff/i18n/hi.json
index 4b120f3..e685f9f 100644
--- a/public/app/main/apps/staff/i18n/hi.json
+++ b/public/app/main/apps/staff/i18n/hi.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "आवश्यक स्थान",
 			"USERPROFILE_REQUIRED": "आवश्यक स्थान",
 			"PASSWORD_OLDPASSWORD_MATCH": "नया पासवर्ड पिछले एक से अलग होना चाहिए",
-			"CONFIRM_REQUIRED": "आवश्यक स्थान"
+			"CONFIRM_REQUIRED": "आवश्यक स्थान",
+			"WHATSAPPCAPACITY_REQUIRED": "आवश्यक स्थान"
 		},
 		"ACCOUNT": "खाते",
 		"VOICE": "आवाज",
@@ -112,7 +113,8 @@
 			"APIKEY": "कृपया इस कुंजी को प्रबंधित करने के लिए टूलबार पर 'एपीआई कुंजी प्रबंधक' बटन का उपयोग करें",
 			"ENABLEAUTOMATICSCREENRECORDING": "कार्यक्षमता केवल वॉयस चैनल के लिए उपलब्ध है",
 			"BLOCKED": "लॉक / अनलॉक का उपयोग",
-			"DISABLED": "पुनः सक्रिय करने के लिए निष्क्रिय / अचयनित करने का चयन करें"
+			"DISABLED": "पुनः सक्रिय करने के लिए निष्क्रिय / अचयनित करने का चयन करें",
+			"WHATSAPPCAPACITY": "एजेंट के प्रति समवर्ती चैनल इंटरैक्शन की अधिकतम संख्या (0 = असीमित)"
 		},
 		"NEW_PASSWORD": "नया पासवर्ड",
 		"CONFIRM_PASSWORD": "पासवर्ड की पुष्टि करें:",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "वीडियो रिकॉर्डिंग सक्षम करें",
 		"BLOCKED": "बंद",
 		"DISABLED": "निष्क्रिय",
-		"REGENERATE": "पुनः जेनरेट"
+		"REGENERATE": "पुनः जेनरेट",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "सभी WhatsApp कतारें",
+		"ALL_WHATSAPPACCOUNTS": "सभी व्हाट्सएप अकाउंट",
+		"ALL_WHATSAPPQUEUES": "सभी व्हाट्सएप कतार",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "एजेंट को व्हाट्सएप कतार में जोड़ें",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "व्हाट्सएप कतार में उपयोगकर्ता जोड़ें",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "चयनित व्हाट्सएप कतारें",
+		"SELECTED_WHATSAPPACCOUNTS": "व्हाट्सएप अकाउंट चुने",
+		"SELECTED_WHATSAPPQUEUES": "चयनित व्हाट्सएप कतारें",
+		"USERADD_WHATSAPPACCOUNTS": "उपयोगकर्ता के लिए WhatsApp खाता जोड़ें",
+		"USERADD_WHATSAPPQUEUES": "उपयोगकर्ता में व्हाट्सएप कतार जोड़ें",
+		"WHATSAPP": "WhatsApp कनेक्टर",
+		"WHATSAPPCAPACITY": "WhatsApp कनेक्टर क्षमता"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/id.json b/public/app/main/apps/staff/i18n/id.json
index 656806e..a5a9a06 100644
--- a/public/app/main/apps/staff/i18n/id.json
+++ b/public/app/main/apps/staff/i18n/id.json
@@ -37,7 +37,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Bidang wajib",
 			"USERPROFILE_REQUIRED": "Bidang wajib",
 			"PASSWORD_OLDPASSWORD_MATCH": "Kata sandi baru harus berbeda dari yang sebelumnya",
-			"CONFIRM_REQUIRED": "Bidang wajib"
+			"CONFIRM_REQUIRED": "Bidang wajib",
+			"WHATSAPPCAPACITY_REQUIRED": "Bidang wajib"
 		},
 		"HELP": {
 			"ALLOWCODECS": "Membiarkan Codec dalam urutan preferensi",
@@ -64,7 +65,8 @@
 			"APIKEY": "Silakan gunakan tombol 'Manajer kunci API' pada bilah alat untuk mengelola kunci ini",
 			"ENABLEAUTOMATICSCREENRECORDING": "Fungsionalitas hanya tersedia untuk saluran suara",
 			"BLOCKED": "Kunci / Buka kunci akses",
-			"DISABLED": "pilih untuk menonaktifkan / membatalkan pilihan untuk mengaktifkan kembali"
+			"DISABLED": "pilih untuk menonaktifkan / membatalkan pilihan untuk mengaktifkan kembali",
+			"WHATSAPPCAPACITY": "Jumlah maksimum interaksi saluran serentak per agen (0 = tidak terbatas)"
 		},
 		"ACCOUNT": "Rekening",
 		"ACCOUNTNAME": "Nama akun",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Aktifkan Perekaman Video",
 		"BLOCKED": "Terkunci",
 		"DISABLED": "Dinonaktifkan",
-		"REGENERATE": "Diperbaiki"
+		"REGENERATE": "Diperbaiki",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Semua Antrean WhatsApp",
+		"ALL_WHATSAPPACCOUNTS": "Semua Akun WhatsApp",
+		"ALL_WHATSAPPQUEUES": "Semua Antrian Whataspp",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Tambahkan Agen ke Antrean WhatsApp",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Tambahkan Pengguna ke Antrean WhatsApp",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Antrean WhatsApp yang Dipilih",
+		"SELECTED_WHATSAPPACCOUNTS": "Akun WhatsApp yang Dipilih",
+		"SELECTED_WHATSAPPQUEUES": "Antrean WhatsApp yang Dipilih",
+		"USERADD_WHATSAPPACCOUNTS": "Tambahkan Akun WhatsApp ke Pengguna",
+		"USERADD_WHATSAPPQUEUES": "Tambahkan Whataspp Queue to User",
+		"WHATSAPP": "Konektor WhatsApp",
+		"WHATSAPPCAPACITY": "Kapasitas Konektor WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/it.json b/public/app/main/apps/staff/i18n/it.json
index 4beac15..e5debc6 100644
--- a/public/app/main/apps/staff/i18n/it.json
+++ b/public/app/main/apps/staff/i18n/it.json
@@ -89,7 +89,8 @@
 			"SECURE_PASSWORD_PATTERN": "La password deve contenere almeno 8 caratteri, di cui almeno: una lettera maiuscola, una lettera minuscola, un numero e un carattere speciale tra i seguenti ~!@#$%^&-_=+[{]}.",
 			"CRUDPERMISSIONS_REQUIRED": "Campo obbligatorio",
 			"USERPROFILE_REQUIRED": "Campo obbligatorio",
-			"PASSWORD_OLDPASSWORD_MATCH": "La nuova password deve essere diversa dalla precedente"
+			"PASSWORD_OLDPASSWORD_MATCH": "La nuova password deve essere diversa dalla precedente",
+			"WHATSAPPCAPACITY_REQUIRED": "Campo obbligatorio"
 		},
 		"ACCOUNT": "Account",
 		"VOICE": "Voce",
@@ -127,7 +128,8 @@
 			"APIKEY": "Utilizzare il pulsante \"Gestione API Key\" sulla barra degli strumenti per gestire questa chiave",
 			"ENABLEAUTOMATICSCREENRECORDING": " La funzionalità è attiva solo per il canale voce",
 			"BLOCKED": "Blocca / sblocca l'accesso",
-			"DISABLED": "selezionare per disattivare / deselezionare per riattivare"
+			"DISABLED": "selezionare per disattivare / deselezionare per riattivare",
+			"WHATSAPPCAPACITY": "Numero massimo di interazioni di canale simultanee per agente (0 = illimitato)"
 		},
 		"NEW_PASSWORD": "Nuova Password",
 		"CONFIRM_PASSWORD": "Conferma Password",
@@ -342,6 +344,18 @@
 		"REMOVE": "Rimuovere",
 		"ENABLEVIDEOECORDING": "Abilita registrazione video",
 		"BLOCKED": "Bloccato",
-		"DISABLED": "Disattivato"
+		"DISABLED": "Disattivato",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Tutte le code di WhatsApp",
+		"ALL_WHATSAPPACCOUNTS": "Tutti gli account WhatsApp",
+		"ALL_WHATSAPPQUEUES": "Tutte le code Whataspp",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Aggiungi agente alle code di WhatsApp",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Aggiungi utente alle code di WhatsApp",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Code WhatsApp selezionate",
+		"SELECTED_WHATSAPPACCOUNTS": "Account WhatsApp selezionati",
+		"SELECTED_WHATSAPPQUEUES": "Code WhatsApp selezionate",
+		"USERADD_WHATSAPPACCOUNTS": "Aggiungi account WhatsApp all'utente",
+		"USERADD_WHATSAPPQUEUES": "Aggiungi coda Whataspp all'utente",
+		"WHATSAPP": "Connettore WhatsApp",
+		"WHATSAPPCAPACITY": "Capacità del connettore WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/ja.json b/public/app/main/apps/staff/i18n/ja.json
index 3ae2b97..808126f 100644
--- a/public/app/main/apps/staff/i18n/ja.json
+++ b/public/app/main/apps/staff/i18n/ja.json
@@ -37,7 +37,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "必須フィールド",
 			"USERPROFILE_REQUIRED": "必須フィールド",
 			"PASSWORD_OLDPASSWORD_MATCH": "新しいパスワードは以前のものと異なる必要があります",
-			"CONFIRM_REQUIRED": "必須フィールド"
+			"CONFIRM_REQUIRED": "必須フィールド",
+			"WHATSAPPCAPACITY_REQUIRED": "必須フィールド"
 		},
 		"HELP": {
 			"ALLOWCODECS": "許可されたコーデックの優先順位",
@@ -64,7 +65,8 @@
 			"APIKEY": "このキーを管理するには、ツールバーの「APIキーマネージャー」ボタンを使用してください",
 			"ENABLEAUTOMATICSCREENRECORDING": "この機能は音声チャンネルでのみ利用可能です",
 			"BLOCKED": "アクセスのロック/ロック解除",
-			"DISABLED": "非アクティブ化を選択/再アクティブ化を選択解除"
+			"DISABLED": "非アクティブ化を選択/再アクティブ化を選択解除",
+			"WHATSAPPCAPACITY": "エージェントごとの同時チャネル相互作用の最大数（0 =無制限）"
 		},
 		"ACCOUNT": "アカウント",
 		"ACCOUNTNAME": "アカウント名",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "ビデオ録画を有効にする",
 		"BLOCKED": "ロック済み",
 		"DISABLED": "無効化",
-		"REGENERATE": "再生成"
+		"REGENERATE": "再生成",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "すべてのWhatsAppキュー",
+		"ALL_WHATSAPPACCOUNTS": "すべてのWhatsAppアカウント",
+		"ALL_WHATSAPPQUEUES": "すべてのWhatasppキュー",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "WhatsAppキューへのエージェントの追加",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "WhatsAppキューへのユーザーの追加",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "選択されたWhatsAppキュー",
+		"SELECTED_WHATSAPPACCOUNTS": "選択されたWhatsAppアカウント",
+		"SELECTED_WHATSAPPQUEUES": "選択されたWhatsAppキュー",
+		"USERADD_WHATSAPPACCOUNTS": "WhatsAppアカウントをユーザーに追加",
+		"USERADD_WHATSAPPQUEUES": "Whatasppキューをユーザーに追加する",
+		"WHATSAPP": "WhatsAppコネクタ",
+		"WHATSAPPCAPACITY": "WhatsAppコネクタ容量"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/ko.json b/public/app/main/apps/staff/i18n/ko.json
index 59696ea..492d830 100644
--- a/public/app/main/apps/staff/i18n/ko.json
+++ b/public/app/main/apps/staff/i18n/ko.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "필수 필드",
 			"USERPROFILE_REQUIRED": "필수 필드",
 			"PASSWORD_OLDPASSWORD_MATCH": "새 비밀번호는 이전 비밀번호와 달라야합니다",
-			"CONFIRM_REQUIRED": "필수 필드"
+			"CONFIRM_REQUIRED": "필수 필드",
+			"WHATSAPPCAPACITY_REQUIRED": "필수 필드"
 		},
 		"ACCOUNT": "계정",
 		"VOICE": "음성",
@@ -112,7 +113,8 @@
 			"APIKEY": "이 키를 관리하려면 툴바의 'API 키 관리자'버튼을 사용하십시오",
 			"ENABLEAUTOMATICSCREENRECORDING": "이 기능은 음성 채널에만 사용할 수 있습니다",
 			"BLOCKED": "액세스 잠금 / 잠금 해제",
-			"DISABLED": "비활성화하려면 선택 / 비활성화하려면 선택 취소"
+			"DISABLED": "비활성화하려면 선택 / 비활성화하려면 선택 취소",
+			"WHATSAPPCAPACITY": "에이전트 당 최대 동시 채널 상호 작용 수 (0 = 무제한)"
 		},
 		"NEW_PASSWORD": "신규 비밀번호",
 		"CONFIRM_PASSWORD": "비밀번호 확인",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "비디오 녹화 활성화",
 		"BLOCKED": "잠김",
 		"DISABLED": "비활성화",
-		"REGENERATE": "재생"
+		"REGENERATE": "재생",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "모든 WhatsApp 대기열",
+		"ALL_WHATSAPPACCOUNTS": "모든 WhatsApp 계정",
+		"ALL_WHATSAPPQUEUES": "모든 Whataspp 대기열",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "WhatsApp 대기열에 에이전트 추가",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "WhatsApp 대기열에 사용자 추가",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "선택된 WhatsApp 대기열",
+		"SELECTED_WHATSAPPACCOUNTS": "선택된 WhatsApp 계정",
+		"SELECTED_WHATSAPPQUEUES": "선택된 WhatsApp 대기열",
+		"USERADD_WHATSAPPACCOUNTS": "사용자에게 WhatsApp 계정 추가",
+		"USERADD_WHATSAPPQUEUES": "사용자에게 Whataspp 대기열 추가",
+		"WHATSAPP": "WhatsApp 커넥터",
+		"WHATSAPPCAPACITY": "WhatsApp 커넥터 용량"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/lv.json b/public/app/main/apps/staff/i18n/lv.json
index b935084..280b4da 100644
--- a/public/app/main/apps/staff/i18n/lv.json
+++ b/public/app/main/apps/staff/i18n/lv.json
@@ -37,7 +37,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Obligāts lauks",
 			"USERPROFILE_REQUIRED": "Obligāts lauks",
 			"PASSWORD_OLDPASSWORD_MATCH": "Jaunajai parolei jābūt atšķirīgai no iepriekšējās",
-			"CONFIRM_REQUIRED": "Obligāts lauks"
+			"CONFIRM_REQUIRED": "Obligāts lauks",
+			"WHATSAPPCAPACITY_REQUIRED": "Obligāts lauks"
 		},
 		"HELP": {
 			"LAST_PASSWORD_RESET_AT": "Pēdējais datums un laiks, kad parole ir mainīta. Ja ir iespējots vispārējais iestatījums, paroles derīguma termiņš beidzas pēc 90 dienām.",
@@ -64,7 +65,8 @@
 			"APIKEY": "Lai pārvaldītu šo atslēgu, izmantojiet rīkjoslas pogu “API atslēgu pārvaldnieks”",
 			"ENABLEAUTOMATICSCREENRECORDING": "Funkcija ir pieejama tikai balss kanālam",
 			"BLOCKED": "Bloķēt / atbloķēt piekļuvi",
-			"DISABLED": "atlasiet, lai deaktivizētu / noņemtu atlasi, lai atkārtoti aktivizētu"
+			"DISABLED": "atlasiet, lai deaktivizētu / noņemtu atlasi, lai atkārtoti aktivizētu",
+			"WHATSAPPCAPACITY": "Maksimālais vienlaicīgu kanālu mijiedarbību skaits vienam aģentam (0 = neierobežots)"
 		},
 		"NO_PASSWORD_CHANGE": "Nav paroles maiņas",
 		"SECURITY_SUITE": "Drošības komplekts",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Iespējot video ierakstīšanu",
 		"BLOCKED": "Slēgts",
 		"DISABLED": "Deaktivizēts",
-		"REGENERATE": "Atjaunot"
+		"REGENERATE": "Atjaunot",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Visas WhatsApp rindas",
+		"ALL_WHATSAPPACCOUNTS": "Visi WhatsApp konti",
+		"ALL_WHATSAPPQUEUES": "Visas Kasaspa rindas",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Pievienojiet aģentu WhatsApp rindām",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Pievienojiet lietotāju WhatsApp rindām",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Atlasītās WhatsApp rindas",
+		"SELECTED_WHATSAPPACCOUNTS": "Atlasītie WhatsApp konti",
+		"SELECTED_WHATSAPPQUEUES": "Atlasītās WhatsApp rindas",
+		"USERADD_WHATSAPPACCOUNTS": "Pievienojiet WhatsApp kontu lietotājam",
+		"USERADD_WHATSAPPQUEUES": "Pievienojiet lietotājam Whataspp Queue",
+		"WHATSAPP": "WhatsApp savienotājs",
+		"WHATSAPPCAPACITY": "WhatsApp savienotāja jauda"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/nl.json b/public/app/main/apps/staff/i18n/nl.json
index 15438d2..edaea60 100644
--- a/public/app/main/apps/staff/i18n/nl.json
+++ b/public/app/main/apps/staff/i18n/nl.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Verplicht veld",
 			"USERPROFILE_REQUIRED": "Verplicht veld",
 			"PASSWORD_OLDPASSWORD_MATCH": "Nieuw wachtwoord moet verschillen van het vorige",
-			"CONFIRM_REQUIRED": "Verplicht veld"
+			"CONFIRM_REQUIRED": "Verplicht veld",
+			"WHATSAPPCAPACITY_REQUIRED": "Verplicht veld"
 		},
 		"ACCOUNT": "Account",
 		"VOICE": "Spraak",
@@ -112,7 +113,8 @@
 			"APIKEY": "Gebruik de knop 'API-sleutelbeheer' op de werkbalk om deze sleutel te beheren",
 			"ENABLEAUTOMATICSCREENRECORDING": "De functionaliteit is alleen beschikbaar voor spraakkanaal",
 			"BLOCKED": "Toegang vergrendelen / ontgrendelen",
-			"DISABLED": "selecteer om te deactiveren / deselecteer om te reactiveren"
+			"DISABLED": "selecteer om te deactiveren / deselecteer om te reactiveren",
+			"WHATSAPPCAPACITY": "Maximaal aantal gelijktijdige kanaalinteracties per agent (0 = onbeperkt)"
 		},
 		"NEW_PASSWORD": "Nieuw wachtwoord",
 		"CONFIRM_PASSWORD": "Wachtwoord bevestigen",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Schakel video-opname in",
 		"BLOCKED": "Op slot",
 		"DISABLED": "Gedeactiveerd",
-		"REGENERATE": "Regenereren"
+		"REGENERATE": "Regenereren",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-wachtrijen",
+		"ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-accounts",
+		"ALL_WHATSAPPQUEUES": "Alle Whataspp-wachtrijen",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Voeg agent toe aan WhatsApp-wachtrijen",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Gebruiker toevoegen aan WhatsApp-wachtrijen",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Geselecteerde WhatsApp-wachtrijen",
+		"SELECTED_WHATSAPPACCOUNTS": "Geselecteerde WhatsApp-accounts",
+		"SELECTED_WHATSAPPQUEUES": "Geselecteerde WhatsApp-wachtrijen",
+		"USERADD_WHATSAPPACCOUNTS": "Voeg WhatsApp-account toe aan gebruiker",
+		"USERADD_WHATSAPPQUEUES": "Voeg Whataspp-wachtrij toe aan gebruiker",
+		"WHATSAPP": "WhatsApp-aansluiting",
+		"WHATSAPPCAPACITY": "WhatsApp Connector Capaciteit"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/no.json b/public/app/main/apps/staff/i18n/no.json
index e69907a..2a8af27 100644
--- a/public/app/main/apps/staff/i18n/no.json
+++ b/public/app/main/apps/staff/i18n/no.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Obligatoriske felt",
 			"USERPROFILE_REQUIRED": "Obligatoriske felt",
 			"PASSWORD_OLDPASSWORD_MATCH": "Det nye passordet må være forskjellig fra det forrige",
-			"CONFIRM_REQUIRED": "Obligatoriske felt"
+			"CONFIRM_REQUIRED": "Obligatoriske felt",
+			"WHATSAPPCAPACITY_REQUIRED": "Obligatoriske felt"
 		},
 		"ACCOUNT": "Konto",
 		"VOICE": "Stemme",
@@ -112,7 +113,8 @@
 			"APIKEY": "Bruk knappen API-nøkkelbehandling på verktøylinjen for å administrere denne nøkkelen",
 			"ENABLEAUTOMATICSCREENRECORDING": "Funksjonaliteten er bare tilgjengelig for talekanal",
 			"BLOCKED": "Lås / lås opp tilgangen",
-			"DISABLED": "Velg for å deaktivere / fjerne merket for å aktivere på nytt"
+			"DISABLED": "Velg for å deaktivere / fjerne merket for å aktivere på nytt",
+			"WHATSAPPCAPACITY": "Maksimalt antall samtidig kanalinteraksjoner per agent (0 = ubegrenset)"
 		},
 		"NEW_PASSWORD": "Nytt passord",
 		"CONFIRM_PASSWORD": "Bekreft passord",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Aktiver videoopptak",
 		"BLOCKED": "Låst",
 		"DISABLED": "Deaktivert",
-		"REGENERATE": "regenerere"
+		"REGENERATE": "regenerere",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Alle WhatsApp-køer",
+		"ALL_WHATSAPPACCOUNTS": "Alle WhatsApp-kontoer",
+		"ALL_WHATSAPPQUEUES": "Alle Whataspp-køer",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Legg agent til WhatsApp-køer",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Legg til bruker i WhatsApp-køer",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Valgte WhatsApp-køer",
+		"SELECTED_WHATSAPPACCOUNTS": "Valgte WhatsApp-kontoer",
+		"SELECTED_WHATSAPPQUEUES": "Valgte WhatsApp-køer",
+		"USERADD_WHATSAPPACCOUNTS": "Legg WhatsApp-konto til brukeren",
+		"USERADD_WHATSAPPQUEUES": "Legg til Whataspp-køen til brukeren",
+		"WHATSAPP": "WhatsApp-kontakt",
+		"WHATSAPPCAPACITY": "WhatsApp-kontaktskapasitet"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/pl.json b/public/app/main/apps/staff/i18n/pl.json
index 27007ae..e11d53d 100644
--- a/public/app/main/apps/staff/i18n/pl.json
+++ b/public/app/main/apps/staff/i18n/pl.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Pole obowiązkowe",
 			"USERPROFILE_REQUIRED": "Pole obowiązkowe",
 			"PASSWORD_OLDPASSWORD_MATCH": "Nowe hasło musi różnić się od poprzedniego",
-			"CONFIRM_REQUIRED": "Pole obowiązkowe"
+			"CONFIRM_REQUIRED": "Pole obowiązkowe",
+			"WHATSAPPCAPACITY_REQUIRED": "Pole obowiązkowe"
 		},
 		"ACCOUNT": "Konto",
 		"VOICE": "Głos",
@@ -112,7 +113,8 @@
 			"APIKEY": "Użyj przycisku „Menedżer kluczy API” na pasku narzędzi, aby zarządzać tym kluczem",
 			"ENABLEAUTOMATICSCREENRECORDING": "Ta funkcja jest dostępna tylko dla kanału głosowego",
 			"BLOCKED": "Zablokuj / odblokuj dostęp",
-			"DISABLED": "wybierz, aby dezaktywować / odznaczyć, aby reaktywować"
+			"DISABLED": "wybierz, aby dezaktywować / odznaczyć, aby reaktywować",
+			"WHATSAPPCAPACITY": "Maksymalna liczba jednoczesnych interakcji kanałów na agenta (0 = nieograniczona)"
 		},
 		"NEW_PASSWORD": "Nowe hasło",
 		"CONFIRM_PASSWORD": "Potwierdź hasło",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Włącz nagrywanie wideo",
 		"BLOCKED": "Zablokowany",
 		"DISABLED": "Dezaktywowano",
-		"REGENERATE": "Zregenerować"
+		"REGENERATE": "Zregenerować",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Wszystkie kolejki WhatsApp",
+		"ALL_WHATSAPPACCOUNTS": "Wszystkie konta WhatsApp",
+		"ALL_WHATSAPPQUEUES": "Wszystkie kolejki Whataspp",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Dodaj agenta do kolejek WhatsApp",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Dodaj użytkownika do kolejek WhatsApp",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Wybrane kolejki WhatsApp",
+		"SELECTED_WHATSAPPACCOUNTS": "Wybrane konta WhatsApp",
+		"SELECTED_WHATSAPPQUEUES": "Wybrane kolejki WhatsApp",
+		"USERADD_WHATSAPPACCOUNTS": "Dodaj konto WhatsApp do użytkownika",
+		"USERADD_WHATSAPPQUEUES": "Dodaj kolejkę Whataspp do użytkownika",
+		"WHATSAPP": "Złącze WhatsApp",
+		"WHATSAPPCAPACITY": "Pojemność złącza WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/pt-BR.json b/public/app/main/apps/staff/i18n/pt-BR.json
index 5438dea..1b30079 100644
--- a/public/app/main/apps/staff/i18n/pt-BR.json
+++ b/public/app/main/apps/staff/i18n/pt-BR.json
@@ -87,7 +87,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Campo obrigatório",
 			"USERPROFILE_REQUIRED": "Campo obrigatório",
 			"PASSWORD_OLDPASSWORD_MATCH": "A nova senha deve ser diferente da anterior",
-			"CONFIRM_REQUIRED": "Campo obrigatório"
+			"CONFIRM_REQUIRED": "Campo obrigatório",
+			"WHATSAPPCAPACITY_REQUIRED": "Campo obrigatório"
 		},
 		"ACCOUNT": "Conta",
 		"VOICE": "Voz",
@@ -125,7 +126,8 @@
 			"APIKEY": "Use o botão 'API key manager' na barra de ferramentas para gerenciar essa chave",
 			"ENABLEAUTOMATICSCREENRECORDING": "A funcionalidade está disponível apenas para canal de voz",
 			"BLOCKED": "Bloquear / desbloquear acesso",
-			"DISABLED": "selecione para desativar / desmarcar para reativar"
+			"DISABLED": "selecione para desativar / desmarcar para reativar",
+			"WHATSAPPCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)"
 		},
 		"NEW_PASSWORD": "Nova Senha",
 		"CONFIRM_PASSWORD": "Confirmar a Senha",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Ativar gravação de vídeo",
 		"BLOCKED": "Bloqueado",
 		"DISABLED": "Desativado",
-		"REGENERATE": "Regenerado"
+		"REGENERATE": "Regenerado",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Todas as filas de WhatsApp",
+		"ALL_WHATSAPPACCOUNTS": "Todas as contas WhatsApp",
+		"ALL_WHATSAPPQUEUES": "Todas as filas Whataspp",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar agente às filas do WhatsApp",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Adicionar usuário às filas do WhatsApp",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Filas de WhatsApp selecionadas",
+		"SELECTED_WHATSAPPACCOUNTS": "Contas WhatsApp selecionadas",
+		"SELECTED_WHATSAPPQUEUES": "Filas de WhatsApp selecionadas",
+		"USERADD_WHATSAPPACCOUNTS": "Adicionar conta WhatsApp ao usuário",
+		"USERADD_WHATSAPPQUEUES": "Adicionar fila Whataspp ao usuário",
+		"WHATSAPP": "Conector WhatsApp",
+		"WHATSAPPCAPACITY": "Capacidade do conector WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/pt-PT.json b/public/app/main/apps/staff/i18n/pt-PT.json
index 3624114..ef1fbd9 100644
--- a/public/app/main/apps/staff/i18n/pt-PT.json
+++ b/public/app/main/apps/staff/i18n/pt-PT.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Campo obrigatório",
 			"USERPROFILE_REQUIRED": "Campo obrigatório",
 			"PASSWORD_OLDPASSWORD_MATCH": "A nova senha deve ser diferente da anterior",
-			"CONFIRM_REQUIRED": "Campo obrigatório"
+			"CONFIRM_REQUIRED": "Campo obrigatório",
+			"WHATSAPPCAPACITY_REQUIRED": "Campo obrigatório"
 		},
 		"ACCOUNT": "Conta",
 		"VOICE": "Voz",
@@ -112,7 +113,8 @@
 			"APIKEY": "Use o botão 'API key manager' na barra de ferramentas para gerenciar essa chave",
 			"ENABLEAUTOMATICSCREENRECORDING": "A funcionalidade está disponível apenas para canal de voz",
 			"BLOCKED": "Bloquear / desbloquear acesso",
-			"DISABLED": "selecione para desativar / desmarcar para reativar"
+			"DISABLED": "selecione para desativar / desmarcar para reativar",
+			"WHATSAPPCAPACITY": "Número máximo de interações de canal simultâneas por agente (0 = ilimitado)"
 		},
 		"NEW_PASSWORD": "Nova Senha",
 		"CONFIRM_PASSWORD": "Confirmar Senha",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Ativar gravação de vídeo",
 		"BLOCKED": "Bloqueado",
 		"DISABLED": "Desativado",
-		"REGENERATE": "Regenerado"
+		"REGENERATE": "Regenerado",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Todas as filas de WhatsApp",
+		"ALL_WHATSAPPACCOUNTS": "Todas as contas WhatsApp",
+		"ALL_WHATSAPPQUEUES": "Todas as filas Whataspp",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Adicionar agente às filas do WhatsApp",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Adicionar usuário às filas do WhatsApp",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Filas de WhatsApp selecionadas",
+		"SELECTED_WHATSAPPACCOUNTS": "Contas WhatsApp selecionadas",
+		"SELECTED_WHATSAPPQUEUES": "Filas de WhatsApp selecionadas",
+		"USERADD_WHATSAPPACCOUNTS": "Adicionar conta WhatsApp ao usuário",
+		"USERADD_WHATSAPPQUEUES": "Adicionar fila Whataspp ao usuário",
+		"WHATSAPP": "Conector WhatsApp",
+		"WHATSAPPCAPACITY": "Capacidade do conector WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/ru.json b/public/app/main/apps/staff/i18n/ru.json
index fba9a29..208496e 100644
--- a/public/app/main/apps/staff/i18n/ru.json
+++ b/public/app/main/apps/staff/i18n/ru.json
@@ -1,340 +1,342 @@
 {
 	"STAFF": {
-		"CONTEXT": "Контекст",
-		"RINGINUSE": "Вызов используется",
+		"CONTEXT": "Контексте",
+		"RINGINUSE": "Кольцо в использовании",
 		"USERS": "Пользователи",
-		"AGENTS": "Агенты",
-		"TOGGLE_SIDENAV": "Переключение sidenav",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"AGENTS": "Операторы",
+		"TOGGLE_SIDENAV": "Боковая панель навигации - переключения",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"BACK": "Назад",
-		"MULTI_SELECT_TOGGLE": "множественный выбор: переключение",
+		"MULTI_SELECT_TOGGLE": "Выберите нескольких переключения",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
+		"SELECT_NONE": "Выберите пункт None",
 		"SELECTED": "Выбранные",
 		"DELETE_SELECTED": "Удалить выбранные",
-		"EXPORT_SELECTED": "Экспортировать выбранные",
+		"EXPORT_SELECTED": "Экспорт выбранных",
 		"ALL_USERS": "Все пользователи",
-		"ALL_AGENTS": "Все агенты",
-		"SORT": "Сортировать",
+		"ALL_AGENTS": "Все операторы",
+		"SORT": "Порядок сортировки",
 		"NAME": "Имя",
-		"FULLNAME": "Полное имя",
-		"A_TO_Z": "(От А до Я)",
-		"Z_TO_A": "(От Я до А)",
-		"MORE": "Больше",
+		"FULLNAME": "Полное Имя",
+		"A_TO_Z": "(A-Z)",
+		"Z_TO_A": "(Z)",
+		"MORE": "Более",
 		"DELETE_USER": "Удалить пользователя",
 		"EDIT_USER": "Редактировать пользователя",
 		"DELETE_AGENT": "Удалить агента",
-		"EDIT_AGENT": "Редактировать агента",
+		"EDIT_AGENT": "Редактирование оператора",
 		"DELETE": "Удалить",
-		"SAVE": "СОХРАНИТЬ",
-		"ADD_USER": "ДОБАВИТЬ ПОЛЬЗОВАТЕЛЯ",
-		"ADD_AGENT": "ДОБАВИТЬ АГЕНТА",
-		"NO_RESULTS": "Результаты отсутствуют..",
-		"CLOSE_DIALOG": "Закрыть диалог",
+		"SAVE": "Сохранить",
+		"ADD_USER": "Добавить пользователя",
+		"ADD_AGENT": "Добавить оператора",
+		"NO_RESULTS": "Нет результатов.",
+		"CLOSE_DIALOG": "Закрыть диалоговое окно",
 		"NAME_REQUIRED": "Имя (обязательно)",
 		"USERNAME": "Имя пользователя",
 		"SHOW_ALL_FIELDS": "Показать все поля",
 		"PHONE_NUMBER": "Номер телефона",
-		"EMAIL": "Электронная почта",
+		"EMAIL": "Адрес электронной почты",
 		"PASSWORD": "Пароль",
 		"ERRORS": {
-			"FULLNAME_REQUIRED": "Обязательное поле",
-			"USERNAME_REQUIRED": "Обязательное поле",
-			"EMAIL_REQUIRED": "Обязательное поле",
-			"PASSWORD_REQUIRED": "Обязательное поле",
-			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
-			"EMAIL_MUST_VALID": "Неверный формат",
-			"ACCOUNTNAME_REQUIRED": "Обязательное поле",
-			"NAME_REQUIRED": "Обязательное поле",
-			"HOST_REQUIRED": "Обязательное поле",
-			"CHATCAPACITY_REQUIRED": "Обязательное поле",
-			"MAILCAPACITY_REQUIRED": "Обязательное поле",
-			"FAXCAPACITY_REQUIRED": "Обязательное поле",
-			"SMSCAPACITY_REQUIRED": "Обязательное поле",
-			"OPENCHANNELCAPACITY_REQUIRED": "Обязательное поле",
-			"SIPEXPIRES_REQUIRED": "Обязательное поле",
-			"SIPPORT_REQUIRED": "Обязательное поле",
-			"UNCONDITIONALNUMBER_REQUIRED": "Обязательное поле",
-			"NOREPLYNUMBER_REQUIRED": "Обязательное поле",
-			"BUSYNUMBER_REQUIRED": "Обязательное поле",
-			"USERNAME_MUST_VALID_PATTERN": "Неверный формат {{regex}}",
-			"REMOTECONTROLPORT_REQUIRED": "Обязательное поле",
-			"CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
+			"FULLNAME_REQUIRED": "В Fullname не требуется",
+			"USERNAME_REQUIRED": "Имя пользователя не требуется",
+			"EMAIL_REQUIRED": "Адреса электронной почты не требуется",
+			"PASSWORD_REQUIRED": "Пароль не требуется",
+			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
+			"EMAIL_MUST_VALID": "Адреса электронной почты должны быть записаны в действительный формат",
+			"ACCOUNTNAME_REQUIRED": "Имя учетной записи не требуется",
+			"NAME_REQUIRED": "Это имя требуется",
+			"HOST_REQUIRED": "Хост не требуется",
+			"CHATCAPACITY_REQUIRED": "Чат требуется в",
+			"MAILCAPACITY_REQUIRED": "По электронной почте требуется в",
+			"FAXCAPACITY_REQUIRED": "Факс требуется в",
+			"SMSCAPACITY_REQUIRED": "SMS требуется в",
+			"OPENCHANNELCAPACITY_REQUIRED": "Открытого канала требуется в",
+			"SIPEXPIRES_REQUIRED": "Протокол SIP истечения срока действия не требуется",
+			"SIPPORT_REQUIRED": "Протокол SIP порт не требуется",
+			"UNCONDITIONALNUMBER_REQUIRED": "Безоговорочное номер требуется",
+			"NOREPLYNUMBER_REQUIRED": "В ответ не требуется",
+			"BUSYNUMBER_REQUIRED": "Занят номер требуется",
+			"USERNAME_MUST_VALID_PATTERN": "Имя пользователя должно быть действительным {{regex}}",
+			"REMOTECONTROLPORT_REQUIRED": "Пульт дистанционного управления требуется порт",
+			"CHATCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Чат потенциала должно быть больше или равно",
+			"MAILCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "По электронной почте потенциала должно быть больше или равно",
+			"FAXCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Факс потенциала должно быть больше или равно",
+			"OPENCHANNELCAPACITY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Открытого канала потенциала должно быть больше или равно",
 			"AUTOANSWERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
 			"AUTOANSWERDELAY_REQUIRED": "Обязательное поле",
 			"MONITOREXTENSION_REQUIRED": "Обязательное поле",
-			"ENCRYPTION": "Шифрование SRTP (Secure Realtime Protocol)",
+			"ENCRYPTION": "Шифрование протокола SRTP (Secure Realtime Protocol)",
 			"DTLSCERTFILE_REQUIRED": "Обязательное поле",
 			"DTLSPRIVATEKEY_REQUIRED": "Обязательное поле",
-			"SECURE_PASSWORD_PATTERN": "Пароль должен содержать не менее 8 символов, включая 1 строчную букву, 1 заглавную букву, 1 цифру и 1 специальный символ ~!@#$%^&amp;-_=+[{]}.",
+			"SECURE_PASSWORD_PATTERN": "Пароль должен содержать не менее 8 символов и иметь 1 строчный символ, 1 символ верхнего регистра, 1 номер и 1 специальный символ ~! @",
 			"ALLOWCODECS_REQUIRED": "Обязательное поле",
 			"CRUDPERMISSIONS_REQUIRED": "Обязательное поле",
 			"USERPROFILE_REQUIRED": "Обязательное поле",
 			"PASSWORD_OLDPASSWORD_MATCH": "Новый пароль должен отличаться от предыдущего",
-			"CONFIRM_REQUIRED": "Обязательное поле"
+			"CONFIRM_REQUIRED": "Обязательное поле",
+			"WHATSAPPCAPACITY_REQUIRED": "Обязательное поле"
 		},
-		"ACCOUNT": "Учетная запись",
-		"VOICE": "Голос",
-		"CREATED_AT": "Создано на",
+		"ACCOUNT": "Счета",
+		"VOICE": "Голосовой связи",
+		"CREATED_AT": "Созданные в",
 		"ROLE": "Роль",
 		"PERSONAL_INFO": "Личная информация",
 		"DESCRIPTION": "Описание",
-		"CHANGE_AVATAR": "Сменить аватар",
-		"GENERAL": "Общие",
-		"INTERNAL": "Внутренний",
-		"TRANSPORT": "Транспорт",
-		"ALLOWCODECS": "Разрешенные кодеки",
+		"CHANGE_AVATAR": "Изменить аватар",
+		"GENERAL": "Генеральной",
+		"INTERNAL": "Внутренние",
+		"TRANSPORT": "Транспорта",
+		"ALLOWCODECS": "Разрешено кодеки",
 		"HELP": {
-			"ALLOWCODECS": "Разрешенные кодеки в порядке предпочтения",
-			"TRANSPORT": "Установить транспорт по умолчанию в порядке предпочтения",
-			"HOST": "Как найти клиента – IP-адрес или имя хоста. Если вы хотите, чтобы телефон регистрировался самостоятельно, используйте ключевое слово dynamic вместо Host IP",
-			"NAT": "Изменяет поведение Asterisk для клиентов за брандмауэром. Если какой-либо из параметров, разделенных запятыми, имеет значение «нет», Asterisk проигнорирует другие параметры и установит nat = no",
+			"ALLOWCODECS": "Разрешено кодеки в порядке предпочтения",
+			"TRANSPORT": "Установить значение по умолчанию для транспорта. Порядок определяет основной транспортом по умолчанию.",
+			"HOST": "Как найти клиента - IP или имя хоста. Если Вы хотите телефон для самого Регистра, используйте ключевое слово Dynamic вместо IP-адрес хоста.",
+			"NAT": "Изменяет поведение звездочка для клиентов за брандмауэром.Если любое из разделенных запятыми параметров 'Нет', звездочка будет игнорировать любые другие параметры и настройки NAT=no.",
 			"SIPEXPIRES": "По умолчанию: 160",
 			"SIPPORT": "По умолчанию: 5160",
-			"TYPE": "Определяет роль SIP в Asterisk. User: используется для аутентификации входящих вызовов – Peer: для исходящих вызовов – Friend: распространяется на обе вышеуказанные категории",
-			"CHATCAPACITY": "Максимальное количество одновременных взаимодействий каналов на агента (0 = без ограничений)",
-			"MAILCAPACITY": "Максимальное количество одновременных взаимодействий каналов на агента (0 = без ограничений)",
-			"FAXCAPACITY": "Максимальное количество одновременных взаимодействий каналов на агента (0 = без ограничений)",
-			"SMSCAPACITY": "Максимальное количество одновременных взаимодействий каналов на агента (0 = без ограничений)",
-			"OPENCHANNELCAPACITY": "Максимальное количество одновременных взаимодействий каналов на агента (0 = без ограничений)",
-			"CALLGROUP": "Группа вызовов агента",
-			"PICKUPGROUP": "Группы, в которых агент может отвечать на звонки",
-			"USERNAME": "Поддерживаются только цифры, буквы и специальные символы (._)",
-			"ENCRYPTION": "Шифрование SRTP (Secure Realtime Protocol)",
-			"LAST_PASSWORD_RESET_AT": "Дата и время последнего изменения пароля. Если включена общая настройка Secure Suite, срок действия пароля истечет через 90 дней.",
-			"DTLSCERTFILE": "Ссылка на действительный TLS-сертификат (файл .crt). Значение по умолчанию: «/etc/pki/tls/certs/motion.crt».",
-			"DTLSPRIVATEKEY": "Ссылка на закрытый ключ сертификата (файл .key). Значение по умолчанию: «/etc/pki/tls/private/motion.key».",
-			"SAVE_PERMISSIONS": "Каждый раздел, который содержит любые изменения, ожидающие подтверждения, будет сохранен",
-			"CUSTOM_DASHBOARDS_PERMISSIONS": "Пользовательские разрешения на панели обработки контролируются посредством модуля «Инструменты»",
-			"APIKEY": "Пожалуйста, используйте кнопку API Key Manager на панели инструментов для обработки данным ключом",
+			"TYPE": "Определяет роль SIP в Asterisk. Пользователь: используется для проверки подлинности входящих - Одноранговые сети: для исходящих вызовов - друга: охватывает как характеристики выше.",
+			"CHATCAPACITY": "Ноль означает неограниченное количество.",
+			"MAILCAPACITY": "Ноль означает неограниченное количество.",
+			"FAXCAPACITY": "Ноль означает неограниченное количество.",
+			"SMSCAPACITY": "Ноль означает неограниченное количество.",
+			"OPENCHANNELCAPACITY": "Ноль означает неограниченное количество.",
+			"CALLGROUP": "Определяет оператора callgroup",
+			"PICKUPGROUP": "Определяет группы, в которой оператор может ответить на вызовы",
+			"USERNAME": "Только цифры, буквы и специальные символы (_) поддерживаются",
+			"ENCRYPTION": "SRTP (защищенный протокол реального времени) шифрование",
+			"LAST_PASSWORD_RESET_AT": "Последняя дата и время, когда пароль был изменен. Если включена общая настройка Secure Suite, срок действия пароля истечет через 90 дней.",
+			"DTLSCERTFILE": "Ссылка на действительный сертификат TLS (файл .crt). Значение по умолчанию: '/etc/pki/tls/certs/motion.crt'.",
+			"DTLSPRIVATEKEY": "Ссылка на закрытый ключ сертификата (файл .key). Значение по умолчанию: '/etc/pki/tls/private/motion.key'.",
+			"SAVE_PERMISSIONS": "Каждый раздел, содержащий любые ожидающие изменения, будет сохранен",
+			"CUSTOM_DASHBOARDS_PERMISSIONS": "Пользовательские разрешения Dashboards управляются в модуле Инструменты",
+			"APIKEY": "Пожалуйста, используйте кнопку «API key manager» на панели инструментов для управления этим ключом",
 			"ENABLEAUTOMATICSCREENRECORDING": "Функциональность доступна только для голосового канала",
-			"BLOCKED": "Блокировка/разблокировка доступа",
-			"DISABLED": "выберите, чтобы деактивировать / отмените выбор, чтобы повторно активировать"
+			"BLOCKED": "Блокировка / разблокировка доступа",
+			"DISABLED": "выберите, чтобы деактивировать / отменить выбор, чтобы активировать",
+			"WHATSAPPCAPACITY": "Максимальное количество одновременных взаимодействий по каналу на агента (0 = неограниченно)"
 		},
 		"NEW_PASSWORD": "Новый пароль",
-		"CONFIRM_PASSWORD": "Подтверждение пароля",
+		"CONFIRM_PASSWORD": "Подтвердите пароль",
 		"CHANGE_PASSWORD": "Изменить пароль",
 		"CHANGEPASSWORD_AGENT": "Изменить пароль",
 		"CHANGEPASSWORD_USER": "Изменить пароль",
 		"CHANGEPASSWORD_TELEPHONE": "Изменить пароль",
-		"LOGININPAUSE": "Вход в паузу",
-		"HOST": "Хост",
+		"LOGININPAUSE": "Введите логин и пароль в режиме паузы",
+		"HOST": "Принимающей",
 		"NAT": "NAT",
 		"CHANSPY": "ChanSpy",
 		"OTHER_CHANNELS": "Другие каналы",
-		"CHATCAPACITY": "Емкость чата",
-		"MAILCAPACITY": "Емкость электронной почты",
-		"FAXCAPACITY": "Емкость факса",
-		"SMSCAPACITY": "Емкость SMS",
-		"OPENCHANNELCAPACITY": "Емкость открытого канала",
-		"MOTIONBAR": "Панель Motion Bar",
+		"CHATCAPACITY": "Чат потенциала",
+		"MAILCAPACITY": "Потенциала электронной почты",
+		"FAXCAPACITY": "Возможность работы с факсами",
+		"SMSCAPACITY": "Sms потенциала",
+		"OPENCHANNELCAPACITY": "Открыть канал потенциала",
+		"MOTIONBAR": "Бар движения",
 		"SETTINGS": "Настройки",
-		"AUTOANSWER": "Автоответ",
+		"AUTOANSWER": "Автоматический ответ",
 		"ENABLESETTINGS": "Включить настройки",
-		"CALL_FORWARDING": "Переадресация вызовов",
-		"UNCONDITIONAL": "Безусловная",
-		"UNCONDITIONALNUMBER": "Безусловная – на номер",
-		"NOREPLY": "При отсутствии ответа в течение заданного абонентом периода времени",
-		"NOREPLYNUMBER": "При отсутствии ответа в течение заданного абонентом периода времени – на номер",
-		"BUSY": "Линия занята",
-		"BUSYNUMBER": "В случае, если занят основной номер, – на номер",
-		"REMOTE_CONTROL": "Дистанционное управление",
-		"REMOTECONTROL": "Дистанционное управление",
-		"REMOTECONTROLPORT": "Порт дистанционного обработки",
+		"CALL_FORWARDING": "Переадресация вызова",
+		"UNCONDITIONAL": "Безоговорочное",
+		"UNCONDITIONALNUMBER": "Безусловное номер",
+		"NOREPLY": "Нет ответа",
+		"NOREPLYNUMBER": "Ответ не число",
+		"BUSY": "Занят",
+		"BUSYNUMBER": "Занят",
+		"REMOTE_CONTROL": "Пульт дистанционного управления",
+		"REMOTECONTROL": "Пульт дистанционного управления",
+		"REMOTECONTROLPORT": "Пульт дистанционного управления порт",
 		"SIP": "SIP",
-		"SIPEXPIRES": "SIP истекает [с]",
-		"SIPPORT": "Порт SIP",
-		"PENALTY": "Параметр Penalty",
+		"SIPEXPIRES": "SIP истекает [сек]",
+		"SIPPORT": "Порт SIP",
+		"PENALTY": "Смертная казнь",
 		"ACCOUNTNAME": "Имя учетной записи",
 		"ADD_TELEPHONE": "Добавить телефон",
 		"EDIT_TELEPHONE": "Редактировать телефон",
-		"DELETE_TELEPHONE": "Удалить телефон",
-		"TEAMS": "Команды",
-		"DELETE_TEAM": "Удалить команду",
-		"AGENTADD_TEAM": "Добавить агентов в команду",
-		"EDIT_TEAM": "Редактировать команду",
+		"DELETE_TELEPHONE": "Удаление телефона",
+		"TEAMS": "Групп",
+		"DELETE_TEAM": "Удалить группу",
+		"AGENTADD_TEAM": "Добавление операторов в группе",
+		"EDIT_TEAM": "Редактировать информацию о команде",
 		"TYPE": "Тип",
 		"TELEPHONES": "Телефоны",
 		"CALLERID": "Идентификатор вызывающего абонента",
 		"ENABLERECORDING": "Включить запись",
 		"STAFF": "Персонал",
-		"ID": "Идентификатор",
+		"ID": "Id",
 		"NEW_USER": "Новый пользователь",
-		"NEW_AGENT": "Новый агент",
+		"NEW_AGENT": "Новый оператор",
 		"NEW_TELEPHONE": "Новый телефон",
-		"NEW_TEAM": "Новая команда",
-		"ADD_TEAM": "Добавить команду",
-		"JOIN_QUEUE": "Присоединиться к очереди",
+		"NEW_TEAM": "Новая группа",
+		"ADD_TEAM": "Добавить группу",
+		"JOIN_QUEUE": "Присоединиться к очереди",
 		"CAPACITY": "Емкость",
-		"AUTOINTERNAL": "Автогенерация внутреннего номера",
-		"ADD_AGENT_TO_TEAM": "Добавить агента в команду",
-		"TEAMADD_AGENT": "Добавить агента в команду",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
+		"AUTOINTERNAL": "Автоматическое создание внутренний номер",
+		"ADD_AGENT_TO_TEAM": "Добавить оператора в группу",
+		"TEAMADD_AGENT": "Добавить оператора в группу",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
 		"PERMISSIONS": "Разрешения",
-		"ADD_AGENT_TO_QUEUE": "Добавить агента к очереди",
-		"ALL_MODULES_AVAILABLE": "Все модули доступны",
-		"CALLGROUP": "Группа вызова",
-		"PICKUPGROUP": "Группа перехвата вызова",
-		"QUEUEADD_AGENT_VOICE_OUTBOUND": "Добавить агента к кампаниям очереди",
-		"QUEUEADD_AGENT_VOICE_INBOUND": "Добавить агента к очередям голосовой почты",
-		"QUEUEADD_AGENT_CHAT_INBOUND": "Добавить агента к очередям чатов",
-		"QUEUEADD_AGENT_MAIL_INBOUND": "Добавить агента к очередям сообщений электронной почты",
-		"QUEUEADD_AGENT_SMS_INBOUND": "Добавить агента к очередям SMS",
-		"QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Добавить агента к очередям открытых каналов",
-		"QUEUEADD_AGENT_FAX_INBOUND": "Добавить агента к очередям факсов",
-		"QUEUEADD_USER_VOICE_INBOUND": "Добавить пользователя к очередям голосовой почты",
-		"QUEUEADD_USER_CHAT_INBOUND": "Добавить пользователя к очередям чатов",
-		"QUEUEADD_USER_MAIL_INBOUND": "Добавить пользователя к очередям сообщений электронной почты",
-		"QUEUEADD_USER_SMS_INBOUND": "Добавить пользователя к очередям SMS",
-		"QUEUEADD_USER_OPENCHANNEL_INBOUND": "Добавить пользователя к очередям открытых каналов",
-		"QUEUEADD_USER_FAX_INBOUND": "Добавить пользователя к очередям факсов",
-		"ALL_TEAMS": "Все команды",
-		"SELECTED_TEAMS": "Избранные команды",
-		"SELECTED_AGENTS": "Выбранные агенты",
-		"ALL_QUEUES_VOICE_OUTBOUND": "Все кампании очереди",
-		"SELECTED_QUEUES_VOICE_OUTBOUND": "Выбранные кампании очереди",
-		"ALL_QUEUES_VOICE_INBOUND": "Все очереди голосовой почты",
-		"SELECTED_QUEUES_VOICE_INBOUND": "Выбранные очереди голосовой почты",
-		"ALL_QUEUES_CHAT_INBOUND": "Все очереди чатов",
-		"SELECTED_QUEUES_CHAT_INBOUND": "Выбранные очереди чатов",
+		"ADD_AGENT_TO_QUEUE": "Добавить оператора в очереди",
+		"ALL_MODULES_AVAILABLE": "Все модули",
+		"CALLGROUP": "Вызов группы",
+		"PICKUPGROUP": "Группы перехвата вызова",
+		"QUEUEADD_AGENT_VOICE_OUTBOUND": "Добавить оператора в очереди кампаний",
+		"QUEUEADD_AGENT_VOICE_INBOUND": "Добавить оператора в очереди голосовой связи",
+		"QUEUEADD_AGENT_CHAT_INBOUND": "Добавить оператора в чат очередей",
+		"QUEUEADD_AGENT_MAIL_INBOUND": "Добавить оператора в очереди сообщений электронной почты",
+		"QUEUEADD_AGENT_SMS_INBOUND": "Добавить оператора в очереди сообщений SMS",
+		"QUEUEADD_AGENT_OPENCHANNEL_INBOUND": "Добавить оператора в открытый канал очередей",
+		"QUEUEADD_AGENT_FAX_INBOUND": "Добавить оператора в очереди факса",
+		"QUEUEADD_USER_VOICE_INBOUND": "Добавить пользователя в очереди голосовой связи",
+		"QUEUEADD_USER_CHAT_INBOUND": "Добавить пользователя в чат очередей",
+		"QUEUEADD_USER_MAIL_INBOUND": "Добавить пользователя в очереди сообщений электронной почты",
+		"QUEUEADD_USER_SMS_INBOUND": "Добавить пользователя в очереди сообщений SMS",
+		"QUEUEADD_USER_OPENCHANNEL_INBOUND": "Добавить пользователя открыть канал очередей",
+		"QUEUEADD_USER_FAX_INBOUND": "Добавить пользователя в очереди факса",
+		"ALL_TEAMS": "Все группы",
+		"SELECTED_TEAMS": "Выбранные группы",
+		"SELECTED_AGENTS": "Выбранные операторы",
+		"ALL_QUEUES_VOICE_OUTBOUND": "Все очереди кампаний",
+		"SELECTED_QUEUES_VOICE_OUTBOUND": "Выбранные очереди кампаний",
+		"ALL_QUEUES_VOICE_INBOUND": "Все голосовые очередей",
+		"SELECTED_QUEUES_VOICE_INBOUND": "Выбранный голос очередей",
+		"ALL_QUEUES_CHAT_INBOUND": "Все очереди чата",
+		"SELECTED_QUEUES_CHAT_INBOUND": "Выбранный чат очередей",
 		"ALL_QUEUES_MAIL_INBOUND": "Все очереди сообщений электронной почты",
 		"SELECTED_QUEUES_MAIL_INBOUND": "Выбранные очереди сообщений электронной почты",
-		"ALL_QUEUES_SMS_INBOUND": "Все очереди SMS",
-		"SELECTED_QUEUES_SMS_INBOUND": "Выбранные очереди SMS",
-		"ALL_QUEUES_OPENCHANNEL_INBOUND": "Все очереди открытых каналов",
-		"SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Выбранные очереди открытых каналов",
-		"ALL_QUEUES_FAX_INBOUND": "Все очереди факсов",
-		"SELECTED_QUEUES_FAX_INBOUND": "Выбранные очереди факсов",
+		"ALL_QUEUES_SMS_INBOUND": "Все очереди сообщений SMS",
+		"SELECTED_QUEUES_SMS_INBOUND": "Выбранные очереди сообщений SMS",
+		"ALL_QUEUES_OPENCHANNEL_INBOUND": "Все открытые канал очередей",
+		"SELECTED_QUEUES_OPENCHANNEL_INBOUND": "Выбранные открытый канал очередей",
+		"ALL_QUEUES_FAX_INBOUND": "Все очереди факса",
+		"SELECTED_QUEUES_FAX_INBOUND": "Выбранный факс очередей",
 		"VOICEMAIL": "Голосовая почта",
-		"SHOWWEBCONTROL": "Типология",
+		"SHOWWEBCONTROL": "Показать Web Control",
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"CALLFORWARDING": "Переадресация вызовов",
-		"DND": "Не беспокоить во время паузы",
-		"UNANSWEREDCALLBADGE": "Показать значок неотвеченного вызова",
-		"ENABLEDTMFTONE": "Включить тоны DTMF",
-		"AUTOANSWERDELAY": "Задержка: автоответ [с]",
-		"ENCRYPTION": "Шифрование",
-		"CHANNELS": "Каналы",
+		"OF": "В",
+		"CALLFORWARDING": "Переадресация вызова",
+		"DND": "Не беспокоить во время паузы",
+		"UNANSWEREDCALLBADGE": "Показать неотвеченные вызовы знак",
+		"ENABLEDTMFTONE": "Чтобы тональных сигналов DTMF",
+		"AUTOANSWERDELAY": "Авто Время ожидания ответа",
+		"ENCRYPTION": "Шифрования.",
+		"CHANNELS": "Каналов",
 		"CHAT": "Чат",
-		"SMS": "SMS",
-		"OPENCHANNEL": "Открытый канал",
+		"SMS": "Sms",
+		"OPENCHANNEL": "Открыть канал",
 		"FAX": "Факс",
-		"QUEUEADD_USER_VOICE_OUTBOUND": "Добавить пользователя к кампаниям очереди",
-		"MONITOREXTENSION": "Запись вызовов на внутренний номер пользователя",
-		"NO_PASSWORD_CHANGE": "Нет смены пароля",
-		"SECURITY_SUITE": "Security Suite",
-		"LAST_PASSWORD_RESET_AT": "Сброс последнего пароля произошел в",
-		"SIP_WEBRTC": "SIP",
-		"SETTINGS_WEBRTC": "Настройки",
+		"QUEUEADD_USER_VOICE_OUTBOUND": "Добавить пользователя в очереди кампаний",
+		"MONITOREXTENSION": "Запись вызовов на добавочный номер пользователя",
+		"NO_PASSWORD_CHANGE": "Без изменения пароля",
+		"SECURITY_SUITE": "Люкс для обеспечения безопасности",
+		"LAST_PASSWORD_RESET_AT": "Сброс последнего пароля",
+		"SIP_WEBRTC": "Глоток",
+		"SETTINGS_WEBRTC": "настройки",
 		"WEBRTC": "WebRTC",
-		"DTLSCERTFILE": "TLS-сертификат",
-		"DTLSPRIVATEKEY": "Приватный ключ TLS-сертификата",
+		"DTLSCERTFILE": "Сертификат TLS",
+		"DTLSPRIVATEKEY": "Закрытый ключ сертификата TLS",
 		"EDITPERMISSIONS": "Редактирование разрешений",
 		"READANDEDIT": "Читать, редактировать",
 		"READANDEDITANDDELETE": "Чтение, редактирование, удаление",
-		"GENERAL_PERMISSIONS": "Общие",
-		"ENABLEMESSENGER": "Включить внутренний мессенджер",
-		"OUTBOUNDPROXY": "Oubound Proxy / Прокси, принимающий запросы от клиента",
+		"GENERAL_PERMISSIONS": "Генеральная",
+		"ENABLEMESSENGER": "Включить внутренний посланник",
+		"OUTBOUNDPROXY": "Oubound Proxy",
 		"PHONE": "Телефон",
-		"MOBILE": "Мобильный телефон",
-		"ALIAS": "Алиас",
-		"ENABLEJAWSINTEGRATION": "Включить интеграцию в Jaws",
-		"PREFIXREQUIRED": "Выбор префикса обязателен",
+		"MOBILE": "мобильный",
+		"ALIAS": "кличка",
+		"ENABLEJAWSINTEGRATION": "Включить интеграцию челюстей",
+		"PREFIXREQUIRED": "Требуется префикс",
 		"ENABLEVIDEORECORDING": "Включить видеозапись",
 		"OLD_PASSWORD": "Старый пароль",
-		"ALL_CHATQUEUES": "Все очереди чатов",
+		"ALL_CHATQUEUES": "Все очереди в чате",
 		"ALL_CHATWEBSITES": "Все чат-сайты",
 		"ALL_FAXACCOUNTS": "Все учетные записи факсов",
-		"ALL_FAXQUEUES": "Все очереди факсов",
+		"ALL_FAXQUEUES": "Все очереди факса",
 		"ALL_MAILACCOUNTS": "Все учетные записи электронной почты",
-		"ALL_MAILQUEUES": "Все очереди сообщений электронной почты",
-		"ALL_OPENCHANNELACCOUNTS": "Все учетные записи открытых каналов",
-		"ALL_OPENCHANNELQUEUES": "Все очереди открытых каналов",
+		"ALL_MAILQUEUES": "Все почтовые очереди",
+		"ALL_OPENCHANNELACCOUNTS": "Все открытые аккаунты канала",
+		"ALL_OPENCHANNELQUEUES": "Все открытые очереди каналов",
 		"ALL_PROJECTS": "Все проекты Cally Square",
-		"ALL_QUEUECAMPAIGNS": "Все кампании очереди",
-		"ALL_SMSACCOUNTS": "Все учетные записи SMS",
-		"ALL_SMSQUEUES": "Все очереди SMS",
-		"ALL_VOICEQUEUES": "Все очереди голосовой почты",
+		"ALL_QUEUECAMPAIGNS": "Все очереди очереди",
+		"ALL_SMSACCOUNTS": "Все смс аккаунты",
+		"ALL_SMSQUEUES": "Все SMS-очереди",
+		"ALL_VOICEQUEUES": "Все голосовые очереди",
 		"MANAGE_PERMISSIONS": "Управление разрешениями",
-		"SELECTED_CHATQUEUES": "Выбранные очереди сообщений электронной почты",
-		"SELECTED_CHATWEBSITES": "Выбранные чат-сайты",
-		"SELECTED_FAXACCOUNTS": "Выбранные учетные записи факсов",
-		"SELECTED_FAXQUEUES": "Выбранные очереди факсов",
+		"SELECTED_CHATQUEUES": "Избранные почтовые очереди",
+		"SELECTED_CHATWEBSITES": "Избранные чат-сайты",
+		"SELECTED_FAXACCOUNTS": "Выбранные учетные записи факса",
+		"SELECTED_FAXQUEUES": "Выбранные очереди факса",
 		"SELECTED_MAILACCOUNTS": "Выбранные учетные записи электронной почты",
-		"SELECTED_MAILQUEUES": "Выбранные очереди чатов",
-		"SELECTED_OPENCHANNELACCOUNTS": "Выбранные учетные записи открытых каналов",
+		"SELECTED_MAILQUEUES": "Избранные очереди чата",
+		"SELECTED_OPENCHANNELACCOUNTS": "Выбранные аккаунты открытого канала",
 		"SELECTED_OPENCHANNELQUEUES": "Выбранные очереди открытых каналов",
-		"SELECTED_PROJECTS": "Выбранные проекты Cally Square",
+		"SELECTED_PROJECTS": "Избранные проекты Cally Square",
 		"SELECTED_QUEUECAMPAIGNS": "Выбранные кампании очереди",
-		"SELECTED_SMSACCOUNTS": "Выбранные учетные записи SMS",
-		"SELECTED_SMSQUEUES": "Выбранные очереди SMS",
-		"SELECTED_VOICEQUEUES": "Выбранные очереди голосовой почты",
-		"USERADD_CHATQUEUES": "Добавить очередь чатов к пользователю",
-		"USERADD_CHATWEBSITES": "Добавить чат-сайт к пользователю",
-		"USERADD_FAXACCOUNTS": "Добавить учетную запись факса к пользователю",
-		"USERADD_FAXQUEUES": "Добавить очередь факсов к пользователю",
-		"USERADD_MAILACCOUNTS": "Добавить учетную запись электронной почты к пользователю",
-		"USERADD_MAILQUEUES": "Добавить очередь сообщений электронной почты к пользователю",
-		"USERADD_OPENCHANNELACCOUNTS": "Добавить учетную запись открытого канала к пользователю",
-		"USERADD_OPENCHANNELQUEUES": "Добавить очередь открытых каналов к пользователю",
-		"USERADD_PROJECTS": "Добавить проект Cally Square к пользователю",
-		"USERADD_QUEUECAMPAIGNS": "Добавить кампанию очереди к пользователю",
-		"USERADD_SMSACCOUNTS": "Добавить учетную запись SMS к пользователю",
-		"USERADD_SMSQUEUES": "Добавить очередь SMS к пользователю",
-		"USERADD_VOICEQUEUES": "Добавить очередь голосовой почты к пользователю",
+		"SELECTED_SMSACCOUNTS": "Выбранные учетные записи SMS",
+		"SELECTED_SMSQUEUES": "Избранные SMS-очереди",
+		"SELECTED_VOICEQUEUES": "Избранные голосовые очереди",
+		"USERADD_CHATQUEUES": "Добавить очередь чата к пользователю",
+		"USERADD_CHATWEBSITES": "Добавить чат-сайт к пользователю",
+		"USERADD_FAXACCOUNTS": "Добавить учетную запись факса пользователю",
+		"USERADD_FAXQUEUES": "Добавить очередь факсов для пользователя",
+		"USERADD_MAILACCOUNTS": "Добавить учетную запись электронной почты для пользователя",
+		"USERADD_MAILQUEUES": "Добавить очередь электронной почты для пользователя",
+		"USERADD_OPENCHANNELACCOUNTS": "Добавить учетную запись открытого канала для пользователя",
+		"USERADD_OPENCHANNELQUEUES": "Добавить очередь открытых каналов для пользователя",
+		"USERADD_PROJECTS": "Добавить Cally Square Project к пользователю",
+		"USERADD_QUEUECAMPAIGNS": "Добавить кампанию в очередь к пользователю",
+		"USERADD_SMSACCOUNTS": "Добавить учетную запись SMS для пользователя",
+		"USERADD_SMSQUEUES": "Добавить очередь SMS для пользователя",
+		"USERADD_VOICEQUEUES": "Добавить голосовую очередь к пользователю",
 		"HOTDESK": "Горячий стол",
 		"ADD_USERPROFILE": "Добавить профиль пользователя",
-		"CANCEL": "Отмена",
-		"CLONE_USERPROFILE": "Клонировать профиль пользователя",
-		"CLOSE": "Закрыть",
-		"CONFIRM": "Подтвердить",
+		"CANCEL": "отменить",
+		"CLONE_USERPROFILE": "Профиль пользователя Clone",
+		"CLOSE": "близко",
+		"CONFIRM": "подтвердить",
 		"CRUDPERMISSIONS": "Тип разрешения",
-		"DELETE_PERMISSION": "Удаление",
+		"DELETE_PERMISSION": "удалять",
 		"DELETE_USERPROFILE": "Удалить профиль пользователя",
-		"EDIT_PERMISSION": "Редактирование",
-		"EDIT_USERPROFILE": "Редактировать профиль пользователя",
+		"EDIT_PERMISSION": "редактировать",
+		"EDIT_USERPROFILE": "Изменить профиль пользователя",
 		"MODULES": "Модули",
 		"NEW_USERPROFILE": "Новый профиль пользователя",
 		"PERMISSIONS_ALL_RESOURCES": "Все ресурсы",
-		"PERMISSIONS_AUTO_ASSOCIATION_INFO": "Автоматически связывать каждый настоящий и будущий ресурс данного раздела с профилем пользователя",
-		"PERMISSIONS_MANAGE": "Управление",
+		"PERMISSIONS_AUTO_ASSOCIATION_INFO": "Автоматически связывать каждый текущий и будущий ресурс этого раздела с профилем пользователя",
+		"PERMISSIONS_MANAGE": "управлять",
 		"PERMISSIONS_PLACEHOLDER_SEARCH": "Поиск...",
 		"PERMISSIONS_SECTION_HIDE": "Скрыть раздел для пользователя",
 		"PERMISSIONS_SECTION_SHOW": "Показать раздел для пользователя",
 		"PERMISSIONS_SECTION_TITLE": "{{sectionName}} Разрешения",
 		"PERMISSIONS_SELECTED_RESOURCES": "Выбранные ресурсы",
-		"PERMISSIONS_SELECT_REPORT_TYPE": "Выбрать тип отчета",
-		"PERMISSIONS_SELECT_SECTION": "Выбрать раздел",
-		"PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Вам не разрешен доступ к выбранному разделу",
+		"PERMISSIONS_SELECT_REPORT_TYPE": "Выберите тип отчета",
+		"PERMISSIONS_SELECT_SECTION": "Выберите раздел",
+		"PERMISSIONS_UNAUTHORIZED_REDIRECT_MESSAGE": "Вам не разрешен доступ к выбранному разделу",
 		"PERMISSIONS_UNAUTHORIZED_REDIRECT_TITLE": "Несанкционированное действие",
-		"PERMISSIONS_WARNING_CLOSE": "У вас есть несохраненные изменения. Вы уверены, что хотите выйти без сохранения?",
-		"PERMISSIONS_WARNING_ENABLE_ALL": "Все {{sectionName}} подразделы и их ресурсы будут включены. Вы уверены, что хотите продолжить?",
+		"PERMISSIONS_WARNING_CLOSE": "У вас есть несохраненные изменения. Вы уверены, что хотите выйти без сохранения?",
+		"PERMISSIONS_WARNING_ENABLE_ALL": "Все подразделы {{sectionName}} и их ресурсы будут включены. Вы уверены что хотите продолжить?",
 		"QUEUES_ASSOCIATION": "{{channel}} Ассоциация очередей",
-		"READ_PERMISSION": "Чтение",
+		"READ_PERMISSION": "Читать",
 		"REPORT_TYPE": "Тип отчета",
 		"SECTIONS": "Разделы",
 		"SUMMARY": "Резюме",
 		"TEAMS_ASSOCIATION": "Ассоциация команд",
 		"USERPROFILE": "Профиль пользователя",
 		"USERPROFILES": "Профили пользователей",
-		"PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Вам не разрешено создавать ресурс",
+		"PERMISSIONS_UNAUTHORIZED_CREATION_MESSAGE": "Вам не разрешено создавать ресурс",
 		"VIDEOSUPPORT": "Поддержка видео",
-		"APIKEY": "API Key",
-		"APIKEYMANAGER_USER": "API Key Manager",
-		"GENERATE": "Генерировать",
-		"MANAGE_API_KEY": "API Key Manager",
+		"APIKEY": "Ключ API",
+		"APIKEYMANAGER_USER": "API Key Manager",
+		"GENERATE": "(Re) Создание",
+		"MANAGE_API_KEY": "Менеджер ключей API",
 		"REMOVE": "Удалить",
-		"ENABLEAUTOMATICSCREENRECORDING": "Включить автоматическую запись с экрана",
-		"ENABLESCREENRECORDINGBYAGENT": "Включить запись с экрана агентом",
+		"ENABLEAUTOMATICSCREENRECORDING": "Включить автоматическую запись экрана",
+		"ENABLESCREENRECORDINGBYAGENT": "Включить запись экрана агентом",
 		"ENABLEVIDEOECORDING": "Включить запись видео",
-		"BLOCKED": "Заблокирован",
-		"DISABLED": "Деактивирован",
-		"REGENERATE": "Регенерировать",
+		"BLOCKED": "запертый",
+		"DISABLED": "ММГ",
+		"REGENERATE": "Регенерация",
 		"NOTIFICATIONS": {
 			"PERMISSIONS_ENABLED_ALL_SUCCESS_TITLE": "Раздел {{sectionName}} включен",
 			"PERMISSIONS_ENABLED_ALL_SUCCESS_MESSAGE": "Все {{sectionName}} ресурсы добавлены в {{userProfileName}} профиль пользователя",
@@ -344,6 +346,18 @@
 			"PERMISSIONS_DISABLED_ALL_SUCCESS_MESSAGE_NO_RESOURCES": "{{sectionName}} удален из {{userProfileName}} профиля пользователя",
 			"PERMISSIONS_SAVED_SUCCESS_TITLE": "{{sectionName}} раздел сохранен",
 			"PERMISSIONS_SAVED_SUCCESS_MESSAGE": "Разрешения успешно обновлены!"
-		}
+		},
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Все очереди WhatsApp",
+		"ALL_WHATSAPPACCOUNTS": "Все аккаунты WhatsApp",
+		"ALL_WHATSAPPQUEUES": "Все очереди Whataspp",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Добавить агента в очереди WhatsApp",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Добавить пользователя в очереди WhatsApp",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Выбранные очереди WhatsApp",
+		"SELECTED_WHATSAPPACCOUNTS": "Выбранные учетные записи WhatsApp",
+		"SELECTED_WHATSAPPQUEUES": "Выбранные очереди WhatsApp",
+		"USERADD_WHATSAPPACCOUNTS": "Добавить учетную запись WhatsApp к пользователю",
+		"USERADD_WHATSAPPQUEUES": "Добавить очередь Whataspp пользователю",
+		"WHATSAPP": "Коннектор WhatsApp",
+		"WHATSAPPCAPACITY": "Емкость разъема WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/sv.json b/public/app/main/apps/staff/i18n/sv.json
index b1dbd76..06e8a51 100644
--- a/public/app/main/apps/staff/i18n/sv.json
+++ b/public/app/main/apps/staff/i18n/sv.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Obligatoriskt fält",
 			"USERPROFILE_REQUIRED": "Obligatoriskt fält",
 			"PASSWORD_OLDPASSWORD_MATCH": "Det nya lösenordet måste skilja sig från det tidigare",
-			"CONFIRM_REQUIRED": "Obligatoriskt fält"
+			"CONFIRM_REQUIRED": "Obligatoriskt fält",
+			"WHATSAPPCAPACITY_REQUIRED": "Obligatoriskt fält"
 		},
 		"ACCOUNT": "Konto",
 		"VOICE": "Röst",
@@ -112,7 +113,8 @@
 			"APIKEY": "Använd knappen \"API-nyckelhanterare\" i verktygsfältet för att hantera den här nyckeln",
 			"ENABLEAUTOMATICSCREENRECORDING": "Funktionaliteten är endast tillgänglig för röstkanal",
 			"BLOCKED": "Lås / lås upp åtkomst",
-			"DISABLED": "välj för att inaktivera / avmarkera för att återaktivera"
+			"DISABLED": "välj för att inaktivera / avmarkera för att återaktivera",
+			"WHATSAPPCAPACITY": "Maximalt antal samtidiga kanalinteraktioner per agent (0 = obegränsat)"
 		},
 		"NEW_PASSWORD": "Nytt lösenord",
 		"CONFIRM_PASSWORD": "Bekräfta lösenord",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Aktivera videoinspelning",
 		"BLOCKED": "låst",
 		"DISABLED": "Inaktiverad",
-		"REGENERATE": "Regenerera"
+		"REGENERATE": "Regenerera",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Alla WhatsApp-köer",
+		"ALL_WHATSAPPACCOUNTS": "Alla WhatsApp-konton",
+		"ALL_WHATSAPPQUEUES": "Alla Whataspp-köer",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "Lägg till agent i WhatsApp-köer",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "Lägg till användare i WhatsApp-köer",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Valda WhatsApp-köer",
+		"SELECTED_WHATSAPPACCOUNTS": "Valda WhatsApp-konton",
+		"SELECTED_WHATSAPPQUEUES": "Valda WhatsApp-köer",
+		"USERADD_WHATSAPPACCOUNTS": "Lägg till WhatsApp-konto till användaren",
+		"USERADD_WHATSAPPQUEUES": "Lägg till Whataspp-kö till användare",
+		"WHATSAPP": "WhatsApp-anslutning",
+		"WHATSAPPCAPACITY": "WhatsApp-anslutningskapacitet"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/tr.json b/public/app/main/apps/staff/i18n/tr.json
index ab7892f..b13c3dd 100644
--- a/public/app/main/apps/staff/i18n/tr.json
+++ b/public/app/main/apps/staff/i18n/tr.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "Zorunlu alan",
 			"USERPROFILE_REQUIRED": "Zorunlu alan",
 			"PASSWORD_OLDPASSWORD_MATCH": "Yeni şifre öncekinden farklı olmalı",
-			"CONFIRM_REQUIRED": "Zorunlu alan"
+			"CONFIRM_REQUIRED": "Zorunlu alan",
+			"WHATSAPPCAPACITY_REQUIRED": "Zorunlu alan"
 		},
 		"ACCOUNT": "Hesap",
 		"VOICE": "Ses",
@@ -112,7 +113,8 @@
 			"APIKEY": "Lütfen bu anahtarı yönetmek için araç çubuğundaki 'API anahtar yöneticisi' düğmesini kullanın",
 			"ENABLEAUTOMATICSCREENRECORDING": "İşlevsellik yalnızca ses kanalı için kullanılabilir.",
 			"BLOCKED": "Erişimi kilitleme / kilidi açma",
-			"DISABLED": "devre dışı bırakmak için seçin / yeniden etkinleştirmek için seçimi kaldırın"
+			"DISABLED": "devre dışı bırakmak için seçin / yeniden etkinleştirmek için seçimi kaldırın",
+			"WHATSAPPCAPACITY": "Aracı başına maksimum eşzamanlı kanal etkileşimi sayısı (0 = sınırsız)"
 		},
 		"NEW_PASSWORD": "Yeni Parola",
 		"CONFIRM_PASSWORD": "Parolayı Onayla",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "Video Kaydını Etkinleştir",
 		"BLOCKED": "Kilitli",
 		"DISABLED": "Devre dışı",
-		"REGENERATE": "Regenerate"
+		"REGENERATE": "Regenerate",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "Tüm WhatsApp Sıraları",
+		"ALL_WHATSAPPACCOUNTS": "Tüm WhatsApp Hesapları",
+		"ALL_WHATSAPPQUEUES": "Tüm Whataspp Kuyrukları",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "WhatsApp Sıralarına Ajan Ekle",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "WhatsApp Sıralarına Kullanıcı Ekle",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "Seçili WhatsApp Sıraları",
+		"SELECTED_WHATSAPPACCOUNTS": "Seçili WhatsApp Hesapları",
+		"SELECTED_WHATSAPPQUEUES": "Seçili WhatsApp Sıraları",
+		"USERADD_WHATSAPPACCOUNTS": "Kullanıcıya WhatsApp Hesabı Ekleyin",
+		"USERADD_WHATSAPPQUEUES": "Kullanıcıya Whataspp Sırasını Ekleyin",
+		"WHATSAPP": "WhatsApp Bağlayıcısı",
+		"WHATSAPPCAPACITY": "WhatsApp Bağlayıcı Kapasitesi"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/zh-CN.json b/public/app/main/apps/staff/i18n/zh-CN.json
index bf226d7..2619d2f 100644
--- a/public/app/main/apps/staff/i18n/zh-CN.json
+++ b/public/app/main/apps/staff/i18n/zh-CN.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "必填项",
 			"USERPROFILE_REQUIRED": "必填项",
 			"PASSWORD_OLDPASSWORD_MATCH": "新密码必须与以前的密码不同",
-			"CONFIRM_REQUIRED": "必填项"
+			"CONFIRM_REQUIRED": "必填项",
+			"WHATSAPPCAPACITY_REQUIRED": "必填项"
 		},
 		"ACCOUNT": "帐户",
 		"VOICE": "语音",
@@ -112,7 +113,8 @@
 			"APIKEY": "请使用工具栏上的“API密钥管理器”按钮来管理此密钥",
 			"ENABLEAUTOMATICSCREENRECORDING": "该功能仅适用于语音通道",
 			"BLOCKED": "锁定/解锁访问",
-			"DISABLED": "选择禁用/取消选择重新激活"
+			"DISABLED": "选择禁用/取消选择重新激活",
+			"WHATSAPPCAPACITY": "每个代理的最大并发通道交互数（0 =无限）"
 		},
 		"NEW_PASSWORD": "新的密码。",
 		"CONFIRM_PASSWORD": "确认密码",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "启用视频录制",
 		"BLOCKED": "已锁定",
 		"DISABLED": "已停用",
-		"REGENERATE": "再生"
+		"REGENERATE": "再生",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "所有WhatsApp队列",
+		"ALL_WHATSAPPACCOUNTS": "所有WhatsApp帐户",
+		"ALL_WHATSAPPQUEUES": "所有Whataspp队列",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "将代理添加到WhatsApp队列",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "将用户添加到WhatsApp队列",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "选定的WhatsApp队列",
+		"SELECTED_WHATSAPPACCOUNTS": "选定的WhatsApp帐户",
+		"SELECTED_WHATSAPPQUEUES": "选定的WhatsApp队列",
+		"USERADD_WHATSAPPACCOUNTS": "将WhatsApp帐户添加到用户",
+		"USERADD_WHATSAPPQUEUES": "将Whataspp队列添加到用户",
+		"WHATSAPP": "WhatsApp连接器",
+		"WHATSAPPCAPACITY": "WhatsApp连接器容量"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/staff/i18n/zh-TW.json b/public/app/main/apps/staff/i18n/zh-TW.json
index 8ef9dd9..4ddb426 100644
--- a/public/app/main/apps/staff/i18n/zh-TW.json
+++ b/public/app/main/apps/staff/i18n/zh-TW.json
@@ -74,7 +74,8 @@
 			"CRUDPERMISSIONS_REQUIRED": "必填項",
 			"USERPROFILE_REQUIRED": "必填項",
 			"PASSWORD_OLDPASSWORD_MATCH": "新密碼必須與以前的密碼不同",
-			"CONFIRM_REQUIRED": "必填項"
+			"CONFIRM_REQUIRED": "必填項",
+			"WHATSAPPCAPACITY_REQUIRED": "必填項"
 		},
 		"ACCOUNT": "帳號",
 		"VOICE": "語音通話",
@@ -112,7 +113,8 @@
 			"APIKEY": "請使用工具欄上的“API密鑰管理器”按鈕來管理此密鑰",
 			"ENABLEAUTOMATICSCREENRECORDING": "該功能僅適用於語音通道",
 			"BLOCKED": "鎖定/解鎖訪問",
-			"DISABLED": "選擇禁用/取消選擇重新激活"
+			"DISABLED": "選擇禁用/取消選擇重新激活",
+			"WHATSAPPCAPACITY": "每個代理的最大並發通道交互數（0 =無限）"
 		},
 		"NEW_PASSWORD": "新密碼",
 		"CONFIRM_PASSWORD": "確認密碼",
@@ -334,6 +336,18 @@
 		"ENABLEVIDEOECORDING": "啟用視頻錄製",
 		"BLOCKED": "已鎖定",
 		"DISABLED": "已停用",
-		"REGENERATE": "再生"
+		"REGENERATE": "再生",
+		"ALL_QUEUES_WHATSAPP_INBOUND": "所有WhatsApp隊列",
+		"ALL_WHATSAPPACCOUNTS": "所有WhatsApp帳戶",
+		"ALL_WHATSAPPQUEUES": "所有Whataspp隊列",
+		"QUEUEADD_AGENT_WHATSAPP_INBOUND": "將代理添加到WhatsApp隊列",
+		"QUEUEADD_USER_WHATSAPP_INBOUND": "將用戶添加到WhatsApp隊列",
+		"SELECTED_QUEUES_WHATSAPP_INBOUND": "選定的WhatsApp隊列",
+		"SELECTED_WHATSAPPACCOUNTS": "選定的WhatsApp帳戶",
+		"SELECTED_WHATSAPPQUEUES": "選定的WhatsApp隊列",
+		"USERADD_WHATSAPPACCOUNTS": "將WhatsApp帳戶添加到用戶",
+		"USERADD_WHATSAPPQUEUES": "將Whataspp隊列添加到用戶",
+		"WHATSAPP": "WhatsApp連接器",
+		"WHATSAPPCAPACITY": "WhatsApp連接器容量"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/ar.json b/public/app/main/apps/tools/i18n/ar.json
index 25fac43..b8a88cd 100644
--- a/public/app/main/apps/tools/i18n/ar.json
+++ b/public/app/main/apps/tools/i18n/ar.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "النصي",
 		"SCRIPT_INFO": "معلومات",
 		"SCRIPT_TYPE": "نوع",
-		"MOTION_TAB": "علامة تبويب لوحة معلومات الوكيل الجديدة"
+		"MOTION_TAB": "علامة تبويب لوحة معلومات الوكيل الجديدة",
+		"WHATSAPP": "رابط WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/da.json b/public/app/main/apps/tools/i18n/da.json
index f376acd..484f876 100644
--- a/public/app/main/apps/tools/i18n/da.json
+++ b/public/app/main/apps/tools/i18n/da.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Manuskript",
 		"SCRIPT_INFO": "Info",
 		"SCRIPT_TYPE": "Type",
-		"MOTION_TAB": "Ny Agent Dashboard fane"
+		"MOTION_TAB": "Ny Agent Dashboard fane",
+		"WHATSAPP": "WhatsApp-stik"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/de.json b/public/app/main/apps/tools/i18n/de.json
index 91518c6..06e901c 100644
--- a/public/app/main/apps/tools/i18n/de.json
+++ b/public/app/main/apps/tools/i18n/de.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Skript",
 		"SCRIPT_INFO": "Info",
 		"SCRIPT_TYPE": "Art",
-		"MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\""
+		"MOTION_TAB": "Neue Registerkarte \"Agent Dashboard\"",
+		"WHATSAPP": "WhatsApp Connector"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/en.json b/public/app/main/apps/tools/i18n/en.json
index 02de763..60708a5 100644
--- a/public/app/main/apps/tools/i18n/en.json
+++ b/public/app/main/apps/tools/i18n/en.json
@@ -451,6 +451,7 @@
 		"REPORTFOLDER": "Report Folder",
 		"REPORTSUBFOLDER": "Report Subfolder",
 		"AGENT": "Agent",
-		"HEADERS": "Headers"
+		"HEADERS": "Headers",
+		"WHATSAPP": "WhatsApp Connector"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/es.json b/public/app/main/apps/tools/i18n/es.json
index 67f9107..9217f08 100644
--- a/public/app/main/apps/tools/i18n/es.json
+++ b/public/app/main/apps/tools/i18n/es.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Guión",
 		"SCRIPT_INFO": "Informacion",
 		"SCRIPT_TYPE": "Tipo",
-		"MOTION_TAB": "Nueva pestaña Panel de agente"
+		"MOTION_TAB": "Nueva pestaña Panel de agente",
+		"WHATSAPP": "Conector de WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/fa.json b/public/app/main/apps/tools/i18n/fa.json
index 4c738bc..7a15866 100644
--- a/public/app/main/apps/tools/i18n/fa.json
+++ b/public/app/main/apps/tools/i18n/fa.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "فیلمنامه",
 		"SCRIPT_INFO": "اطلاعات",
 		"SCRIPT_TYPE": "تایپ کنید",
-		"MOTION_TAB": "برگه داشبورد عامل جدید"
+		"MOTION_TAB": "برگه داشبورد عامل جدید",
+		"WHATSAPP": "اتصال واتساپ"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/fi.json b/public/app/main/apps/tools/i18n/fi.json
index e6ab3af..f5df8b6 100644
--- a/public/app/main/apps/tools/i18n/fi.json
+++ b/public/app/main/apps/tools/i18n/fi.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "käsikirjoitus",
 		"SCRIPT_INFO": "Tiedot",
 		"SCRIPT_TYPE": "Tyyppi",
-		"MOTION_TAB": "Uusi edustajan hallintapaneeli -välilehti"
+		"MOTION_TAB": "Uusi edustajan hallintapaneeli -välilehti",
+		"WHATSAPP": "WhatsApp-liitin"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/fr.json b/public/app/main/apps/tools/i18n/fr.json
index 544da64..a960933 100644
--- a/public/app/main/apps/tools/i18n/fr.json
+++ b/public/app/main/apps/tools/i18n/fr.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Scénario",
 		"SCRIPT_INFO": "Info",
 		"SCRIPT_TYPE": "Type",
-		"MOTION_TAB": "Onglet Nouveau tableau de bord d'agent"
+		"MOTION_TAB": "Onglet Nouveau tableau de bord d'agent",
+		"WHATSAPP": "Connecteur WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/he.json b/public/app/main/apps/tools/i18n/he.json
index 2c56c43..04a17e6 100644
--- a/public/app/main/apps/tools/i18n/he.json
+++ b/public/app/main/apps/tools/i18n/he.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "תסריט",
 		"SCRIPT_INFO": "מידע",
 		"SCRIPT_TYPE": "סוג",
-		"MOTION_TAB": "כרטיסיית לוח מחוונים לסוכן חדש"
+		"MOTION_TAB": "כרטיסיית לוח מחוונים לסוכן חדש",
+		"WHATSAPP": "מחבר WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/hi.json b/public/app/main/apps/tools/i18n/hi.json
index cd321fb..4fb2ea7 100644
--- a/public/app/main/apps/tools/i18n/hi.json
+++ b/public/app/main/apps/tools/i18n/hi.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "लिपि",
 		"SCRIPT_INFO": "जानकारी",
 		"SCRIPT_TYPE": "प्रकार",
-		"MOTION_TAB": "नया एजेंट डैशबोर्ड टैब"
+		"MOTION_TAB": "नया एजेंट डैशबोर्ड टैब",
+		"WHATSAPP": "WhatsApp कनेक्टर"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/id.json b/public/app/main/apps/tools/i18n/id.json
index 06eedb6..2fe513a 100644
--- a/public/app/main/apps/tools/i18n/id.json
+++ b/public/app/main/apps/tools/i18n/id.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Naskah",
 		"SCRIPT_INFO": "Info",
 		"SCRIPT_TYPE": "Mengetik",
-		"MOTION_TAB": "Tab Dashboard Agen Baru"
+		"MOTION_TAB": "Tab Dashboard Agen Baru",
+		"WHATSAPP": "Konektor WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/it.json b/public/app/main/apps/tools/i18n/it.json
index 8ef5d70..96f0ab9 100644
--- a/public/app/main/apps/tools/i18n/it.json
+++ b/public/app/main/apps/tools/i18n/it.json
@@ -451,6 +451,7 @@
 		"HEADERS": "Headers",
 		"REPORTFOLDER": "Cartella Report",
 		"REPORTSUBFOLDER": "Sottocartella Report",
-		"AGENT": "Agente"
+		"AGENT": "Agente",
+		"WHATSAPP": "WhatsApp Connector"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/ja.json b/public/app/main/apps/tools/i18n/ja.json
index a275393..418fa14 100644
--- a/public/app/main/apps/tools/i18n/ja.json
+++ b/public/app/main/apps/tools/i18n/ja.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "スクリプト",
 		"SCRIPT_INFO": "情報",
 		"SCRIPT_TYPE": "タイプ",
-		"MOTION_TAB": "新しいエージェントダッシュボードタブ"
+		"MOTION_TAB": "新しいエージェントダッシュボードタブ",
+		"WHATSAPP": "WhatsAppコネクタ"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/ko.json b/public/app/main/apps/tools/i18n/ko.json
index e6d2a06..289e543 100644
--- a/public/app/main/apps/tools/i18n/ko.json
+++ b/public/app/main/apps/tools/i18n/ko.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "스크립트",
 		"SCRIPT_INFO": "정보",
 		"SCRIPT_TYPE": "유형",
-		"MOTION_TAB": "새 상담원 대시 보드 탭"
+		"MOTION_TAB": "새 상담원 대시 보드 탭",
+		"WHATSAPP": "WhatsApp 커넥터"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/lv.json b/public/app/main/apps/tools/i18n/lv.json
index 9a289fd..9bc752f 100644
--- a/public/app/main/apps/tools/i18n/lv.json
+++ b/public/app/main/apps/tools/i18n/lv.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Skripts",
 		"SCRIPT_INFO": "Informācija",
 		"SCRIPT_TYPE": "Veids",
-		"MOTION_TAB": "Jauna aģenta informācijas paneļa cilne"
+		"MOTION_TAB": "Jauna aģenta informācijas paneļa cilne",
+		"WHATSAPP": "WhatsApp savienotājs"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/nl.json b/public/app/main/apps/tools/i18n/nl.json
index 74f9bba..43c418f 100644
--- a/public/app/main/apps/tools/i18n/nl.json
+++ b/public/app/main/apps/tools/i18n/nl.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Script",
 		"SCRIPT_INFO": "info",
 		"SCRIPT_TYPE": "Type",
-		"MOTION_TAB": "Nieuw agent-dashboardtabblad"
+		"MOTION_TAB": "Nieuw agent-dashboardtabblad",
+		"WHATSAPP": "WhatsApp-aansluiting"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/no.json b/public/app/main/apps/tools/i18n/no.json
index 1c0e2eb..de0211e 100644
--- a/public/app/main/apps/tools/i18n/no.json
+++ b/public/app/main/apps/tools/i18n/no.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Manus",
 		"SCRIPT_INFO": "info",
 		"SCRIPT_TYPE": "Type",
-		"MOTION_TAB": "Ny Agent Dashboard-fane"
+		"MOTION_TAB": "Ny Agent Dashboard-fane",
+		"WHATSAPP": "WhatsApp-kontakt"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/pl.json b/public/app/main/apps/tools/i18n/pl.json
index 6305688..0d3313e 100644
--- a/public/app/main/apps/tools/i18n/pl.json
+++ b/public/app/main/apps/tools/i18n/pl.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Scenariusz",
 		"SCRIPT_INFO": "Informacje",
 		"SCRIPT_TYPE": "Rodzaj",
-		"MOTION_TAB": "Nowa karta Pulpit nawigacyjny agenta"
+		"MOTION_TAB": "Nowa karta Pulpit nawigacyjny agenta",
+		"WHATSAPP": "Złącze WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/pt-BR.json b/public/app/main/apps/tools/i18n/pt-BR.json
index e0d1c76..c17215a 100644
--- a/public/app/main/apps/tools/i18n/pt-BR.json
+++ b/public/app/main/apps/tools/i18n/pt-BR.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Roteiro",
 		"SCRIPT_INFO": "Informações",
 		"SCRIPT_TYPE": "Tipo",
-		"MOTION_TAB": "Nova guia Painel do agente"
+		"MOTION_TAB": "Nova guia Painel do agente",
+		"WHATSAPP": "Conector WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/pt-PT.json b/public/app/main/apps/tools/i18n/pt-PT.json
index a805e17..1000190 100644
--- a/public/app/main/apps/tools/i18n/pt-PT.json
+++ b/public/app/main/apps/tools/i18n/pt-PT.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Roteiro",
 		"SCRIPT_INFO": "Informações",
 		"SCRIPT_TYPE": "Tipo",
-		"MOTION_TAB": "Nova guia Painel do agente"
+		"MOTION_TAB": "Nova guia Painel do agente",
+		"WHATSAPP": "Conector WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/ru.json b/public/app/main/apps/tools/i18n/ru.json
index af0abd0..d198216 100644
--- a/public/app/main/apps/tools/i18n/ru.json
+++ b/public/app/main/apps/tools/i18n/ru.json
@@ -3,28 +3,28 @@
 		"BOT": "Voicebot",
 		"CALL": "Вызов",
 		"NAME": "Имя",
-		"TRUNKS": "Транки",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"TRUNKS": "Соединительные линии внешней АТС",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"ERRORS": {
-			"NAME_REQUIRED": "Обязательное поле",
-			"HOST_REQUIRED": "Обязательное поле",
-			"DEFAULTUSER_REQUIRED": "Обязательное поле",
-			"CALLERID_REQUIRED": "Обязательное поле",
-			"KEY_REQUIRED": "Обязательное поле",
-			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
-			"VALIDITYSTART_REQUIRED": "Обязательное поле",
-			"VALIDITYEND_REQUIRED": "Обязательное поле",
-			"MONTHDAY_REQUIRED": "Обязательное поле",
-			"HOUR_REQUIRED": "Обязательное поле",
-			"CONTENT_REQUIRED": "Обязательное поле",
-			"URL_REQUIRED": "Обязательное поле",
-			"URL_MUST_VALID_URL": "Неверный формат",
-			"APPLICATION_REQUIRED": "Обязательное поле",
-			"ARGUMENTS_REQUIRED": "Обязательное поле",
-			"NAME_MUST_VALID_PATTERN": "Неверный формат",
-			"POLLING_INTERVAL_REQUIRED": "Обязательное поле",
-			"TITLE_REQUIRED": "Обязательное поле",
-			"EMAILADDRESS_REQUIRED": "Обязательное поле",
+			"NAME_REQUIRED": "Это имя требуется",
+			"HOST_REQUIRED": "Хост не требуется",
+			"DEFAULTUSER_REQUIRED": "По умолчанию имя пользователя не требуется",
+			"CALLERID_REQUIRED": "Идентификатор вызывающего абонента не требуется",
+			"KEY_REQUIRED": "Ключ не требуется",
+			"CONFIRM_NOT_MATCH": "Пароли не' t соответствует",
+			"VALIDITYSTART_REQUIRED": "Время запуска не требуется",
+			"VALIDITYEND_REQUIRED": "Время окончания не требуется",
+			"MONTHDAY_REQUIRED": "Месяц день не требуется",
+			"HOUR_REQUIRED": "Час не требуется",
+			"CONTENT_REQUIRED": "Содержимое не требуется",
+			"URL_REQUIRED": "URL-адрес не требуется",
+			"URL_MUST_VALID_URL": "URL-адрес должен быть действительным",
+			"APPLICATION_REQUIRED": "Приложения не требуется",
+			"ARGUMENTS_REQUIRED": "Аргументы не требуется",
+			"NAME_MUST_VALID_PATTERN": "Имя должно быть записано в действительный формат",
+			"POLLING_INTERVAL_REQUIRED": "Интервал опроса не требуется",
+			"TITLE_REQUIRED": "Название не требуется",
+			"EMAILADDRESS_REQUIRED": "Адрес электронной почты не требуется",
 			"EVENTVARIABLES_REQUIRED": "Обязательное поле",
 			"TYPE_REQUIRED": "Обязательное поле",
 			"VALUE_REQUIRED": "Обязательное поле",
@@ -67,390 +67,391 @@
 			"TIMEOUT_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
 			"TIMEOUT_REQUIRED": "Обязательное поле"
 		},
-		"HOST": "Хост",
+		"HOST": "Принимающей",
 		"SECRET": "Секрет",
-		"DEFAULTUSER": "Пользователь по умолчанию",
+		"DEFAULTUSER": "Имя пользователя по умолчанию",
 		"DESCRIPTION": "Описание",
-		"ADD_TRUNK": "Добавить транк",
+		"ADD_TRUNK": "Добавить СЛ",
 		"HELP": {
-			"SECRET": "Пароль для аутентификации",
-			"HOST": "Домен или имя хоста",
-			"DEFAULTUSER": "Имя пользователя для аутентификации",
-			"CALLERID": "Идентификатор вызывающего абонента, в формате «имя» <number>",
-			"REGISTRY": "Строка регистрации, если этого требует провайдер, как правило, следующая: defaultuser:secret@host",
-			"FROMDOMAIN": "Установка домена по умолчанию в поле From: SIP сообщений, при работе в качестве SIP ua (клиента). В некоторых пунктах назначения может потребоваться обязательное идентификационное имя, а не только IP-адрес",
-			"FROMUSER": "Что ваш провайдер знает о вас. То, что пользователь должен указывать вместо callerid при совершении вызовов на одноранговый узел / peer (другой прокси-сервер SIP). Действительно только для типа = peer.",
-			"OUTBOUNDPROXY": "IP-адрес или DNS-имя SRV записи (исключая префикс _sip._udp): Имя SRV записи, имя хоста или IP-адрес исходящего прокси-сервера SIP. Отправлять исходящие сигналы на этот прокси, а не напрямую на устройства. Действительно только для типа = peer.",
-			"PORT": "Номер порта SIP",
-			"CONTEXT": "Контекст для транка",
-			"TYPE": "Определить роль SIP в Asterisk. User: используется для аутентификации входящих вызовов – Peer: для исходящих вызовов – Friend: распространяется на обе вышеуказанные категории.",
-			"DTMFMODE": "Как происходит передача данных в двухтональном многочастотном формате (DTMF). RFC2833: режим по умолчанию, передача DTMF осуществляется с RTP, но за пределами аудиопотока. ВНУТРИ АУДИОДАННЫХ / INBAND: Передача DTMF осуществляется внутри аудиопотока текущего разговора (слышимость из динамиков). Требуется высокая загрузка процессора. INFO: Хотя этот метод очень надежен, он не поддерживается всеми устройствами УАТС, а также не поддерживается многими транками SIP.",
-			"NAT": "Измените поведение Asterisk для клиентов за брандмауэром. Если какой-либо из параметров, разделенных запятыми, имеет значение «нет», Asterisk будет игнорировать любые другие параметры и установит nat = no.",
-			"QUALIFY": "Определить, когда SIP достижим",
-			"ALLOWCODECS": "Разрешенные кодеки в порядке предпочтения",
-			"INSECURE": "Указать, как обрабатывать соединения с одноранговым узлом / peer, разрешив небезопасные настройки",
-			"CALL_LIMIT": "Предельное количество одновременных входящих и исходящих звонков",
-			"DIRECTMEDIA": "Asterisk по умолчанию пытается перенаправить поток мультимедиа данных RTP для прямого перехода от вызывающего абонента к вызываемому. Некоторые устройства не поддерживают это (особенно в случае, когда одно из них находится за NAT). Значением по умолчанию является ДА. Если у вас находятся за NAT все клиенты или вы по какой-либо другой причине хотите, чтобы Asterisk оставался на пути аудио, вы можете отключить функцию.",
-			"CALLCOUNTER": "Включить счетчики вызовов устройств",
-			"ADD_PHONE_TO_URI": "Определить, требуется ли провайдеру «;user=phone» в URL",
-			"TRUST_REMOTE_PARTY_ID": "Определить, следует ли доверять идентификатору удаленной стороны",
-			"SEND_REMOTE_PARTY_ID_HEADER": "Определить, должен ли отправляться идентификатор удаленной стороны (по умолчанию – нет)",
-			"ENCRYPTION": "Предлагать ли медиаданные в зашифрованном с помощью SRTP виде (и только медиаданные в зашифрованном с помощью SRTP виде) при исходящих вызовах на одноранговый узел / peer. Вызовы с HANGUPCAUSE = 58 будут неудачными, если одноранговый узел / peer не поддерживает SRTP. Значение по умолчанию – «Нет»",
-			"TRANSPORT": "Установить транспорт по умолчанию в порядке предпочтения",
-			"OTHERFIELDS": "Другие поля, которые нужно добавить в файлы конфигурации транков. Следовать стандартному формату Asterisk (ключ = значение), значение каждого поля должно быть в одной строке",
-			"EMAILADDRESS": "Добавить один или несколько адресов электронной почты, разделенных запятыми (например, [email-masked], [email-masked])",
-			"NAME": "Поддерживаются только цифры, буквы и специальные символы (._)",
-			"EVENTVARIABLES": "Если данный параметр включен, он добавляет все переменные события в URL (рекомендуемое значение = Нет. Устанавливать «Да» исключительно в целях оценки) ",
-			"T38PT_UDPTL": "Es: yes,redundancy,maxdatagram=400 – параметр включает возможность приема факса от оператора связи",
-			"EMAILBCCADDRESS": "Добавить один или несколько адресов электронной почты, разделенных запятыми (например, [email-masked], [email-masked])",
-			"EMAILCCADDRESS": "Добавить один или несколько адресов электронной почты, разделенных запятыми (например, [email-masked], [email-masked])",
-			"BODY": "Примечание: тело («body») должно быть в формате RAW JSON {«ключ»:«значение»} Примечание: если раздел не заполняется, будет отправлено значение по умолчанию",
+			"SECRET": "Пароль аутентификации для обратитесь к поставщику услуг.",
+			"HOST": "Домен или имя хоста для поставщика услуг.",
+			"DEFAULTUSER": "Имя пользователя аутентификации связаться с поставщиком услуг.",
+			"CALLERID": "Идентификатор вызывающего абонента в формате \"Имя\" <number>",
+			"REGISTRY": "Магистральный реестра строки, требуются некоторыми поставщиками услуг, обычно defaultuser:secret@host.",
+			"FROMDOMAIN": "Устанавливает значение по умолчанию:домен в сообщений SIP, когда они выступают в качестве SIP-ua (клиент). Некоторые назначения могут потребовать обязательных удостоверений личности имя вместо только IP-адрес.",
+			"FROMUSER": "Как ваш п оставщиков могли предоставлять услуги знает вас. Это которой пользователю ввести вместо от идентификаторавызывающего абонента при совершении вызовов для сверстников (Другой прокси-сервер SIP). Действителен только для type=peer.",
+			"OUTBOUNDPROXY": "IP_адрес или DNS SRV имя (исключая _sip._udp префикс) : SRV имя, имя хоста или IP адрес исходящего прокси-сервера SIP. Отправка исходящих вызовов для данного прокси не непосредственно к устройствам. Действителен только для type=peer.",
+			"PORT": "Номер порта мы хотим для подключения к удаленной стороне.",
+			"CONTEXT": "В этом контексте пригодными для соединительной линии.",
+			"TYPE": "Определяет роль SIP в Asterisk. Пользователь: используется для проверки подлинности входящих - Одноранговые сети: для исходящих вызовов - друга: охватывает как характеристики выше.",
+			"DTMFMODE": "Как DTMF (двухтональный многочастотный набор значений Dual-Tone Multi) отправляются: RFC2833: режим по умолчанию, DTMF отправляются с RTP, но за пределами аудио поток. Внутриполосный: DTMF отправляется в аудио поток текущего разговора становится слышен из громкоговорителей. Требует высокой загрузки ЦП. INFO: Хотя этот метод является очень надежной, она поддерживается не всеми устройствами офисной АТС и многие SIP.",
+			"NAT": "Изменяет поведение звездочка для клиентов за брандмауэром.Если любое из разделенных запятыми параметров 'Нет', звездочка будет игнорировать любые другие параметры и настройки NAT=no.",
+			"QUALIFY": "Определяет, когда SIP - это достижимая цель.",
+			"ALLOWCODECS": "Разрешено кодеки в порядке их предпочтения.",
+			"INSECURE": "Указывает способ соединения ручки с одноранговой сети, позволяя небезопасных настроек.",
+			"CALL_LIMIT": "Предельное количество входящих и исходящих вызовов в то время.",
+			"DIRECTMEDIA": "Звездочка по умолчанию пытается переориентировать RTP поток перейти непосредственно от вызывающего абонента для вызываемого абонента. Некоторые устройства не поддерживают этот (особенно если один из них находится за NAT). По умолчанию параметр имеет значение \"Да\". Если у вас есть все клиенты за NAT или по любой иной причине хотите звездочка на пребывание в звуковой тракт, если вы хотите включить эту off (выкл.).",
+			"CALLCOUNTER": "Включить счетчики вызовов на устройствах.",
+			"ADD_PHONE_TO_URI": "Определить, если поставщик требует ';user=Телефон' на URL.",
+			"TRUST_REMOTE_PARTY_ID": "Определите Remote-Party-ID должен быть надежным.",
+			"SEND_REMOTE_PARTY_ID_HEADER": "Статус",
+			"ENCRYPTION": "Определите Remote-Party-ID должны быть отправлены (по умолчанию отсутствует).",
+			"TRANSPORT": "Установить значение по умолчанию для транспорта. Порядок определяет основной транспортом по умолчанию.",
+			"OTHERFIELDS": "Другие поля для добавления в соединительные линии conf файлы. Должны быть записаны в формате звездочка (клавиша=значение), каждое поле на одной строке.",
+			"EMAILADDRESS": "Вы можете добавить несколько адресов с помощью запятыми (например, [email-masked], [email-masked])",
+			"NAME": "Только цифры, буквы и специальные символы (_) поддерживаются",
+			"EVENTVARIABLES": "Если функция включена, она добавляет все случае переменные для url-адреса",
+			"T38PT_UDPTL": "Эс: да, избыточность, maxdatagram=400",
+			"EMAILBCCADDRESS": "Добавьте один или несколько адресов, разделенных запятыми (например, [email-masked], [email-masked])",
+			"EMAILCCADDRESS": "Добавьте один или несколько адресов, разделенных запятыми (например, [email-masked], [email-masked])",
+			"BODY": "Если не заполнено, будет отправлено значение по умолчанию",
 			"INFO": "Вставить заголовок",
 			"SCRIPT": "Вставить скрипт",
-			"SCRIPT_INFO": "Вставить описание для скрипта",
-			"SCRIPT_TYPE": "Вставить типологию для скрипта (например, curl, bash...)",
-			"HEADERS": "Примечание: раздел заголовков должен быть в формате RAW JSON {«ключ»:«значение»} Примечание: если раздел не заполняется, будет отправлено значение по умолчанию",
-			"TIMEOUT": "Время ожидания запроса в секундах. Значение должно составлять от 1 до 10, а значение по умолчанию – 5."
+			"SCRIPT_INFO": "Вставьте описание для скрипта",
+			"SCRIPT_TYPE": "Вставьте типологию для сценария (например, curl, bash ...)",
+			"HEADERS": "Примечание. Раздел заголовков должен быть в формате RAW JSON {\"ключ\": \"значение\"}\nПримечание: если не заполнено, будет отправлено значение по умолчанию",
+			"TIMEOUT": "Время ожидания запроса в секундах. Значение должно быть от 1 до 10, а значение по умолчанию - 5."
 		},
-		"EDIT_TRUNK": "Редактировать транк",
-		"DELETE_TRUNK": "Удалить транк",
-		"CREATED_AT": "Создано на",
+		"EDIT_TRUNK": "Редактировать СЛ",
+		"DELETE_TRUNK": "Удалить СЛ",
+		"CREATED_AT": "Созданные в",
 		"SETTINGS": "Настройки",
-		"ADVANCED": "Продвинутый",
-		"OTHER": "Другое",
-		"ACTIVE": "Активные",
-		"CONTEXT": "Контекст",
+		"ADVANCED": "Расширенные возможности",
+		"OTHER": "Другие",
+		"ACTIVE": "Активно",
+		"CONTEXT": "Контексте",
 		"CALLERID": "Идентификатор вызывающего абонента",
 		"TYPE": "Тип",
-		"DTMFMODE": "Режим DTMF",
+		"DTMFMODE": "В режиме DTMF",
 		"NAT": "NAT",
-		"QUALIFY": "Параметр Qualify",
-		"ALLOWCODECS": "Разрешенные кодеки",
-		"INSECURE": "Параметр Insecure",
+		"QUALIFY": "Претендовать",
+		"ALLOWCODECS": "Разрешено кодеки",
+		"INSECURE": "Небезопасные",
 		"REGISTRY": "Реестр",
-		"DIRECTMEDIA": "Параметр Direct Media",
+		"DIRECTMEDIA": "Direct Media",
 		"CALLCOUNTER": "Счетчик вызовов",
 		"FROMDOMAIN": "Из домена",
 		"FROMUSER": "От пользователя",
-		"OUTBOUNDPROXY": "Outbound Proxy / Прокси, принимающий запросы от клиента",
-		"ADD_PHONE_TO_URI": "Добавить телефон в URL",
-		"TRUST_REMOTE_PARTY_ID": "Доверять идентификатору удаленной стороны",
-		"SEND_REMOTE_PARTY_ID_HEADER": "Отправить заголовок Remote-Party-ID (идентификатор удаленной стороны)",
-		"ENCRYPTION": "Шифрование",
+		"OUTBOUNDPROXY": "Исходящий прокси",
+		"ADD_PHONE_TO_URI": "Добавить телефон для URL",
+		"TRUST_REMOTE_PARTY_ID": "Целевой идентификатора удаленного абонента",
+		"SEND_REMOTE_PARTY_ID_HEADER": "Отправка идентификатора удаленного абонента жатки",
+		"ENCRYPTION": "Шифрование данных",
 		"PORT": "Порт",
-		"TRANSPORT": "Транспорт",
+		"TRANSPORT": "Транспорта",
 		"SAVE": "Сохранить",
 		"VARIABLES": "Переменные",
 		"ADD_VARIABLE": "Добавить переменную",
-		"EDIT_VARIABLE": "Редактировать переменную",
+		"EDIT_VARIABLE": "Редактирование переменной",
 		"DELETE_VARIABLE": "Удалить переменную",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
-		"TAGS": "Теги",
-		"ADD_TAG": "Добавить тег",
-		"EDIT_TAG": "Редактирование тега",
-		"DELETE_TAG": "Удалить тег",
-		"PAUSES": "Паузы",
-		"ADD_PAUSE": "Добавить паузу",
-		"EDIT_PAUSE": "Редактировать паузу",
-		"DELETE_PAUSE": "Удалить паузу",
-		"ADD_CANNEDANSWER": "Добавить заранее определенный ответ",
-		"EDIT_CANNEDANSWER": "Редактировать заранее определенный ответ",
-		"DELETE_CANNEDANSWER": "Удалить заранее определенный ответ",
-		"KEY": "Ключ",
+		"SELECT_NONE": "Выберите пункт None",
+		"TAGS": "Теги индексов",
+		"ADD_TAG": "Добавить метки",
+		"EDIT_TAG": "Изменить тег индекса",
+		"DELETE_TAG": "Удалить метку",
+		"PAUSES": "Приостановка",
+		"ADD_PAUSE": "Добавление паузы",
+		"EDIT_PAUSE": "Редактировать Пауза",
+		"DELETE_PAUSE": "Удалить паузы",
+		"ADD_CANNEDANSWER": "Добавить консервированных ответ",
+		"EDIT_CANNEDANSWER": "Редактировать консервированных ответ",
+		"DELETE_CANNEDANSWER": "Удалить ответ консервов",
+		"KEY": "Ключ зажигания",
 		"VALUE": "Значение",
 		"SOUNDS": "Звуки",
-		"EDIT_SOUND": "Редактировать звук",
-		"DELETE_SOUND": "Удалить звук",
-		"FINISH": "Завершить",
-		"DROP_TO_UPLOAD": "Перетащить для загрузки",
+		"EDIT_SOUND": "Редактирование звука",
+		"DELETE_SOUND": "Удалить звуковой",
+		"FINISH": "Готово",
+		"DROP_TO_UPLOAD": "Раскрывающийся список для загрузки",
 		"TRIGGERS": "Триггеры",
-		"EDIT_TRIGGER": "Редактировать триггер",
+		"EDIT_TRIGGER": "Изменить триггер",
 		"DELETE_TRIGGER": "Удалить триггер",
 		"ADD_TRIGGER": "Добавить триггер",
 		"DELETE": "Удалить",
-		"AUTOMATIONS": "Автоматизации",
-		"EDIT_AUTOMATION": "Редактировать автоматизацию",
-		"DELETE_AUTOMATION": "Удалить автоматизацию",
-		"ADD_AUTOMATION": "Добавить автоматизацию",
-		"INTERVALS": "Интервалы",
-		"EDIT_INTERVAL": "Редактировать интервал",
+		"AUTOMATIONS": "Измерительные машины",
+		"EDIT_AUTOMATION": "Редактировать автоматизации",
+		"DELETE_AUTOMATION": "Удалить автоматизации",
+		"ADD_AUTOMATION": "Автоматизация",
+		"INTERVALS": "Интервалы времени",
+		"EDIT_INTERVAL": "Изменить интервал",
 		"DELETE_INTERVAL": "Удалить интервал",
 		"ADD_INTERVAL": "Добавить интервал",
 		"TOOLS": "Инструменты",
-		"ID": "Идентификатор",
+		"ID": "Id",
 		"AUDIO": "Аудио",
-		"DOWNLOAD_SOUND": "Скачать звук",
+		"DOWNLOAD_SOUND": "Загрузить звук",
 		"UPLOAD_SOUND": "Инструменты",
 		"CHANNEL": "Канал",
 		"NEW_TRIGGER": "Новый триггер",
-		"GENERAL": "Общие",
-		"STATUS": "Состояние",
-		"CONDITIONS&ACTIONS": "Условия и действия",
-		"ALLCONDITIONS": "Выполнить все данные условия:",
-		"ANYCONDITIONS": "Выполнить любое из данных условий:",
+		"GENERAL": "Генеральной",
+		"STATUS": "Статус",
+		"CONDITIONS&ACTIONS": "Условия и действия",
+		"ALLCONDITIONS": "Выполнить все эти условия:",
+		"ANYCONDITIONS": "Удовлетворить любое из этих условий:",
 		"ACTIONS": "Действия:",
-		"NEW_AUTOMATION": "Новая автоматизация",
-		"TIMEOUT": "Тайм-аут",
-		"PEERSTATUS": "Статус однорангового узла / Peer",
-		"CALL_LIMIT": "Ограничение вызовов",
+		"NEW_AUTOMATION": "Новые средства автоматизации",
+		"TIMEOUT": "Превышение лимита времени",
+		"PEERSTATUS": "Экспертный статус",
+		"CALL_LIMIT": "Призывает ограничить",
 		"OTHERFIELDS": "Другие поля",
-		"NEW_VARIABLE": "Новая переменная",
-		"NEW_TAG": "Новый тег",
-		"NEW_PAUSE": "Новая пауза",
-		"NEW_CANNEDANSWER": "Новый заранее определенный ответ",
-		"CONFIRM_PASSWORD": "Подтверждение пароля",
-		"NEW_TRUNK": "Новый транк",
-		"FROM": "От",
-		"TO": "Кому",
+		"NEW_VARIABLE": "Новой переменной",
+		"NEW_TAG": "Новую метку",
+		"NEW_PAUSE": "Новая Пауза",
+		"NEW_CANNEDANSWER": "Новые консервы ответ",
+		"CONFIRM_PASSWORD": "Подтвердите пароль",
+		"NEW_TRUNK": "Новой группе соединительных линий",
+		"FROM": "Из",
+		"TO": "Для",
 		"WEEKDAY": "День недели",
 		"MONTHDAY": "День месяца",
 		"MONTH": "Месяц",
 		"ALWAYS": "Всегда",
 		"MON": "Понедельник",
-		"TUE": "Вторник",
-		"WED": "Среда",
+		"TUE": "Во вторник",
+		"WED": "Среду",
 		"THU": "Четверг",
 		"FRI": "Пятница",
 		"SAT": "Суббота",
 		"SUN": "Воскресенье",
 		"JAN": "Январь",
-		"FEB": "Февраль",
-		"MAR": "Март",
-		"APR": "Апрель",
-		"MAY": "Май",
+		"FEB": "Февраля",
+		"MAR": "Марта",
+		"APR": "Апреля",
+		"MAY": "Мая",
 		"JUN": "Июнь",
-		"JUL": "Июль",
-		"AUG": "Август",
+		"JUL": "Июля",
+		"AUG": "Августа",
 		"SEP": "Сентябрь",
-		"OCT": "Октябрь",
+		"OCT": "Октября",
 		"NOV": "Ноябрь",
 		"DEC": "Декабрь",
 		"PASSWORD": "Пароль",
-		"CUSTOMDASHBOARDS": "Пользовательские панели обработки",
-		"NEW_CUSTOMDASHBOARD": "Новая пользовательская панель обработки",
-		"ADD_CUSTOMDASHBOARD": "Добавить пользовательскую панель обработки",
-		"EDIT_CUSTOMDASHBOARD": "Редактировать пользовательскую панель обработки",
-		"DELETE_CUSTOMDASHBOARD": "Удалить пользовательскую панель обработки",
+		"CUSTOMDASHBOARDS": "Custom инструментальных панелей",
+		"NEW_CUSTOMDASHBOARD": "Новый пользовательский приборной панели",
+		"ADD_CUSTOMDASHBOARD": "Добавить пользовательские приборной панели",
+		"EDIT_CUSTOMDASHBOARD": "Редактировать пользовательский приборной панели",
+		"DELETE_CUSTOMDASHBOARD": "Удалить пользовательские приборной панели",
 		"SCHEDULER": "Планировщик",
-		"NEW_SCHEDULE": "Новое расписание",
+		"NEW_SCHEDULE": "Новый График",
 		"ADD_SCHEDULE": "Добавить расписание",
-		"EDIT_SCHEDULE": "Редактировать расписание",
-		"DELETE_SCHEDULE": "Удалить расписание",
-		"SENDMAIL": "Отправить письмо",
+		"EDIT_SCHEDULE": "Редактирование расписания",
+		"DELETE_SCHEDULE": "Удалить график",
+		"SENDMAIL": "Отправка сообщения электронной почты",
 		"CONFIGURATION": "Конфигурация",
-		"MAIL": "Электронная почта",
+		"MAIL": "По электронной почте",
 		"REPORTTYPE": "Тип отчета",
-		"REPORT": "Отчет",
-		"OUTPUT": "Вывод",
-		"EXECUTEON": "Выполнить в",
-		"REPORTRANGE": "Диапазон отчетов",
+		"REPORT": "Доклад",
+		"OUTPUT": "Выход",
+		"EXECUTEON": "Выполнить на",
+		"REPORTRANGE": "Доклад диапазон",
 		"VALIDITYSTART": "Время начала",
 		"VALIDITYEND": "Время окончания",
-		"EXECUTEEVERY": "Выполнить каждый",
-		"ACCOUNT": "Учетная запись",
-		"EMAILADDRESS": "Электронная почта",
+		"EXECUTEEVERY": "Выполнить все",
+		"ACCOUNT": "Счета",
+		"EMAILADDRESS": "Адрес электронной почты",
 		"CURRENTDAY": "Текущий день",
-		"DAILY": "Ежедневн.",
-		"WEEKLY": "Еженедельн.",
-		"MONTHLY": "Ежемесячн.",
+		"DAILY": "Ежедневно",
+		"WEEKLY": "Еженедельно",
+		"MONTHLY": "За месяц",
 		"PREVIOUS_DAY": "Предыдущий день",
-		"LAST_SEVEN_DAYS": "Последние семь дней",
-		"LAST_THIRTY_DAYS": "Последние тридцать дней",
-		"LAST_MONTH": "Прошлый месяц",
+		"LAST_SEVEN_DAYS": "За последние семь дней",
+		"LAST_THIRTY_DAYS": "В прошлом Thirthy дней",
+		"LAST_MONTH": "В прошлом месяце",
 		"WEEKDAYS": "Дни недели",
 		"HOUR": "Час",
 		"DEFAULT": "По умолчанию",
 		"CSV": "CSV",
-		"PDF": "PDF",
-		"15MIN": "15 минут",
-		"30MIN": "30 минут",
-		"1H": "1 час",
-		"VOICE": "Голос",
+		"PDF": "В ФОРМАТЕ PDF",
+		"15MIN": "15 минут",
+		"30MIN": "30 минут",
+		"1H": "1 час",
+		"VOICE": "Голосовой связи",
 		"CHAT": "Чат",
 		"SMS": "SMS",
-		"OPENCHANNEL": "Открытый канал",
+		"OPENCHANNEL": "Открыть канал",
 		"TEMPLATES": "Шаблоны",
-		"EDIT_TEMPLATE": "Редактировать шаблон",
-		"DELETE_TEMPLATE": "Удалить шаблон",
+		"EDIT_TEMPLATE": "Изменить шаблон",
+		"DELETE_TEMPLATE": "Удаление шаблона",
 		"NEW_TEMPLATE": "Новый шаблон",
 		"ADD_TEMPLATE": "Добавить шаблон",
 		"CONTENT": "Содержание",
 		"FIELD": "Поле",
-		"NO_ANYCONDITION_AVAILABLE": "Условия отсутствуют",
-		"NO_ALLCONDITION_AVAILABLE": "Условия отсутствуют",
-		"NO_ACTION_AVAILABLE": "Действия отсутствуют",
-		"ACTION": "Действие",
-		"EDIT_ANYCONDITION": "Редактировать условие",
+		"NO_ANYCONDITION_AVAILABLE": "Условия не доступно",
+		"NO_ALLCONDITION_AVAILABLE": "Условия не доступно",
+		"NO_ACTION_AVAILABLE": "Действия недоступны",
+		"ACTION": "Действий",
+		"EDIT_ANYCONDITION": "Изменить состояние",
 		"DELETE_ANYCONDITION": "Удалить условие",
-		"NEW_ANYCONDITION": "Новое условие",
+		"NEW_ANYCONDITION": "Новое состояние",
 		"ADD_ANYCONDITION": "Добавить условие",
-		"EDIT_ALLCONDITION": "Редактировать условие",
+		"EDIT_ALLCONDITION": "Изменить состояние",
 		"DELETE_ALLCONDITION": "Удалить условие",
-		"NEW_ALLCONDITION": "Новое условие",
+		"NEW_ALLCONDITION": "Новое состояние",
 		"ADD_ALLCONDITION": "Добавить условие",
 		"EDIT_ACTION": "Редактировать действие",
-		"DELETE_ACTION": "Удалить действие",
-		"NEW_ACTION": "Новое действие",
+		"DELETE_ACTION": "Удаление действий",
+		"NEW_ACTION": "Новое Действие",
 		"ADD_ACTION": "Добавить действие",
-		"QUEUE": "Очередь",
-		"CALL_STATUS": "Статус вызова",
-		"OUTBOUNDROUTE": "Исходящий маршрут",
+		"QUEUE": "Очереди",
+		"CALL_STATUS": "Состояние вызова",
+		"OUTBOUNDROUTE": "Маршрут исходящих вызовов",
 		"EQUALS": "Равно",
-		"NOT_EQUALS": "Не равно",
-		"CONTACT_MANAGER": "Менеджер контактов",
-		"INTEGRATIONS": "Интеграции",
-		"MOTION_BAR": "Панель Motion Bar",
+		"NOT_EQUALS": "Не равняется",
+		"CONTACT_MANAGER": "Контакты Manager",
+		"INTEGRATIONS": "Интеграция",
+		"MOTION_BAR": "Бар движения",
 		"JSCRIPTY": "Jscripty",
-		"URL_FORWARD": "Перенаправление URL",
-		"WEB_POPUP": "Всплывающее окно (веб)",
+		"URL_FORWARD": "URL вперед",
+		"WEB_POPUP": "Web всплывающее окно",
 		"LIST": "Список",
 		"INTEGRATION": "Интеграция",
 		"TEMPLATE": "Шаблон",
 		"URL": "URL",
 		"APPLICATION": "Приложение",
 		"ARGUMENTS": "Аргументы",
-		"NO_APPS_AVAILABLE": "Доступные приложения отсутствуют",
-		"NEW_INTERVAL": "Новый интервал",
+		"NO_APPS_AVAILABLE": "Нет доступных приложений",
+		"NEW_INTERVAL": "Новые включите ее снова через",
 		"OPERATOR": "Оператор",
-		"NO_INTERVALS_AVAILABLE": "Интервалы отсутствуют",
+		"NO_INTERVALS_AVAILABLE": "Нет доступных интервалов",
 		"YES": "Да",
 		"NO": "Нет",
-		"SUBJECT": "Тема",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
+		"SUBJECT": "При условии",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
 		"BROWSER": "Браузер",
-		"INTERVAL": "Интервал",
-		"INFO": "Информация",
-		"TIME_RANGE": "Временной диапазон",
+		"INTERVAL": "Пробег до очередной замены масла",
+		"INFO": "Info",
+		"TIME_RANGE": "Диапазон времени",
 		"WEEK_DAYS": "Дни недели",
-		"MONTH_DAYS": "Дни месяца",
-		"MONTHS": "Месяцы",
-		"DROP_TO_UPLOAD_MESSAGE": "Перетащите аудиофайлы сюда для загрузки. Только MP3, WAV, GSM – макс. 15MB",
-		"POLLING_INTERVAL": "Интервал для опроса (секунды)",
-		"DASHBOARD": "Панель обработки",
-		"NEW_DASHBOARDITEM": "Новый виджет панели обработки",
+		"MONTH_DAYS": "Месяц дней",
+		"MONTHS": "Месяцев",
+		"DROP_TO_UPLOAD_MESSAGE": "Также можно перетащить аудио для загрузки здесь. Только MP3, WAV, GSM - Max. 15МБ",
+		"POLLING_INTERVAL": "Интервал опроса (секунд)",
+		"DASHBOARD": "Приборной Панели",
+		"NEW_DASHBOARDITEM": "Новый виджет на приборной панели",
 		"COUNTER": "Счетчик",
 		"IFRAME": "IFrame",
 		"CLOCK": "Часы",
-		"ADD_DASHBOARDITEM": "Добавить виджет панели обработки",
+		"ADD_DASHBOARDITEM": "Добавить виджет на приборной панели",
 		"EDIT_WIDGET": "Редактировать виджет",
 		"DELETE_WIDGET": "Удалить виджет",
-		"FLIP_WIDGET": "Flip Widget",
-		"TITLE": "Заголовок",
-		"UPDATE": "Обновить",
-		"LAYOUT": "Раскладка",
+		"FLIP_WIDGET": "Flip виджет",
+		"TITLE": "Название",
+		"UPDATE": "Обновление",
+		"LAYOUT": "Компоновка",
 		"BACKGROUND_COLOR": "Цвет фона",
-		"FOREGROUND_COLOR": "Цвет переднего плана",
-		"FOREGROUND_TITLE_COLOR": "Цвет заголовка переднего плана",
-		"THEME": "Тема",
-		"LIGHT": "Светлая",
-		"DARK": "Темная",
-		"TIMEZONE": "TimeZone",
+		"FOREGROUND_COLOR": "Основной цвет",
+		"FOREGROUND_TITLE_COLOR": "На переднем плане название цвета",
+		"THEME": "Темы",
+		"LIGHT": "Лампа",
+		"DARK": "Темный",
+		"TIMEZONE": "Часовой пояс",
 		"DIGITAL_FORMAT": "Цифровой формат даты",
 		"TOOLS_QUERY": "Запрос",
-		"SELECT": "Выбрать",
-		"WHERE": "Куда",
+		"SELECT": "Выберите",
+		"WHERE": "Где",
 		"BACK": "Назад",
 		"PROJECT": "Проект",
-		"GOTOREALTIME_TRUNK": "Перейти к транку в реальном времени",
-		"GOTO_TRUNK": "Перейти к транку",
-		"CRON": "Планировщик Cron",
-		"MINUTES": "Минуты",
-		"HOURLY": "Каждый час",
-		"YEARLY": "Каждый год",
+		"GOTOREALTIME_TRUNK": "Перейдите к в режиме реального времени СЛ",
+		"GOTO_TRUNK": "Перейдите к соединительной линии",
+		"CRON": "Cron",
+		"MINUTES": "Минут",
+		"HOURLY": "Почасовая",
+		"YEARLY": "Ежегодно",
 		"EVERY": "Каждый",
-		"MINUTE": "Минута",
-		"ON_SECOND": "По секундам",
-		"HOUR_ON_MINUTE": "Час: по минутам",
-		"AND_SECOND": "И секундам",
+		"MINUTE": "Минуты",
+		"ON_SECOND": "На второй",
+		"HOUR_ON_MINUTE": "Час в минуту",
+		"AND_SECOND": "И второй",
 		"DAY_AT": "День в",
 		"START_TIME": "Время начала",
-		"ON_THE": "В",
+		"ON_THE": "По вопросу о",
 		"OF_EVERY": "Каждого",
-		"MONTH_AT": "Месяц в",
-		"AT": "В",
-		"LAST": "Последняя",
-		"LASTUNIT": "Единица",
+		"MONTH_AT": "Месяц на",
+		"AT": "На",
+		"LAST": "В прошлом",
+		"LASTUNIT": "Блок управления",
 		"MAILACCOUNT": "Учетная запись электронной почты",
-		"OF": "из",
-		"PAST_THE_HOUR": "После часа",
+		"OF": "В",
+		"PAST_THE_HOUR": "За час",
 		"DAY": "День",
 		"WEEK": "Неделя",
 		"YEAR": "Год",
-		"ON": "На",
-		"PAI": "P-Asserted-Идентичность",
+		"ON": "По вопросу о",
+		"PAI": "P-Asserted-Identity",
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OUTBOUND_ROUTE": "Исходящий маршрут",
-		"EVENTVARIABLES": "Переменные событий",
+		"OUTBOUND_ROUTE": "Маршрут исходящих вызовов",
+		"EVENTVARIABLES": "Мероприятие переменных",
 		"FAX": "Факс",
 		"INTERACTION": "Взаимодействие",
 		"MESSAGE": "Сообщение",
-		"T38PT_UDPTL": "T38pt Udptl",
-		"AUTOCREATECONTACT": "Автоматическое создание контактов",
+		"T38PT_UDPTL": "T38pt Udptl",
+		"AUTOCREATECONTACT": "Создание контакта автоматически",
 		"COLOR": "Цвет",
 		"LOCATION": "Местоположение",
 		"NEW_TAB": "Новая вкладка",
-		"NEW_WINDOW": "Новое окно",
-		"WINDOWWIDTH": "Ширина окна (px)",
-		"WINDOWHEIGHT": "Высота окна (px)",
-		"EDIT_DASHBOARDITEM": "Редактировать виджет панели обработки",
+		"NEW_WINDOW": "В новом окне",
+		"WINDOWWIDTH": "Ширину окна(px)",
+		"WINDOWHEIGHT": "Высота окна(px)",
+		"EDIT_DASHBOARDITEM": "Редактировать виджет панели мониторинга",
 		"FONTSIZE": "Размер шрифта",
-		"CLONE_CUSTOMDASHBOARD": "Клонирование пользовательской панели обработки",
-		"LINK": "Ссылка [https://]",
-		"BACKGROUND": "Фон",
-		"FOREGROUND": "Передний план",
-		"NONE": "Отсутствуют",
+		"CLONE_CUSTOMDASHBOARD": "Clone Custom Dashboard",
+		"LINK": "Ссылка [https: //]",
+		"BACKGROUND": "Задний план",
+		"FOREGROUND": "передний план",
+		"NONE": "Никто",
 		"TOTAL": "Всего",
-		"ABANDONED": "Потерянные",
-		"WAITING": "Ожидание",
-		"TALKING": "Текущий вызов",
-		"ANSWERED": "Отвеченные",
-		"UNMANAGED": "Необработанные",
+		"ABANDONED": "заброшенный",
+		"WAITING": "ждущий",
+		"TALKING": "говорящий",
+		"ANSWERED": "Ответил",
+		"UNMANAGED": "Неуправляемый",
 		"CUSTOMTYPE": "Пользовательский [путь]",
 		"WEBREPORT": "Веб-отчет",
 		"PIECHART": "Круговая диаграмма",
-		"MULTIBARCHART": "Многоаспектная столбчатая диаграмма",
+		"MULTIBARCHART": "Мультибиблиотечная карта",
 		"MOVE_WIDGET": "Переместить виджет",
-		"USERADD_CUSTOMDASHBOARD": "Добавить разрешения пользователя",
-		"GOTODASHBOARD_CUSTOMDASHBOARD": "Перейти к предварительному просмотру панели обработки",
-		"GOTO_CUSTOMDASHBOARD": "Перейти к предварительному просмотру панели обработки",
-		"METRIC": "Показатель",
-		"FILTERVOICEQUEUES": "Фильтрация: очереди голосовой почты",
-		"SERIE1": "Серия 1",
-		"SERIE2": "Серия 2",
-		"SERIE3": "Серия 3",
-		"REFRESH": "Обновить [с]",
+		"USERADD_CUSTOMDASHBOARD": "Добавить права пользователя",
+		"GOTODASHBOARD_CUSTOMDASHBOARD": "Перейти на панель предварительного просмотра",
+		"GOTO_CUSTOMDASHBOARD": "Перейти на панель предварительного просмотра",
+		"METRIC": "метрический",
+		"FILTERVOICEQUEUES": "Фильтровать очереди голоса",
+		"SERIE1": "Серия 1",
+		"SERIE2": "Серия 2",
+		"SERIE3": "Серия 3",
+		"REFRESH": "Обновить [s]",
 		"FORMAT": "Формат",
 		"PATH": "Абсолютный путь",
 		"ALL_USERS": "Все пользователи",
-		"SELECTED_USERS": "Выбранные пользователи",
+		"SELECTED_USERS": "Избранные пользователи",
 		"ADD_WIDGET": "Добавить виджет",
-		"NEXTCONTACT": "Следующий",
-		"SENDIFEMPTY": "Отправить в случае, если не введено значение",
+		"NEXTCONTACT": "следующий",
+		"SENDIFEMPTY": "Отправить, если пусто",
 		"CANCEL": "Отмена",
-		"UPLOADING": "Загрузка",
+		"UPLOADING": "Выгрузка",
 		"EMAILBCCADDRESS": "Bcc",
 		"EMAILCCADDRESS": "Cc",
-		"RUN_SCHEDULE": "Запустить расписание",
-		"ADD_DISPOSITION": "Добавить диспозицию",
-		"DELETE_DISPOSITION": "Удалить диспозицию",
-		"DISPOSITIONS": "Диспозиции",
-		"EDIT_DISPOSITION": "Редактировать диспозицию",
-		"NEW_DISPOSITION": "Новая диспозиция",
-		"CLONE_TRUNK": "Клонирование транка",
-		"BODY": "Тело",
-		"CANNEDANSWERS": "Заранее определенные ответы",
+		"RUN_SCHEDULE": "Расписание выполнения",
+		"ADD_DISPOSITION": "Добавить расклад",
+		"DELETE_DISPOSITION": "Удалить раскладку",
+		"DISPOSITIONS": "Распоряжения",
+		"EDIT_DISPOSITION": "Изменить расположение",
+		"NEW_DISPOSITION": "Новое расположение",
+		"CLONE_TRUNK": "Клон-сундук",
+		"BODY": "тело",
+		"CANNEDANSWERS": "Консервированные ответы",
 		"REPORTFOLDER": "Папка отчета",
 		"REPORTSUBFOLDER": "Подпапка отчета",
-		"PREVIOUSCONTACT": "Предыдущий",
+		"PREVIOUSCONTACT": "предыдущий",
 		"VIDEOSUPPORT": "Поддержка видео",
-		"AGENT": "Агент",
+		"AGENT": "агент",
 		"HEADERS": "Заголовки",
-		"SCRIPT": "Скрипт",
+		"SCRIPT": "скрипт",
 		"SCRIPT_INFO": "Информация",
 		"SCRIPT_TYPE": "Тип",
-		"MOTION_TAB": "Вкладка «Панель обработки: новый агент»"
+		"MOTION_TAB": "Вкладка «Новая панель агента»",
+		"WHATSAPP": "Коннектор WhatsApp"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/sv.json b/public/app/main/apps/tools/i18n/sv.json
index ae1814f..466cea0 100644
--- a/public/app/main/apps/tools/i18n/sv.json
+++ b/public/app/main/apps/tools/i18n/sv.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Manus",
 		"SCRIPT_INFO": "Info",
 		"SCRIPT_TYPE": "Typ",
-		"MOTION_TAB": "Ny Agent Dashboard-flik"
+		"MOTION_TAB": "Ny Agent Dashboard-flik",
+		"WHATSAPP": "WhatsApp-anslutning"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/tr.json b/public/app/main/apps/tools/i18n/tr.json
index 338421c..bd78bb6 100644
--- a/public/app/main/apps/tools/i18n/tr.json
+++ b/public/app/main/apps/tools/i18n/tr.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "Senaryo",
 		"SCRIPT_INFO": "Bilgi",
 		"SCRIPT_TYPE": "tip",
-		"MOTION_TAB": "Yeni Ajan Gösterge Tablosu Sekmesi"
+		"MOTION_TAB": "Yeni Ajan Gösterge Tablosu Sekmesi",
+		"WHATSAPP": "WhatsApp Bağlayıcısı"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/zh-CN.json b/public/app/main/apps/tools/i18n/zh-CN.json
index a8e4123..ef11912 100644
--- a/public/app/main/apps/tools/i18n/zh-CN.json
+++ b/public/app/main/apps/tools/i18n/zh-CN.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "脚本",
 		"SCRIPT_INFO": "信息",
 		"SCRIPT_TYPE": "类型",
-		"MOTION_TAB": "新代理仪表板选项卡"
+		"MOTION_TAB": "新代理仪表板选项卡",
+		"WHATSAPP": "WhatsApp连接器"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/tools/i18n/zh-TW.json b/public/app/main/apps/tools/i18n/zh-TW.json
index 5d96ac2..1db1f78 100644
--- a/public/app/main/apps/tools/i18n/zh-TW.json
+++ b/public/app/main/apps/tools/i18n/zh-TW.json
@@ -451,6 +451,7 @@
 		"SCRIPT": "腳本",
 		"SCRIPT_INFO": "信息",
 		"SCRIPT_TYPE": "類型",
-		"MOTION_TAB": "新代理儀表板選項卡"
+		"MOTION_TAB": "新代理儀表板選項卡",
+		"WHATSAPP": "WhatsApp連接器"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/video/i18n/ru.json b/public/app/main/apps/video/i18n/ru.json
index 8b5ac71..29770ae 100644
--- a/public/app/main/apps/video/i18n/ru.json
+++ b/public/app/main/apps/video/i18n/ru.json
@@ -3,38 +3,38 @@
 		"LEGEND": {},
 		"ERRORS": {},
 		"HELP": {},
-		"AGENT": "Агент",
-		"AGENTNAME": "Агент",
-		"CANT_DOWNLOAD_THIS_FILE": "Не могу скачать этот файл",
-		"CANT_PLAY_THIS_FILE": "Не могу воспроизвести данный тип файла",
-		"CHANNEL": "Канал",
+		"AGENT": "агент",
+		"AGENTNAME": "агент",
+		"CANT_DOWNLOAD_THIS_FILE": "Не могу скачать этот файл",
+		"CANT_PLAY_THIS_FILE": "Не могу воспроизвести этот тип файла",
+		"CHANNEL": "канал",
 		"CLOSEDAT": "Время окончания записи",
-		"CREATEDAT": "Создано в",
-		"DELETE": "Удалить",
-		"DELETE_SCREENRECORDING": "Удалить запись с экрана",
-		"DOWNLOAD_SCREENRECORDING": "Загрузить запись с экрана",
-		"DURATION": "Продолжительность",
-		"EDIT_SCREENRECORDING": "Оценить запись с экрана",
-		"FILE_NOT_FOUND": "Файл не найден",
+		"CREATEDAT": "Создан в",
+		"DELETE": "удалять",
+		"DELETE_SCREENRECORDING": "Удалить запись экрана",
+		"DOWNLOAD_SCREENRECORDING": "Скачать запись экрана",
+		"DURATION": "продолжительность",
+		"EDIT_SCREENRECORDING": "Запись экрана скорости",
+		"FILE_NOT_FOUND": "Файл не найден",
 		"FORMAT": "Формат",
-		"ID": "Идентификатор",
-		"INTERACTIONID": "Идентификатор взаимодействия",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"NO_RATING": "Рейтинг отсутствует",
+		"ID": "Мне бы",
+		"INTERACTIONID": "ID взаимодействия",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"NO_RATING": "Без рейтинга",
 		"OF": "из",
-		"PAGE": "Страница",
-		"PLAY_SCREENRECORDING": "Воспроизвести запись с экрана",
-		"PROPERTIES": "Свойства",
+		"PAGE": "страница",
+		"PLAY_SCREENRECORDING": "Воспроизведение записи экрана",
+		"PROPERTIES": "свойства",
 		"RATING": "Рейтинг",
 		"RECORDENDTIME": "Время окончания записи",
 		"RECORDSTARTTIME": "Время начала записи",
-		"ROWSPERPAGE": "Строк на странице",
+		"ROWSPERPAGE": "Строк на страницу",
 		"SAVE": "Сохранить",
-		"SCREENRECORDINGS": "Записи с экрана",
+		"SCREENRECORDINGS": "Записи экрана",
 		"SEARCH_FOR_ANYONE": "Поиск",
 		"STARTEDAT": "Время начала записи",
 		"UPDATEDAT": "Последнее обновление",
-		"VIDEO": "Видео",
-		"WRONG_EXTENSION": "Неправильное расширение имени файла"
+		"VIDEO": "видео",
+		"WRONG_EXTENSION": "Файл представляет неправильное расширение"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/ar.json b/public/app/main/apps/voice/i18n/ar.json
index 878fe8b..dfe527b 100644
--- a/public/app/main/apps/voice/i18n/ar.json
+++ b/public/app/main/apps/voice/i18n/ar.json
@@ -94,7 +94,8 @@
 			"YOUARENEXTANNOUNCE": "انت الان التالي ",
 			"CALLERIDALL": "التنسيق المدعوم: \"CallerId\" & lt؛ number & gt؛",
 			"CALLER_ID": "التنسيق المدعوم: \"CallerId\" & lt؛ number & gt؛",
-			"MANDATORYDISPOSITIONPAUSEID": "وقفة الوضع لتعيين أثناء التصرف الإلزامي"
+			"MANDATORYDISPOSITIONPAUSEID": "وقفة الوضع لتعيين أثناء التصرف الإلزامي",
+			"SERVICELEVEL": "الإعدادات الثانية لمستوى الخدمة (الافتراضي = 0 ، بدون ترخيص اشتراك). تُستخدم لإحصاءات مستوى الخدمة (يتم الرد على المكالمات خلال الإطار الزمني لمستوى الخدمة)"
 		},
 		"ABANDONEDCALLS": "مكالمات Queue مهجورة",
 		"ACCOUNTNAME": "أسم الحساب",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "وقف تسجيل الشاشة",
 		"TOOLTIP_SCREENRECORDING_OFF": "تسجيل الشاشة المتاحة",
 		"TOOLTIP_SCREENRECORDING_ON": "تسجيل الشاشة في التقدم",
-		"WRONG_EXTENSION": "يعرض الملف الامتداد الخاطئ"
+		"WRONG_EXTENSION": "يعرض الملف الامتداد الخاطئ",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "تحميل النسخة",
+		"FAILUREREASON": "سبب الفشل",
+		"RUNSENTIMENT_VOICERECORDING": "قم بتشغيل المشاعر",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "تشغيل Transcribe & amp ؛ العاطفة",
+		"RUNTRANSCRIBE_VOICERECORDING": "قم بتشغيل Transcribe",
+		"SENTIMENT": "المشاعر",
+		"SENTIMENTANALYSIS": "تحليل المشاعر",
+		"SENTIMENT_MIXED": "مختلط",
+		"SENTIMENT_NEGATIVE": "سلبي",
+		"SENTIMENT_NEUTRAL": "محايد",
+		"SENTIMENT_POSITIVE": "إيجابي",
+		"TEXT": "نص",
+		"TRANSCRIBE": "نسخ",
+		"TRANSCRIBESTATUS_COMPLETED": "منجز",
+		"TRANSCRIBESTATUS_FAILED": "فشل",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "في تقدم",
+		"TRANSCRIBESTATUS_NEW": "جديد",
+		"TRANSCRIPT": "نسخة طبق الأصل",
+		"TRANSCRIPTANALYSIS": "النص والتحليل",
+		"SERVICELEVEL": "مستوى الخدمة"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/cs.json b/public/app/main/apps/voice/i18n/cs.json
index 46761ee..9d3ac18 100644
--- a/public/app/main/apps/voice/i18n/cs.json
+++ b/public/app/main/apps/voice/i18n/cs.json
@@ -135,7 +135,8 @@
 			"NAME": "Only numbers, letters and specific characters (._) are supported",
 			"CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
 			"CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Pozastavte stav, který chcete nastavit během povinné dispozice"
+			"MANDATORYDISPOSITIONPAUSEID": "Pozastavte stav, který chcete nastavit během povinné dispozice",
+			"SERVICELEVEL": "Druhé nastavení pro úroveň služeb (výchozí = 0, bez SL). Používá se pro statistiku úrovně služeb (volání přijatá v časovém rámci úrovně služby)"
 		},
 		"MUSICONHOLD": "Music On Hold",
 		"ANNOUNCETOAGENT": "Announce To Agent",
@@ -469,6 +470,7 @@
 		"TRANSCRIBESTATUS_NEW": "Nový",
 		"TRANSCRIPT": "Přepis",
 		"TRANSCRIPTANALYSIS": "Přepis a analýza",
-		"WRONG_EXTENSION": "Soubor představuje nesprávnou příponu"
+		"WRONG_EXTENSION": "Soubor představuje nesprávnou příponu",
+		"SERVICELEVEL": "Úroveň služby"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/da.json b/public/app/main/apps/voice/i18n/da.json
index df5515c..55cb25c 100644
--- a/public/app/main/apps/voice/i18n/da.json
+++ b/public/app/main/apps/voice/i18n/da.json
@@ -123,7 +123,8 @@
 			"NAME": "Kun tal og bogstaver og specielle tegn (.________) understøttes",
 			"CALLERIDALL": "Understøttet format: \"CallerId\" & lt; number & gt;",
 			"CALLER_ID": "Understøttet format: \"CallerId\" & lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Pausestatus, der skal indstilles under obligatorisk disposition"
+			"MANDATORYDISPOSITIONPAUSEID": "Pausestatus, der skal indstilles under obligatorisk disposition",
+			"SERVICELEVEL": "Anden indstilling for serviceniveau (standard = 0, ingen SL). Bruges til statistik på serviceniveau (opkald besvaret inden for serviceniveau tidsramme)"
 		},
 		"MUSICONHOLD": "Musik ved parkeret opkald",
 		"ANNOUNCETOAGENT": "Annoncere til agent",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Optagelse af stopskærm",
 		"TOOLTIP_SCREENRECORDING_OFF": "Screen optagelse tilgængelig",
 		"TOOLTIP_SCREENRECORDING_ON": "Skærmoptagelse pågår",
-		"WRONG_EXTENSION": "Filen viser den forkerte udvidelse"
+		"WRONG_EXTENSION": "Filen viser den forkerte udvidelse",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Download transkription",
+		"FAILUREREASON": "Fejlårsag",
+		"RUNSENTIMENT_VOICERECORDING": "Kør sentiment",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Kør Transkriber & Sentiment",
+		"RUNTRANSCRIBE_VOICERECORDING": "Kør transkriber",
+		"SENTIMENT": "Følelse",
+		"SENTIMENTANALYSIS": "Følelsesanalyse",
+		"SENTIMENT_MIXED": "Blandet",
+		"SENTIMENT_NEGATIVE": "Negativ",
+		"SENTIMENT_NEUTRAL": "Neutral",
+		"SENTIMENT_POSITIVE": "Positiv",
+		"TEXT": "Tekst",
+		"TRANSCRIBE": "Transcribe",
+		"TRANSCRIBESTATUS_COMPLETED": "afsluttet",
+		"TRANSCRIBESTATUS_FAILED": "mislykkedes",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "I gang",
+		"TRANSCRIBESTATUS_NEW": "Ny",
+		"TRANSCRIPT": "Udskrift",
+		"TRANSCRIPTANALYSIS": "Transkript & analyse",
+		"SERVICELEVEL": "Serviceniveau"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/de.json b/public/app/main/apps/voice/i18n/de.json
index 93a817d..d6241ae 100644
--- a/public/app/main/apps/voice/i18n/de.json
+++ b/public/app/main/apps/voice/i18n/de.json
@@ -123,7 +123,8 @@
 			"NAME": "Nur Zahlen, Buchstaben und Sonderzeichen (._) werden unterstützt.",
 			"CALLERIDALL": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
 			"CALLER_ID": "Unterstützte Formate: \"CallerId\" & lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll"
+			"MANDATORYDISPOSITIONPAUSEID": "Pausenstatus, der während der Zwangsdisposition festgelegt werden soll",
+			"SERVICELEVEL": "Zweite Einstellungen für Service Level (Standard = 0, kein SL). Wird für Service Level-Statistiken verwendet (Anrufe werden innerhalb des Service Level-Zeitrahmens beantwortet)"
 		},
 		"MUSICONHOLD": "Musik auf Halten",
 		"ANNOUNCETOAGENT": "Geben Sie Agent",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Beenden Sie die Bildschirmaufnahme",
 		"TOOLTIP_SCREENRECORDING_OFF": "Bildschirmaufnahme verfügbar",
 		"TOOLTIP_SCREENRECORDING_ON": "Bildschirmaufnahme läuft",
-		"WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf"
+		"WRONG_EXTENSION": "Die Datei weist die falsche Erweiterung auf",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkript herunterladen",
+		"FAILUREREASON": "Fehlergrund",
+		"RUNSENTIMENT_VOICERECORDING": "Führen Sie Sentiment",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Führen Sie Transcribe & Sentiment aus",
+		"RUNTRANSCRIBE_VOICERECORDING": "Führen Sie Transcribe aus",
+		"SENTIMENT": "Gefühl",
+		"SENTIMENTANALYSIS": "Stimmungsanalyse",
+		"SENTIMENT_MIXED": "Gemischt",
+		"SENTIMENT_NEGATIVE": "Negativ",
+		"SENTIMENT_NEUTRAL": "Neutral",
+		"SENTIMENT_POSITIVE": "Positiv",
+		"TEXT": "Text",
+		"TRANSCRIBE": "Transkribieren",
+		"TRANSCRIBESTATUS_COMPLETED": "Abgeschlossen",
+		"TRANSCRIBESTATUS_FAILED": "Gescheitert",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "In Bearbeitung",
+		"TRANSCRIBESTATUS_NEW": "Neu",
+		"TRANSCRIPT": "Transkript",
+		"TRANSCRIPTANALYSIS": "Transkript & Analyse",
+		"SERVICELEVEL": "Service Level"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/en.json b/public/app/main/apps/voice/i18n/en.json
index 7ef5720..3a9fb01 100644
--- a/public/app/main/apps/voice/i18n/en.json
+++ b/public/app/main/apps/voice/i18n/en.json
@@ -1,5 +1,8 @@
 {
 	"VOICE": {
+		"FAILUREREASON": "Failure reason",
+		"TEXT": "Text",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Download Transcript",
 		"INBOUND": "Inbound",
 		"OUTBOUND": "Outbound",
 		"DIALER": "Dialer",
@@ -36,56 +39,6 @@
 		"CREATED_AT": "Created At",
 		"CANT_PLAY_GSM_AUDIO_FILES": "Can't play gsm or wav49 audio files",
 		"APPLICATIONS_LIST": "Applications List",
-		"LEGEND": {
-			"CUSTOM_APPLICATION": "(*) - Custom application"
-		},
-		"ERRORS": {
-			"PROJECT_REQUIRED": "Mandatory field",
-			"TRUNK_REQUIRED": "Mandatory field",
-			"VARIABLE_REQUIRED": "Mandatory field",
-			"NAME_REQUIRED": "Mandatory field",
-			"APPLICATION_NAME_REQUIRED": "Mandatory field",
-			"TIMEOUT_REQUIRED": "Mandatory field",
-			"PHONENUMBER_REQUIRED": "Mandatory field",
-			"CONTEXT_REQUIRED": "Mandatory field",
-			"DESTINATIONPATTERN_REQUIRED": "Mandatory field",
-			"FULLNAME_REQUIRED": "Mandatory field",
-			"EMAIL_REQUIRED": "Mandatory field",
-			"EMAIL_MUST_VALID": "Wrong format",
-			"MAILBOX_REQUIRED": "Mandatory field",
-			"PASSWORD_REQUIRED": "Mandatory field",
-			"CONFIRM_NOT_MATCH": "The passwords don't match",
-			"TIMEZONE_REQUIRED": "Mandatory field",
-			"PREFIX_REQUIRED": "Mandatory field",
-			"OPTIONS_REQUIRED": "Mandatory field",
-			"AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
-			"TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
-			"PHONE_REQUIRED": "Mandatory field",
-			"VALUE_REQUIRED": "Mandatory field",
-			"EXTENSION_REQUIRED": "Mandatory field",
-			"PRIORITY_REQUIRED": "Mandatory field",
-			"APPLICATION_REQUIRED": "Mandatory field",
-			"OUTBOUNDROUTE_REQUIRED": "Mandatory field",
-			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
-			"MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
-			"NAME_MUST_VALID_PATTERN": "Wrong format",
-			"CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
-			"CALLER_ID_MUST_VALID_PATTERN": "Wrong format"
-		},
 		"GENERAL": "General",
 		"TIMEOUT": "Timeout",
 		"MAXLENGTH": "Maximum Length",
@@ -94,52 +47,6 @@
 		"WEIGHT": "Weight",
 		"JOINWHENEMPTY": "Join when empty",
 		"LEAVEWHENEMPTY": "Leave when empty",
-		"HELP": {
-			"TIMEOUT": "How many seconds to ring a device",
-			"MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
-			"RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
-			"WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
-			"WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
-			"JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
-			"LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
-			"ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
-			"MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
-			"PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
-			"ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
-			"AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
-			"MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
-			"MUSICONHOLD": "Sets the music class to use for a particular queue",
-			"ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
-			"RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
-			"ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
-			"ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
-			"REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
-			"PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
-			"HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
-			"YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
-			"THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
-			"WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
-			"ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
-			"MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
-			"MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
-			"SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
-			"THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
-			"AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
-			"AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
-			"RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
-			"TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
-			"MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
-			"CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
-			"SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
-			"SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
-			"SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
-			"RECORDING": "Enable call recording",
-			"VOICEMAIL_CONTEXT": "The context of the relative extension",
-			"NAME": "Only numbers, letters and specific characters (._) are supported",
-			"CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
-			"CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition"
-		},
 		"MUSICONHOLD": "Music On Hold",
 		"ANNOUNCETOAGENT": "Announce To Agent",
 		"ANNOUNCEMENTS": "Announcements",
@@ -450,6 +357,120 @@
 		"CANT_DOWNLOAD_THIS_FILE": "Can't download this file",
 		"WRONG_EXTENSION": "The file presents the wrong extension",
 		"FILE_NOT_FOUND": "File not found",
-		"TEAMS_ASSOCIATION": "Teams Association"
+		"TEAMS_ASSOCIATION": "Teams Association",
+		"TRANSCRIBE": "Transcribe",
+		"TRANSCRIPT": "Transcript",
+		"SENTIMENTANALYSIS": "Sentiment Analysis",
+		"TRANSCRIBESTATUS_COMPLETED": "Completed",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "In progress",
+		"TRANSCRIBESTATUS_FAILED": "Failed",
+		"TRANSCRIBESTATUS_NEW": "New",
+		"TRANSCRIPTANALYSIS": "Transcript & Analysis",
+		"SENTIMENT_POSITIVE": "Positive",
+		"SENTIMENT_NEGATIVE": "Negative",
+		"SENTIMENT_NEUTRAL": "Neutral",
+		"SENTIMENT_MIXED": "Mixed",
+		"RUNTRANSCRIBE_VOICERECORDING": "Run Transcribe",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Run Transcribe&Sentiment",
+		"RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
+		"SENTIMENT": "Sentiment",
+		"SERVICELEVEL": "Service level",
+		"LEGEND": {
+			"CUSTOM_APPLICATION": "(*) - Custom application"
+		},
+		"ERRORS": {
+			"PROJECT_REQUIRED": "Mandatory field",
+			"TRUNK_REQUIRED": "Mandatory field",
+			"VARIABLE_REQUIRED": "Mandatory field",
+			"NAME_REQUIRED": "Mandatory field",
+			"APPLICATION_NAME_REQUIRED": "Mandatory field",
+			"TIMEOUT_REQUIRED": "Mandatory field",
+			"PHONENUMBER_REQUIRED": "Mandatory field",
+			"CONTEXT_REQUIRED": "Mandatory field",
+			"DESTINATIONPATTERN_REQUIRED": "Mandatory field",
+			"FULLNAME_REQUIRED": "Mandatory field",
+			"EMAIL_REQUIRED": "Mandatory field",
+			"EMAIL_MUST_VALID": "Wrong format",
+			"MAILBOX_REQUIRED": "Mandatory field",
+			"PASSWORD_REQUIRED": "Mandatory field",
+			"CONFIRM_NOT_MATCH": "The passwords don't match",
+			"TIMEZONE_REQUIRED": "Mandatory field",
+			"PREFIX_REQUIRED": "Mandatory field",
+			"OPTIONS_REQUIRED": "Mandatory field",
+			"AFTERCALLWORKDURATION_REQUIRED": "Mandatory field",
+			"TECHNOLOGY/RESOURCE_REQUIRED": "Mandatory field",
+			"PHONE_REQUIRED": "Mandatory field",
+			"VALUE_REQUIRED": "Mandatory field",
+			"EXTENSION_REQUIRED": "Mandatory field",
+			"PRIORITY_REQUIRED": "Mandatory field",
+			"APPLICATION_REQUIRED": "Mandatory field",
+			"OUTBOUNDROUTE_REQUIRED": "Mandatory field",
+			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "The value must be greater than or equal to",
+			"MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "The value must be less than or equal to",
+			"NAME_MUST_VALID_PATTERN": "Wrong format",
+			"CALLERIDALL_MUST_VALID_PATTERN": "Wrong format",
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Mandatory field",
+			"CALLER_ID_MUST_VALID_PATTERN": "Wrong format"
+		},
+		"HELP": {
+			"TIMEOUT": "How many seconds to ring a device",
+			"MAXLENGTH": "Maximum number of callers allowed to wait in a queue: zero means unlimited",
+			"RETRY": "Time in seconds to wait before calling the next agent in queue when the timeout is expired",
+			"WRAPUPTIME": "Time in seconds to keep a queue member unavailable after completing a call",
+			"WEIGHT": "Weight of a queue in order to define priority if members are associated with multiple queues",
+			"JOINWHENEMPTY": "Used to control whether a caller is passed to a queue when no members are available",
+			"LEAVEWHENEMPTY": "Used to control whether callers are made leave the queue when no members are available to take calls",
+			"ANNOUNCEFREQUENCY": "How often to announce the caller’s position and/or estimated hold time in the queue (zero to disable)",
+			"MINANNOUNCEFREQUENCY": "Minimum announcement frequency (useful when the caller’s position changes frequently)",
+			"PERIODICANNOUNCEFREQUENCY": "Frequency of periodic announcements to the caller",
+			"ANNOUNCEPOSITIONLIMIT": "Used if announce-position is defined as either 'limit' or 'more'",
+			"AFTERCALLWORKDURATION": "Pause length triggered by the After Call Work option",
+			"MEMBERDELAY": "Inserts a delay prior to the caller and agent in queue get connected",
+			"MUSICONHOLD": "Sets the music class to use for a particular queue",
+			"ANNOUNCETOAGENT": "Play an announcement to the agent answering the call (typically to let him know what queue the caller is coming from)",
+			"RANDOMPERIODICANNOUNCE": "If yes, the defined periodic announcements will be played random",
+			"ANNOUNCEHOLDTIME": "Plays the estimated hold time along with the periodic announcements (Yes/No/Once)",
+			"ANNOUNCECALLERPOSITION": "Used to define if the caller’s position in the queue should be announced: No=never; Yes=always; Limit=only if it is within the limit defined by announce-position-limit; More= only if it is beyond the value defined by announce-position-limit",
+			"REPORTHOLDTIMEAGENT": "Enables reporting caller’s hold time to the agent in queue prior to connection",
+			"PERIODICANNOUNCE": "Set of periodic announcements to be played (in the order)",
+			"HOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“Hold time”. Undefined=no announcement",
+			"YOUARENEXTANNOUNCE": "Choose a Sound defined in Tools. Default=“You are now first in line”. Undefined=no announcement",
+			"THEREAREANNOUNCE": "Choose a Sound defined in Tools. Default=“There are”. Undefined=no announcement",
+			"WAITINGCALLSANNOUNCE": "Choose a Sound defined in Tools. Default=“calls waiting”. Undefined=no announcement",
+			"ESTIMATEDHOLDTIMEANNOUNCE": "Choose a Sound defined in Tools. Default=“The current estimated hold time is”. Undefined=no announcement",
+			"MINUTESANNOUNCE": "Choose a Sound defined in Tools. Default=“minutes”. Undefined=no announcement",
+			"MINUTEANNOUNCE": "Choose a Sound defined in Tools. Default=“minute”. Undefined=no announcement",
+			"SECONDSANNOUNCE": "Choose a Sound defined in Tools. Default=“seconds”. Undefined=no announcement",
+			"THANKYOUANNOUNCE": "Choose a Sound defined in Tools. Default=“Thank you for your patience”. Undefined=no announcement",
+			"AFTERCALLWORK": "If enabled, the agent will be set on Pause after completing a call",
+			"AUTOPAUSE": "Enables/disables the automatic pause of agents who fail to answer a call. If enabled it causes the agent to be paused in all queues he belongs to",
+			"RINGINUSE": "To avoid/allow sending calls to members whose status is In Use",
+			"TIMEOUTRESTART": "If yes, this resets the timeout for an agent to answer when either a BUSY or CONGESTION status is received from the channel",
+			"MONITORFORMAT": "Specifies the file format to use when recording. If monitor-format is inactive, calls will not be recorded",
+			"CONTEXT": "Allows a caller to exit the queue by pressing a single DTMF digit. If a context is specified and the caller enters a number, that digit will attempt to be matched in the context specified, and dialplan execution will continue there",
+			"SETINTERFACEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information see wiki docs)",
+			"SETQUEUEVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent and leaving the queue, some variables will be set (for more information, see wiki docs)",
+			"SETQUEUEENTRYVARIABLES": "If set to yes, just prior to the caller being connected with a queue agent some variables will be set (for more information, see wiki docs)",
+			"RECORDING": "Enable call recording",
+			"VOICEMAIL_CONTEXT": "The context of the relative extension",
+			"NAME": "Only numbers, letters and specific characters (._) are supported",
+			"CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
+			"CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
+			"MANDATORYDISPOSITIONPAUSEID": "Pause status to set during mandatory disposition",
+			"SERVICELEVEL": "Second settings for service level (default=0, no SL). Used for service level statistics (calls answered within service level time frame)"
+		}
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/es.json b/public/app/main/apps/voice/i18n/es.json
index 0d185b8..8fa8fdc 100644
--- a/public/app/main/apps/voice/i18n/es.json
+++ b/public/app/main/apps/voice/i18n/es.json
@@ -47,7 +47,8 @@
 			"YOUARENEXTANNOUNCE": "Elija un sonido definido en Herramientas. Predeterminado = \"Ahora eres el primero en la fila\". Indefinido = sin anuncio",
 			"CALLERIDALL": "Formato admitido: \"CallerId\" & lt; número & gt;",
 			"CALLER_ID": "Formato admitido: \"CallerId\" & lt; número & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Estado de pausa para establecer durante el cierre obligatorio"
+			"MANDATORYDISPOSITIONPAUSEID": "Estado de pausa para establecer durante el cierre obligatorio",
+			"SERVICELEVEL": "Segundos ajustes para el nivel de servicio (predeterminado = 0, sin SL). Se utiliza para estadísticas de nivel de servicio (llamadas respondidas dentro del marco de tiempo del nivel de servicio)"
 		},
 		"ERRORS": {
 			"AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "El valor debe ser mayor o igual que",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Detener grabación de pantalla",
 		"TOOLTIP_SCREENRECORDING_OFF": "Grabación de pantalla disponible",
 		"TOOLTIP_SCREENRECORDING_ON": "Grabación de pantalla en progreso",
-		"WRONG_EXTENSION": "El archivo presenta la extensión incorrecta"
+		"WRONG_EXTENSION": "El archivo presenta la extensión incorrecta",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Descargar transcripción",
+		"FAILUREREASON": "Razón de la falla",
+		"RUNSENTIMENT_VOICERECORDING": "Ejecutar sentimiento",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Ejecute Transcribe & Sentiment",
+		"RUNTRANSCRIBE_VOICERECORDING": "Ejecutar Transcribe",
+		"SENTIMENT": "Sentimiento",
+		"SENTIMENTANALYSIS": "Análisis de los sentimientos",
+		"SENTIMENT_MIXED": "Mezclado",
+		"SENTIMENT_NEGATIVE": "Negativo",
+		"SENTIMENT_NEUTRAL": "Neutral",
+		"SENTIMENT_POSITIVE": "Positivo",
+		"TEXT": "Texto",
+		"TRANSCRIBE": "Transcribir",
+		"TRANSCRIBESTATUS_COMPLETED": "Terminado",
+		"TRANSCRIBESTATUS_FAILED": "Ha fallado",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "En progreso",
+		"TRANSCRIBESTATUS_NEW": "Nuevo",
+		"TRANSCRIPT": "Transcripción",
+		"TRANSCRIPTANALYSIS": "Transcripción y análisis",
+		"SERVICELEVEL": "Nivel de servicio"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/et.json b/public/app/main/apps/voice/i18n/et.json
index 1737bdb..c688f46 100644
--- a/public/app/main/apps/voice/i18n/et.json
+++ b/public/app/main/apps/voice/i18n/et.json
@@ -135,7 +135,8 @@
 			"NAME": "Only numbers, letters and specific characters (._) are supported",
 			"CALLERIDALL": "Supported format: \"CallerId\" &lt;number&gt;",
 			"CALLER_ID": "Supported format: \"CallerId\" &lt;number&gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal"
+			"MANDATORYDISPOSITIONPAUSEID": "Peata olek, et seadistada kohustusliku dispositsiooni ajal",
+			"SERVICELEVEL": "Teised teenustaseme seaded (vaikeväärtus = 0, SL puudub). Kasutatakse teenustaseme statistika jaoks (kõnedele vastatakse teenustaseme ajalises raamistikus)"
 		},
 		"MUSICONHOLD": "Music On Hold",
 		"ANNOUNCETOAGENT": "Announce To Agent",
@@ -469,6 +470,7 @@
 		"TRANSCRIBESTATUS_NEW": "Uus",
 		"TRANSCRIPT": "Ärakiri",
 		"TRANSCRIPTANALYSIS": "Ärakiri ja analüüs",
-		"WRONG_EXTENSION": "Failis on vale laiend"
+		"WRONG_EXTENSION": "Failis on vale laiend",
+		"SERVICELEVEL": "Teenuse tase"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/fa.json b/public/app/main/apps/voice/i18n/fa.json
index d027729..48c628e 100644
--- a/public/app/main/apps/voice/i18n/fa.json
+++ b/public/app/main/apps/voice/i18n/fa.json
@@ -123,7 +123,8 @@
 			"NAME": "فقط شماره ها و حروف و نویسه های ویژه (_) پشتیبانی می شود.",
 			"CALLERIDALL": "فرمت پشتیبانی شده: \"CallerId\" & lt؛ number & gt؛",
 			"CALLER_ID": "فرمت پشتیبانی شده: \"CallerId\" & lt؛ number & gt؛",
-			"MANDATORYDISPOSITIONPAUSEID": "وضعیت مکث را برای تنظیم در حین حالت اجباری تنظیم کنید"
+			"MANDATORYDISPOSITIONPAUSEID": "وضعیت مکث را برای تنظیم در حین حالت اجباری تنظیم کنید",
+			"SERVICELEVEL": "تنظیمات دوم برای سطح خدمات (پیش فرض = 0 ، بدون SL). مورد استفاده برای آمار سطح خدمات (پاسخگویی در چارچوب زمانی سطح سرویس)"
 		},
 		"MUSICONHOLD": "موسيقي را نگه دارید",
 		"ANNOUNCETOAGENT": "عامل را اعلام می کند",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "ضبط صفحه را متوقف کنید",
 		"TOOLTIP_SCREENRECORDING_OFF": "ضبط صفحه در دسترس است",
 		"TOOLTIP_SCREENRECORDING_ON": "ضبط صفحه در حال انجام است",
-		"WRONG_EXTENSION": "پرونده فرمت اشتباه را نشان می دهد"
+		"WRONG_EXTENSION": "پرونده فرمت اشتباه را نشان می دهد",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "دانلود متن",
+		"FAILUREREASON": "دلیل عدم موفقیت",
+		"RUNSENTIMENT_VOICERECORDING": "اجرای احساس",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transcrib & Sentiment را اجرا کنید",
+		"RUNTRANSCRIBE_VOICERECORDING": "رونویسی را اجرا کنید",
+		"SENTIMENT": "احساسات",
+		"SENTIMENTANALYSIS": "تجزیه و تحلیل احساسات",
+		"SENTIMENT_MIXED": "مخلوط",
+		"SENTIMENT_NEGATIVE": "منفی",
+		"SENTIMENT_NEUTRAL": "خنثی",
+		"SENTIMENT_POSITIVE": "مثبت",
+		"TEXT": "متن",
+		"TRANSCRIBE": "رونویسی",
+		"TRANSCRIBESTATUS_COMPLETED": "تکمیل شد",
+		"TRANSCRIBESTATUS_FAILED": "ناموفق",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "در حال پیش رفت",
+		"TRANSCRIBESTATUS_NEW": "جدید",
+		"TRANSCRIPT": "رونوشت",
+		"TRANSCRIPTANALYSIS": "متن و آنالیز",
+		"SERVICELEVEL": "سطح سرویس"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/fi.json b/public/app/main/apps/voice/i18n/fi.json
index 123c61f..bcd7dde 100644
--- a/public/app/main/apps/voice/i18n/fi.json
+++ b/public/app/main/apps/voice/i18n/fi.json
@@ -123,7 +123,8 @@
 			"NAME": "Vain numeroita, kirjaimia ja erikoismerkkejä (._ tuetaan",
 			"CALLERIDALL": "Tuettu muoto: \"CallerId\" & lt; number & gt;",
 			"CALLER_ID": "Tuettu muoto: \"CallerId\" & lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Keskeytä tila asettaaksesi pakollisen hävityksen aikana"
+			"MANDATORYDISPOSITIONPAUSEID": "Keskeytä tila asettaaksesi pakollisen hävityksen aikana",
+			"SERVICELEVEL": "Toiset palvelutason asetukset (oletus = 0, ei SL). Käytetään palvelutasotilastoihin (puheluihin vastataan palvelutason aikataulussa)"
 		},
 		"MUSICONHOLD": "Musiikkia puhelun ollessa pidossa",
 		"ANNOUNCETOAGENT": "Ilmoittaa Agent",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Lopeta näytön tallennus",
 		"TOOLTIP_SCREENRECORDING_OFF": "Näytön tallennus saatavilla",
 		"TOOLTIP_SCREENRECORDING_ON": "Näytön nauhoitus käynnissä",
-		"WRONG_EXTENSION": "Tiedostossa on väärä tiedostopääte"
+		"WRONG_EXTENSION": "Tiedostossa on väärä tiedostopääte",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Lataa tekstitys",
+		"FAILUREREASON": "Epäonnistumisen syy",
+		"RUNSENTIMENT_VOICERECORDING": "Suorita Sentiment",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Suorita transkriptio ja tunteita",
+		"RUNTRANSCRIBE_VOICERECORDING": "Suorita transkriptio",
+		"SENTIMENT": "näkemys",
+		"SENTIMENTANALYSIS": "Aistien analyysi",
+		"SENTIMENT_MIXED": "sekoitettu",
+		"SENTIMENT_NEGATIVE": "negatiivinen",
+		"SENTIMENT_NEUTRAL": "Neutraali",
+		"SENTIMENT_POSITIVE": "positiivinen",
+		"TEXT": "Teksti",
+		"TRANSCRIBE": "Kirjoittaa puhtaaksi",
+		"TRANSCRIBESTATUS_COMPLETED": "valmistunut",
+		"TRANSCRIBESTATUS_FAILED": "epäonnistui",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "Käynnissä",
+		"TRANSCRIBESTATUS_NEW": "Uusi",
+		"TRANSCRIPT": "jäljennös",
+		"TRANSCRIPTANALYSIS": "Teksti ja analyysi",
+		"SERVICELEVEL": "Palvelutaso"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/fr.json b/public/app/main/apps/voice/i18n/fr.json
index 5ca76d7..31a8835 100644
--- a/public/app/main/apps/voice/i18n/fr.json
+++ b/public/app/main/apps/voice/i18n/fr.json
@@ -123,7 +123,8 @@
 			"NAME": "Seulement les chiffres, lettres et caractères spécifiques (._) sont pris en charge",
 			"CALLERIDALL": "Format pris en charge: \"CallerId\" & lt; number & gt;",
 			"CALLER_ID": "Format pris en charge: \"CallerId\" & lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Statut de pause à définir lors de la disposition obligatoire"
+			"MANDATORYDISPOSITIONPAUSEID": "Statut de pause à définir lors de la disposition obligatoire",
+			"SERVICELEVEL": "Second paramétrage du niveau de service (par défaut = 0, pas de SL). Utilisé pour les statistiques de niveau de service (appels traités dans le délai de niveau de service)"
 		},
 		"MUSICONHOLD": "Musique d'attente",
 		"ANNOUNCETOAGENT": "Annoncer un message à l'agent",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Arrêter l'enregistrement d'écran",
 		"TOOLTIP_SCREENRECORDING_OFF": "Enregistrement d'écran disponible",
 		"TOOLTIP_SCREENRECORDING_ON": "Enregistrement d'écran en cours",
-		"WRONG_EXTENSION": "Le fichier présente la mauvaise extension"
+		"WRONG_EXTENSION": "Le fichier présente la mauvaise extension",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Télécharger la transcription",
+		"FAILUREREASON": "Raison de l'échec",
+		"RUNSENTIMENT_VOICERECORDING": "Exécuter le sentiment",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Exécuter Transcribe & Sentiment",
+		"RUNTRANSCRIBE_VOICERECORDING": "Exécuter Transcribe",
+		"SENTIMENT": "Sentiment",
+		"SENTIMENTANALYSIS": "Analyse des sentiments",
+		"SENTIMENT_MIXED": "Mixte",
+		"SENTIMENT_NEGATIVE": "Négatif",
+		"SENTIMENT_NEUTRAL": "Neutre",
+		"SENTIMENT_POSITIVE": "Positif",
+		"TEXT": "Texte",
+		"TRANSCRIBE": "Transcrire",
+		"TRANSCRIBESTATUS_COMPLETED": "Terminé",
+		"TRANSCRIBESTATUS_FAILED": "Échoué",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "En cours",
+		"TRANSCRIBESTATUS_NEW": "Nouveau",
+		"TRANSCRIPT": "Transcription",
+		"TRANSCRIPTANALYSIS": "Transcription et analyse",
+		"SERVICELEVEL": "Niveau de service"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/he.json b/public/app/main/apps/voice/i18n/he.json
index 413e307..20d6563 100644
--- a/public/app/main/apps/voice/i18n/he.json
+++ b/public/app/main/apps/voice/i18n/he.json
@@ -135,7 +135,8 @@
 			"NAME": "מותר לכלול רק ספרות, אותיות ותווים ספציפיים (._)",
 			"CALLERIDALL": "התבנית הנתמכת: \"CallerId\" &lt;number&gt;",
 			"CALLER_ID": "התבנית הנתמכת: \"CallerId\" &lt;number&gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "השהה סטטוס להגדרה במהלך חובה"
+			"MANDATORYDISPOSITIONPAUSEID": "השהה סטטוס להגדרה במהלך חובה",
+			"SERVICELEVEL": "הגדרות שניות לרמת שירות (ברירת מחדל = 0, ללא SL). משמש לסטטיסטיקה של רמת השירות (שיחות נענות במסגרת הזמן של רמת השירות)"
 		},
 		"MUSICONHOLD": "מוזיקה בהמתנה",
 		"ANNOUNCETOAGENT": "הודעה לנציג",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "עצירת הקלטת מסך",
 		"TOOLTIP_SCREENRECORDING_OFF": "הקלטת מסך זמינה",
 		"TOOLTIP_SCREENRECORDING_ON": "הקלטת מסך מתבצעת",
-		"WRONG_EXTENSION": "הקובץ מציג את הסיומת השגויה"
+		"WRONG_EXTENSION": "הקובץ מציג את הסיומת השגויה",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "הורד תעתיק",
+		"FAILUREREASON": "סיבת כשל",
+		"RUNSENTIMENT_VOICERECORDING": "הפעל סנטימנט",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "הפעל תמלול וסנטימנט",
+		"RUNTRANSCRIBE_VOICERECORDING": "הפעל תעתיק",
+		"SENTIMENT": "רֶגֶשׁ",
+		"SENTIMENTANALYSIS": "ניתוח הסנטימנט",
+		"SENTIMENT_MIXED": "מעורב",
+		"SENTIMENT_NEGATIVE": "שלילי",
+		"SENTIMENT_NEUTRAL": "ניטראלי",
+		"SENTIMENT_POSITIVE": "חִיוּבִי",
+		"TEXT": "טֶקסט",
+		"TRANSCRIBE": "לְתַעֲתֵק",
+		"TRANSCRIBESTATUS_COMPLETED": "הושלם",
+		"TRANSCRIBESTATUS_FAILED": "נִכשָׁל",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "בתהליך",
+		"TRANSCRIBESTATUS_NEW": "חָדָשׁ",
+		"TRANSCRIPT": "תמלול",
+		"TRANSCRIPTANALYSIS": "תמלול וניתוח",
+		"SERVICELEVEL": "רמת שירות"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/hi.json b/public/app/main/apps/voice/i18n/hi.json
index 1bc1c4c..41364ef 100644
--- a/public/app/main/apps/voice/i18n/hi.json
+++ b/public/app/main/apps/voice/i18n/hi.json
@@ -123,7 +123,8 @@
 			"NAME": "केवल विशिष्ट वर्ण (।_) और नंबर्स, समर्थित",
 			"CALLERIDALL": "समर्थित प्रारूप: \"कॉलर आईडी\" & lt; संख्या & gt;",
 			"CALLER_ID": "समर्थित प्रारूप: \"कॉलर आईडी\" & lt; संख्या & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "अनिवार्य स्थिति के दौरान निर्धारित करने के लिए स्थिति को रोकें"
+			"MANDATORYDISPOSITIONPAUSEID": "अनिवार्य स्थिति के दौरान निर्धारित करने के लिए स्थिति को रोकें",
+			"SERVICELEVEL": "सेवा स्तर के लिए दूसरी सेटिंग्स (डिफ़ॉल्ट = 0, कोई SL)। सेवा स्तर के आँकड़ों के लिए उपयोग किया जाता है (सेवा स्तर समय सीमा के भीतर उत्तर दिए गए कॉल)"
 		},
 		"MUSICONHOLD": "संगीत पर रखें.",
 		"ANNOUNCETOAGENT": "घोषणा के एजेंट",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "स्क्रीन रिकॉर्डिंग बंद करो",
 		"TOOLTIP_SCREENRECORDING_OFF": "स्क्रीन रिकॉर्डिंग उपलब्ध है",
 		"TOOLTIP_SCREENRECORDING_ON": "स्क्रीन रिकॉर्डिंग प्रगति पर है",
-		"WRONG_EXTENSION": "फ़ाइल गलत एक्सटेंशन प्रस्तुत करती है"
+		"WRONG_EXTENSION": "फ़ाइल गलत एक्सटेंशन प्रस्तुत करती है",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "ट्रांसक्रिप्ट डाउनलोड करें",
+		"FAILUREREASON": "असफलता का कारण",
+		"RUNSENTIMENT_VOICERECORDING": "सेंटिमेंट चलाएं",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "रन ट्रांसजेंड और सेंटिमेंट",
+		"RUNTRANSCRIBE_VOICERECORDING": "रन ट्रांज़े",
+		"SENTIMENT": "भाव",
+		"SENTIMENTANALYSIS": "भावनाओं का विश्लेषण",
+		"SENTIMENT_MIXED": "मिश्रित",
+		"SENTIMENT_NEGATIVE": "नकारात्मक",
+		"SENTIMENT_NEUTRAL": "तटस्थ",
+		"SENTIMENT_POSITIVE": "सकारात्मक",
+		"TEXT": "टेक्स्ट",
+		"TRANSCRIBE": "लिप्यंतरित",
+		"TRANSCRIBESTATUS_COMPLETED": "पूरा कर लिया है",
+		"TRANSCRIBESTATUS_FAILED": "अनुत्तीर्ण होना",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "चालू",
+		"TRANSCRIBESTATUS_NEW": "नया",
+		"TRANSCRIPT": "प्रतिलिपि",
+		"TRANSCRIPTANALYSIS": "प्रतिलेख और विश्लेषण",
+		"SERVICELEVEL": "सेवा का स्तर"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/id.json b/public/app/main/apps/voice/i18n/id.json
index 0a48637..c1924ad 100644
--- a/public/app/main/apps/voice/i18n/id.json
+++ b/public/app/main/apps/voice/i18n/id.json
@@ -94,7 +94,8 @@
 			"YOUARENEXTANNOUNCE": "Pilih Suara yang didefinisikan dalam Alat. Default = \"Anda sekarang berada di baris pertama\". Tidak ditentukan = tidak ada pengumuman",
 			"CALLERIDALL": "Format yang didukung: \"CallerId\" & lt; number & gt;",
 			"CALLER_ID": "Format yang didukung: \"CallerId\" & lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Jeda status untuk ditetapkan selama disposisi wajib"
+			"MANDATORYDISPOSITIONPAUSEID": "Jeda status untuk ditetapkan selama disposisi wajib",
+			"SERVICELEVEL": "Pengaturan kedua untuk tingkat layanan (default = 0, tanpa SL). Digunakan untuk statistik tingkat layanan (panggilan dijawab dalam jangka waktu tingkat layanan)"
 		},
 		"ABANDONED": "Ditinggalkan",
 		"ABANDONEDCALLS": "Panggilan Antrian yang Ditinggalkan",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Hentikan Perekaman Layar",
 		"TOOLTIP_SCREENRECORDING_OFF": "Rekaman Layar tersedia",
 		"TOOLTIP_SCREENRECORDING_ON": "Perekaman Layar sedang berlangsung",
-		"WRONG_EXTENSION": "File menyajikan ekstensi yang salah"
+		"WRONG_EXTENSION": "File menyajikan ekstensi yang salah",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Unduh Transkrip",
+		"FAILUREREASON": "Alasan kegagalan",
+		"RUNSENTIMENT_VOICERECORDING": "Jalankan Sentimen",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Jalankan Transkripsikan & Sentimen",
+		"RUNTRANSCRIBE_VOICERECORDING": "Jalankan Transkripsikan",
+		"SENTIMENT": "Sentimen",
+		"SENTIMENTANALYSIS": "Analisis Sentimen",
+		"SENTIMENT_MIXED": "Campuran",
+		"SENTIMENT_NEGATIVE": "Negatif",
+		"SENTIMENT_NEUTRAL": "Netral",
+		"SENTIMENT_POSITIVE": "Positif",
+		"TEXT": "Teks",
+		"TRANSCRIBE": "Menuliskan",
+		"TRANSCRIBESTATUS_COMPLETED": "Lengkap",
+		"TRANSCRIBESTATUS_FAILED": "Gagal",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "Sedang berlangsung",
+		"TRANSCRIBESTATUS_NEW": "Baru",
+		"TRANSCRIPT": "Salinan",
+		"TRANSCRIPTANALYSIS": "Transkrip & Analisis",
+		"SERVICELEVEL": "Tingkat layanan"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/it.json b/public/app/main/apps/voice/i18n/it.json
index d30c16a..97d245e 100644
--- a/public/app/main/apps/voice/i18n/it.json
+++ b/public/app/main/apps/voice/i18n/it.json
@@ -30,56 +30,6 @@
 		"DESCRIPTION": "Descrizione",
 		"ADD_VOICEQUEUE": "Aggiungi Coda Voce",
 		"CREATED_AT": "Creato il",
-		"LEGEND": {
-			"CUSTOM_APPLICATION": "(*) - Applicatione Custom"
-		},
-		"ERRORS": {
-			"PROJECT_REQUIRED": "Campo Obbligatorio",
-			"TRUNK_REQUIRED": "Campo Obbligatorio",
-			"VARIABLE_REQUIRED": "Campo Obbligatorio",
-			"NAME_REQUIRED": "Campo Obbligatorio",
-			"TIMEOUT_REQUIRED": "Campo Obbligatorio",
-			"PHONENUMBER_REQUIRED": "Campo Obbligatorio",
-			"CONTEXT_REQUIRED": "Campo Obbligatorio",
-			"DESTINATIONPATTERN_REQUIRED": "Campo Obbligatorio",
-			"FULLNAME_REQUIRED": "Campo Obbligatorio",
-			"EMAIL_REQUIRED": "Campo Obbligatorio",
-			"EMAIL_MUST_VALID": "Campo Obbligatorio",
-			"MAILBOX_REQUIRED": "Campo Obbligatorio",
-			"PASSWORD_REQUIRED": "Campo Obbligatorio",
-			"CONFIRM_NOT_MATCH": "Le password inserite non coincidono",
-			"TIMEZONE_REQUIRED": "Campo Obbligatorio",
-			"PREFIX_REQUIRED": "Campo Obbligatorio",
-			"OPTIONS_REQUIRED": "Campo Obbligatorio",
-			"AFTERCALLWORKDURATION_REQUIRED": "Campo Obbligatorio",
-			"TECHNOLOGY/RESOURCE_REQUIRED": "Campo Obbligatorio",
-			"PHONE_REQUIRED": "Campo Obbligatorio",
-			"VALUE_REQUIRED": "Campo Obbligatorio",
-			"EXTENSION_REQUIRED": "Campo Obbligatorio",
-			"PRIORITY_REQUIRED": "Campo Obbligatorio",
-			"APPLICATION_REQUIRED": "Campo Obbligatorio",
-			"APPLICATION_NAME_REQUIRED": "Campo Obbligatorio",
-			"OUTBOUNDROUTE_REQUIRED": "Campo Obbligatorio",
-			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
-			"MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere inferiore o uguale a",
-			"NAME_MUST_VALID_PATTERN": "Formato errato",
-			"CALLERIDALL_MUST_VALID_PATTERN": "Formato errato",
-			"CALLER_ID_MUST_VALID_PATTERN": "Formato errato",
-			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obbligatorio"
-		},
 		"GENERAL": "Generale",
 		"TIMEOUT": "Timeout",
 		"MAXLENGTH": "Lunghezza Massima",
@@ -88,53 +38,6 @@
 		"WEIGHT": "Peso",
 		"JOINWHENEMPTY": "Entra quando vuota",
 		"LEAVEWHENEMPTY": "Lascia quando vuota",
-		"HELP": {
-			"TIMEOUT": "Tempo (in secondi) in cui va fatto squillare il dispositivo dell'agente in coda",
-			"MAXLENGTH": "Numero massimo di chiamanti che possono attendere in una coda (zero indica un numero illimitato di chiamanti)",
-			"RETRY": "Tempo (in secondi) da attendere prima di chiamare il prossimo agente in coda alla scadenza del timeout",
-			"WRAPUPTIME": "Tempo (in secondi) in cui l'agente in coda è 'Non disponibile' dopo aver completato una chiamata",
-			"WEIGHT": "Consente di definirne un 'peso' o ordine di priorità (nel caso in cui i membri della coda siano associati a più code)",
-			"JOINWHENEMPTY": "Indica se un chiamante può essere aggiunto ad una coda anche se questa non ha alcun agente",
-			"LEAVEWHENEMPTY": "Definisce se i chiamanti devono essere espulsi da una coda quando non ci sono più agenti disponibili a rispondere",
-			"ANNOUNCEFREQUENCY": "Definisce quanto spesso annunciare la posizione del chiamante e/o il tempo stimato di attesa nella coda (se zero viene disabilitato)",
-			"MINANNOUNCEFREQUENCY": "Specifica il tempo minimo tra gli annunci della posizione del chiamante (usato quando la posizione del chiamante può cambiare frequentemente)",
-			"PERIODICANNOUNCEFREQUENCY": "Indica quanto spesso riprodurre gli annunci periodici per il chiamante.",
-			"ANNOUNCEPOSITIONLIMIT": "Usato se l'annuncio della posizione del chiamante è stato definito come 'limit' o 'more'",
-			"AFTERCALLWORKDURATION": "La durata della pausa scatenata dall'evento 'After Call Work'",
-			"MEMBERDELAY": "Usato se si vuole che ci sia un ritardo prima che il chiamante e l'agente in coda vengano connessi",
-			"MUSICONHOLD": "Imposta musica di attesa da usare per una particolare coda",
-			"ANNOUNCETOAGENT": "Usato per riprodurre un annuncio all'agente che ha risposto alla chiamata, di solito per informarlo da quale coda arriva il chiamante",
-			"RANDOMPERIODICANNOUNCE": "Se impostato, gli annunci periodici verranno riprodotti in ordine casuale",
-			"ANNOUNCEHOLDTIME": "Definisce se annunciare il tempo di attesa stimato insieme agli annunci periodici",
-			"ANNOUNCECALLERPOSITION": "Definisce se annunciare la posizione del chiamante. Se impostato su no la posizione non verrà amai annunciata. Se impostata la posizione verrà sempre annunciata. Se impostato su limit il chiamante ascolterà la sua posizione solo se entro il limite dell' announce position limit. Se è impostato su more il chiamante ascolterà la sua posizione se si trova oltre il limite in announce position limit.",
-			"REPORTHOLDTIMEAGENT": "Abilita l'annuncio del tempo di attesa del chiamante all'agente in coda, prima della connessione al canale",
-			"PERIODICANNOUNCE": "Serie di annunci periodici da riprodurre, nell'ordine in cui sono definiti",
-			"HOLDTIMEANNOUNCE": "Se non definito, riproduce il valore di default (“Hold time..”). Se impostato su un valore vuoto non verrà riprodotto",
-			"YOUARENEXTANNOUNCE": "Se non definito, riproduce il valore di default (“You are now first in line”). Se impostato su un valore vuoto non verrà riprodotto",
-			"THEREAREANNOUNCE": "Se non definito, riproduce il valore di default (“There are..”). Se impostato su un valore vuoto non verrà riprodotto",
-			"WAITINGCALLSANNOUNCE": "Se non definito, riproduce il valore di default (“..calls waiting”). Se impostato su un valore vuoto non verrà riprodotto",
-			"ESTIMATEDHOLDTIMEANNOUNCE": "Se non definito, riproduce il valore di default (“The current estimated hold time is..”). Se impostato su un valore vuoto non verrà riprodotto",
-			"MINUTESANNOUNCE": "Se non definito, riproduce il valore di default (“..minutes”). Se impostato su un valore vuoto non verrà riprodotto",
-			"MINUTEANNOUNCE": "Se non definito, riproduce il valore di default (“..minute”). Se impostato su un valore vuoto non verrà riprodotto",
-			"SECONDSANNOUNCE": "Se non definito, riproduce il valore di default (“..seconds”). Se impostato su un valore vuoto non verrà riprodotto",
-			"THANKYOUANNOUNCE": "Se non definito, riproduce il valore di default (“Thank you for your patience”). Se impostato su un valore vuoto non verrà riprodotto",
-			"AFTERCALLWORK": "Se attivo, l'agente verrà messo in Pausa al completamento di una chiamata risposta sulla coda",
-			"AUTOPAUSE": "Abilita/Disabilita la pausa automatica dei membri che non effettuano risposta ad una chiamata. Se attivo mette l'agente in pausa su tutte le sue code.",
-			"RINGINUSE": "Usato per evitare di inviare chiamate ai membri il cui stato è 'In Use' (in conversazione)",
-			"TIMEOUTRESTART": "Se impostato a yes, resetta il timeout di un agente per rispondere ad una chiamata, se il canale è in stato BUSY o CONGESTION",
-			"MONITORFORMAT": "Specifica il formato del file di registrazione. Se impostato su 'inactive' le chiamate non verranno registrate",
-			"CONTEXT": "Abilita il chiamante ad uscire dalla coda premendo un tasto: se è stato specificato un contesto e il numero inserito corrisponde, viene attivato il dialplan corrispondente",
-			"SETINTERFACEVARIABLES": "Se impostato su si, prima che il chiamante sia collegato all'agente in coda, vengono settate alcune variabili (vedi documentazione specifica su Motion wiki)",
-			"SETQUEUEVARIABLES": "Se impostato su si, prima che il chiamante sia collegato all'agente in coda e prima che il chiamante esca dalla coda, vengono settate alcune variabili (vedi documentazione specifica su Motion wiki)",
-			"SETQUEUEENTRYVARIABLES": "Se impostato su si, prima che il chiamante sia collegato all'agente in coda vengono settate alcune variabili (vedi documentazione specifica su Motion wiki)",
-			"RECORDING": "Abilita la registrazione della chiamata",
-			"VOICEMAIL_CONTEXT": "Il contesto dell'extension relativa",
-			"NAME": "Sono supportati solo numeri, lettere e caratteri specifici (._)",
-			"CALLERIDALL": "Formato supportato: \"CallerId\" &lt;number&gt;",
-			"CALLER_ID": "Formato supportato: \"CallerId\" &lt;number&gt;",
-			"MANDATORYDISPOSITION": "",
-			"MANDATORYDISPOSITIONPAUSEID": "Metti in pausa lo stato da impostare durante la disposizione obbligatoria"
-		},
 		"MUSICONHOLD": "Musica di attesa",
 		"ANNOUNCETOAGENT": "Annuncio all'Agente",
 		"ANNOUNCEMENTS": "Annunci",
@@ -451,6 +354,124 @@
 		"CANT_DOWNLOAD_THIS_FILE": "Impossibile scaricare il file",
 		"WRONG_EXTENSION": "Il file presenta un'estensione errata",
 		"FILE_NOT_FOUND": "File non presente sul server",
-		"TEAMS_ASSOCIATION": "Associazione Teams"
+		"TEAMS_ASSOCIATION": "Associazione Teams",
+		"SERVICELEVEL": "Livello di servizio",
+		"TRANSCRIBE": "Transcribe",
+		"TRANSCRIPT": "Trascrizione",
+		"SENTIMENTANALYSIS": "Sentiment Analysis",
+		"TRANSCRIBESTATUS_COMPLETED": "Completato",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "In corso",
+		"TRANSCRIBESTATUS_FAILED": "Fallito",
+		"TRANSCRIBESTATUS_NEW": "Nuovo",
+		"TRANSCRIPTANALYSIS": "Trascrizione & Analisi",
+		"SENTIMENT_POSITIVE": "Positivo",
+		"SENTIMENT_NEGATIVE": "Negativo",
+		"SENTIMENT_NEUTRAL": "Neutrale",
+		"SENTIMENT_MIXED": "Misto",
+		"RUNTRANSCRIBE_VOICERECORDING": "Esegui Transcribe",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Esegui Transcribe&Sentiment",
+		"RUNSENTIMENT_VOICERECORDING": "Esegui Sentiment",
+		"LEGEND": {
+			"CUSTOM_APPLICATION": "(*) - Applicatione Custom"
+		},
+		"ERRORS": {
+			"PROJECT_REQUIRED": "Campo Obbligatorio",
+			"TRUNK_REQUIRED": "Campo Obbligatorio",
+			"VARIABLE_REQUIRED": "Campo Obbligatorio",
+			"NAME_REQUIRED": "Campo Obbligatorio",
+			"TIMEOUT_REQUIRED": "Campo Obbligatorio",
+			"PHONENUMBER_REQUIRED": "Campo Obbligatorio",
+			"CONTEXT_REQUIRED": "Campo Obbligatorio",
+			"DESTINATIONPATTERN_REQUIRED": "Campo Obbligatorio",
+			"FULLNAME_REQUIRED": "Campo Obbligatorio",
+			"EMAIL_REQUIRED": "Campo Obbligatorio",
+			"EMAIL_MUST_VALID": "Campo Obbligatorio",
+			"MAILBOX_REQUIRED": "Campo Obbligatorio",
+			"PASSWORD_REQUIRED": "Campo Obbligatorio",
+			"CONFIRM_NOT_MATCH": "Le password inserite non coincidono",
+			"TIMEZONE_REQUIRED": "Campo Obbligatorio",
+			"PREFIX_REQUIRED": "Campo Obbligatorio",
+			"OPTIONS_REQUIRED": "Campo Obbligatorio",
+			"AFTERCALLWORKDURATION_REQUIRED": "Campo Obbligatorio",
+			"TECHNOLOGY/RESOURCE_REQUIRED": "Campo Obbligatorio",
+			"PHONE_REQUIRED": "Campo Obbligatorio",
+			"VALUE_REQUIRED": "Campo Obbligatorio",
+			"EXTENSION_REQUIRED": "Campo Obbligatorio",
+			"PRIORITY_REQUIRED": "Campo Obbligatorio",
+			"APPLICATION_REQUIRED": "Campo Obbligatorio",
+			"APPLICATION_NAME_REQUIRED": "Campo Obbligatorio",
+			"OUTBOUNDROUTE_REQUIRED": "Campo Obbligatorio",
+			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere superiore o uguale a",
+			"MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Il valore introdotto deve essere inferiore o uguale a",
+			"NAME_MUST_VALID_PATTERN": "Formato errato",
+			"CALLERIDALL_MUST_VALID_PATTERN": "Formato errato",
+			"CALLER_ID_MUST_VALID_PATTERN": "Formato errato",
+			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Campo obbligatorio"
+		},
+		"HELP": {
+			"TIMEOUT": "Tempo (in secondi) in cui va fatto squillare il dispositivo dell'agente in coda",
+			"MAXLENGTH": "Numero massimo di chiamanti che possono attendere in una coda (zero indica un numero illimitato di chiamanti)",
+			"RETRY": "Tempo (in secondi) da attendere prima di chiamare il prossimo agente in coda alla scadenza del timeout",
+			"WRAPUPTIME": "Tempo (in secondi) in cui l'agente in coda è 'Non disponibile' dopo aver completato una chiamata",
+			"WEIGHT": "Consente di definirne un 'peso' o ordine di priorità (nel caso in cui i membri della coda siano associati a più code)",
+			"JOINWHENEMPTY": "Indica se un chiamante può essere aggiunto ad una coda anche se questa non ha alcun agente",
+			"LEAVEWHENEMPTY": "Definisce se i chiamanti devono essere espulsi da una coda quando non ci sono più agenti disponibili a rispondere",
+			"ANNOUNCEFREQUENCY": "Definisce quanto spesso annunciare la posizione del chiamante e/o il tempo stimato di attesa nella coda (se zero viene disabilitato)",
+			"MINANNOUNCEFREQUENCY": "Specifica il tempo minimo tra gli annunci della posizione del chiamante (usato quando la posizione del chiamante può cambiare frequentemente)",
+			"PERIODICANNOUNCEFREQUENCY": "Indica quanto spesso riprodurre gli annunci periodici per il chiamante.",
+			"ANNOUNCEPOSITIONLIMIT": "Usato se l'annuncio della posizione del chiamante è stato definito come 'limit' o 'more'",
+			"AFTERCALLWORKDURATION": "La durata della pausa scatenata dall'evento 'After Call Work'",
+			"MEMBERDELAY": "Usato se si vuole che ci sia un ritardo prima che il chiamante e l'agente in coda vengano connessi",
+			"MUSICONHOLD": "Imposta musica di attesa da usare per una particolare coda",
+			"ANNOUNCETOAGENT": "Usato per riprodurre un annuncio all'agente che ha risposto alla chiamata, di solito per informarlo da quale coda arriva il chiamante",
+			"RANDOMPERIODICANNOUNCE": "Se impostato, gli annunci periodici verranno riprodotti in ordine casuale",
+			"ANNOUNCEHOLDTIME": "Definisce se annunciare il tempo di attesa stimato insieme agli annunci periodici",
+			"ANNOUNCECALLERPOSITION": "Definisce se annunciare la posizione del chiamante. Se impostato su no la posizione non verrà amai annunciata. Se impostata la posizione verrà sempre annunciata. Se impostato su limit il chiamante ascolterà la sua posizione solo se entro il limite dell' announce position limit. Se è impostato su more il chiamante ascolterà la sua posizione se si trova oltre il limite in announce position limit.",
+			"REPORTHOLDTIMEAGENT": "Abilita l'annuncio del tempo di attesa del chiamante all'agente in coda, prima della connessione al canale",
+			"PERIODICANNOUNCE": "Serie di annunci periodici da riprodurre, nell'ordine in cui sono definiti",
+			"HOLDTIMEANNOUNCE": "Se non definito, riproduce il valore di default (“Hold time..”). Se impostato su un valore vuoto non verrà riprodotto",
+			"YOUARENEXTANNOUNCE": "Se non definito, riproduce il valore di default (“You are now first in line”). Se impostato su un valore vuoto non verrà riprodotto",
+			"THEREAREANNOUNCE": "Se non definito, riproduce il valore di default (“There are..”). Se impostato su un valore vuoto non verrà riprodotto",
+			"WAITINGCALLSANNOUNCE": "Se non definito, riproduce il valore di default (“..calls waiting”). Se impostato su un valore vuoto non verrà riprodotto",
+			"ESTIMATEDHOLDTIMEANNOUNCE": "Se non definito, riproduce il valore di default (“The current estimated hold time is..”). Se impostato su un valore vuoto non verrà riprodotto",
+			"MINUTESANNOUNCE": "Se non definito, riproduce il valore di default (“..minutes”). Se impostato su un valore vuoto non verrà riprodotto",
+			"MINUTEANNOUNCE": "Se non definito, riproduce il valore di default (“..minute”). Se impostato su un valore vuoto non verrà riprodotto",
+			"SECONDSANNOUNCE": "Se non definito, riproduce il valore di default (“..seconds”). Se impostato su un valore vuoto non verrà riprodotto",
+			"THANKYOUANNOUNCE": "Se non definito, riproduce il valore di default (“Thank you for your patience”). Se impostato su un valore vuoto non verrà riprodotto",
+			"AFTERCALLWORK": "Se attivo, l'agente verrà messo in Pausa al completamento di una chiamata risposta sulla coda",
+			"AUTOPAUSE": "Abilita/Disabilita la pausa automatica dei membri che non effettuano risposta ad una chiamata. Se attivo mette l'agente in pausa su tutte le sue code.",
+			"RINGINUSE": "Usato per evitare di inviare chiamate ai membri il cui stato è 'In Use' (in conversazione)",
+			"TIMEOUTRESTART": "Se impostato a yes, resetta il timeout di un agente per rispondere ad una chiamata, se il canale è in stato BUSY o CONGESTION",
+			"MONITORFORMAT": "Specifica il formato del file di registrazione. Se impostato su 'inactive' le chiamate non verranno registrate",
+			"CONTEXT": "Abilita il chiamante ad uscire dalla coda premendo un tasto: se è stato specificato un contesto e il numero inserito corrisponde, viene attivato il dialplan corrispondente",
+			"SETINTERFACEVARIABLES": "Se impostato su si, prima che il chiamante sia collegato all'agente in coda, vengono settate alcune variabili (vedi documentazione specifica su Motion wiki)",
+			"SETQUEUEVARIABLES": "Se impostato su si, prima che il chiamante sia collegato all'agente in coda e prima che il chiamante esca dalla coda, vengono settate alcune variabili (vedi documentazione specifica su Motion wiki)",
+			"SETQUEUEENTRYVARIABLES": "Se impostato su si, prima che il chiamante sia collegato all'agente in coda vengono settate alcune variabili (vedi documentazione specifica su Motion wiki)",
+			"RECORDING": "Abilita la registrazione della chiamata",
+			"VOICEMAIL_CONTEXT": "Il contesto dell'extension relativa",
+			"NAME": "Sono supportati solo numeri, lettere e caratteri specifici (._)",
+			"CALLERIDALL": "Formato supportato: \"CallerId\" &lt;number&gt;",
+			"CALLER_ID": "Formato supportato: \"CallerId\" &lt;number&gt;",
+			"MANDATORYDISPOSITION": "",
+			"MANDATORYDISPOSITIONPAUSEID": "Metti in pausa lo stato da impostare durante la disposizione obbligatoria",
+			"SERVICELEVEL": "Seconda impostazione per il livello di servizio (default = 0, no SL). Utilizzato per le statistiche sul livello di servizio (chiamate risposte entro il periodo di tempo del livello di servizio)"
+		},
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Scarica la trascrizione",
+		"FAILUREREASON": "Motivo del fallimento",
+		"SENTIMENT": "Sentimento",
+		"TEXT": "Testo"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/ja.json b/public/app/main/apps/voice/i18n/ja.json
index 592ed75..b11653d 100644
--- a/public/app/main/apps/voice/i18n/ja.json
+++ b/public/app/main/apps/voice/i18n/ja.json
@@ -94,7 +94,8 @@
 			"YOUARENEXTANNOUNCE": "ツールで定義されたサウンドを選択します。デフォルト= \"You are now first in line\"。未定義=アナウンスなし",
 			"CALLERIDALL": "サポートされているフォーマット： \"CallerId\"＆lt; number＆gt;",
 			"CALLER_ID": "サポートされているフォーマット： \"CallerId\"＆lt; number＆gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "強制処分中に設定する一時停止ステータス"
+			"MANDATORYDISPOSITIONPAUSEID": "強制処分中に設定する一時停止ステータス",
+			"SERVICELEVEL": "サービスレベルの2番目の設定（デフォルト= 0、SLなし）。サービスレベルの統計情報に使用されます（サービスレベルの時間枠内に応答された通話）"
 		},
 		"ABANDONED": "放棄",
 		"ABANDONEDCALLS": "放棄されたキューコール",
@@ -152,7 +153,7 @@
 		"AVG_HOLD_TIME": "平均保留時間",
 		"BACK": "戻る",
 		"BILLABLESECONDS": "請求可能な秒数",
-		"BUSY": "ビジー",
+		"BUSY": "通話中",
 		"CALLED": "呼び出された",
 		"CALLER": "発信者",
 		"CALLER_ID": "発信者ID",
@@ -185,7 +186,7 @@
 		"DELETE_MUSICONHOLD": "保留中の音楽を削除",
 		"DELETE_OUTBOUNDROUTE": "アウトバウンドルートを削除",
 		"DELETE_VOICEDISPOSITION": "音声ディスポジションを削除",
-		"DELETE_VOICEMAIL": "ボイスメールの削除",
+		"DELETE_VOICEMAIL": "留守番電話の削除",
 		"DELETE_VOICEQUEUE": "ボイスキューの削除",
 		"DELETE_VOICERECORDING": "音声録音を削除",
 		"DESCRIPTION": "説明",
@@ -244,7 +245,7 @@
 		"GOTO": "GoTo",
 		"GOTOREALTIME_VOICEQUEUE": "リアルタイム音声キューに移動",
 		"GOTO_VOICEQUEUE": "リアルタイム音声キューに移動",
-		"HANGUP": "ハングアップ",
+		"HANGUP": "電話を切る",
 		"HANGUPCAUSE_1": "1 = 欠番",
 		"HANGUPCAUSE_16": "16 = 正常切断",
 		"HANGUPCAUSE_17": "17 = 着ユーザビジー",
@@ -257,7 +258,7 @@
 		"HANGUP_CAUSE": "ハングアップ原因",
 		"HOLDTIMEANNOUNCE": "保留時間アナウンス",
 		"ID": "ID",
-		"IDLE": "アイドル",
+		"IDLE": "待機",
 		"INBOUNDROUTES": "インバウンドルート",
 		"INFO": "情報",
 		"INTERNAL": "内部",
@@ -404,7 +405,7 @@
 		"UNAVAILABLE": "不在",
 		"UNIQUEID": "ユニークID",
 		"UNKNOWN": "未知",
-		"UNMANAGED": "アンマネージド",
+		"UNMANAGED": "非管理",
 		"UNPAUSE": "再生",
 		"UNREACHABLE": "到達不能",
 		"UNREGISTERED": "未登録",
@@ -414,8 +415,8 @@
 		"VALUE": "値",
 		"VARIABLE": "変数",
 		"VOICE": "音声",
-		"VOICEMAIL": "ボイスメール",
-		"VOICEMAILS": "ボイスメール",
+		"VOICEMAIL": "留守番電話",
+		"VOICEMAILS": "留守番電話",
 		"VOICEMAIL_CONTEXT": "コンテキスト",
 		"VOICEQUEUES": "音声キュー",
 		"VOICERECORDINGS": "音声録音",
@@ -432,11 +433,11 @@
 		"DELETE_VOICEPREFIX": "プレフィックスの削除",
 		"EDIT_VOICEPREFIX": "プレフィックスの編集",
 		"NEW_VOICEPREFIX": "新しいプレフィックス",
-		"VOICEPREFIXES": "プレフィックスを外す",
+		"VOICEPREFIXES": "プレフィックス",
 		"CALLERIDALL": "発信者ID",
 		"OUTBOUNDROUTE": "アウトバウンドルート",
 		"LOGIN_TIME": "ログイン時間",
-		"PAUSE_TIME": "時間を一時停止",
+		"PAUSE_TIME": "一時停止時間",
 		"DIALER": "ダイヤラ",
 		"INBOUND": "インバウンド",
 		"OUTBOUND": "アウトバウンド",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "画面記録を停止する",
 		"TOOLTIP_SCREENRECORDING_OFF": "利用可能なスクリーン録画",
 		"TOOLTIP_SCREENRECORDING_ON": "スクリーン録画中",
-		"WRONG_EXTENSION": "ファイルの拡張子が間違っています"
+		"WRONG_EXTENSION": "ファイルの拡張子が間違っています",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "トランスクリプトをダウンロード",
+		"FAILUREREASON": "失敗の理由",
+		"RUNSENTIMENT_VOICERECORDING": "感情を実行",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "文字起こしと感情を実行",
+		"RUNTRANSCRIBE_VOICERECORDING": "文字起こしを実行",
+		"SENTIMENT": "感情",
+		"SENTIMENTANALYSIS": "感情分析",
+		"SENTIMENT_MIXED": "混合",
+		"SENTIMENT_NEGATIVE": "負",
+		"SENTIMENT_NEUTRAL": "中性",
+		"SENTIMENT_POSITIVE": "ポジティブ",
+		"TEXT": "テキスト",
+		"TRANSCRIBE": "文字起こし",
+		"TRANSCRIBESTATUS_COMPLETED": "完了しました",
+		"TRANSCRIBESTATUS_FAILED": "失敗",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "進行中",
+		"TRANSCRIBESTATUS_NEW": "新着",
+		"TRANSCRIPT": "筆記録",
+		"TRANSCRIPTANALYSIS": "筆記録と分析",
+		"SERVICELEVEL": "サービスレベル"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/ko.json b/public/app/main/apps/voice/i18n/ko.json
index 0e03538..cc22b7a 100644
--- a/public/app/main/apps/voice/i18n/ko.json
+++ b/public/app/main/apps/voice/i18n/ko.json
@@ -123,7 +123,8 @@
 			"NAME": "이름",
 			"CALLERIDALL": "지원되는 형식 : \"CallerId\"& lt; number & gt;",
 			"CALLER_ID": "지원되는 형식 : \"CallerId\"& lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "강제 처분 중에 설정할 일시 중지 상태"
+			"MANDATORYDISPOSITIONPAUSEID": "강제 처분 중에 설정할 일시 중지 상태",
+			"SERVICELEVEL": "서비스 수준에 대한 두 번째 설정 (기본값 = 0, SL 없음). 서비스 수준 통계에 사용 (서비스 수준 시간 범위 내에 응답 된 통화)"
 		},
 		"MUSICONHOLD": "대기 중 음악",
 		"ANNOUNCETOAGENT": "상담원 공지",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "화면 녹화 중지",
 		"TOOLTIP_SCREENRECORDING_OFF": "스크린 녹화 가능",
 		"TOOLTIP_SCREENRECORDING_ON": "화면 녹화 중",
-		"WRONG_EXTENSION": "파일의 확장자가 잘못되었습니다"
+		"WRONG_EXTENSION": "파일의 확장자가 잘못되었습니다",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "성적 증명서 다운로드",
+		"FAILUREREASON": "실패 이유",
+		"RUNSENTIMENT_VOICERECORDING": "감정 실행",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Transcribe & Sentiment 실행",
+		"RUNTRANSCRIBE_VOICERECORDING": "스크립트 실행",
+		"SENTIMENT": "감정",
+		"SENTIMENTANALYSIS": "감정 분석",
+		"SENTIMENT_MIXED": "혼합",
+		"SENTIMENT_NEGATIVE": "부정",
+		"SENTIMENT_NEUTRAL": "중립국",
+		"SENTIMENT_POSITIVE": "양",
+		"TEXT": "본문",
+		"TRANSCRIBE": "고쳐 쓰다",
+		"TRANSCRIBESTATUS_COMPLETED": "완료",
+		"TRANSCRIBESTATUS_FAILED": "실패한",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "진행 중",
+		"TRANSCRIBESTATUS_NEW": "새로운",
+		"TRANSCRIPT": "성적 증명서",
+		"TRANSCRIPTANALYSIS": "성적표 및 분석",
+		"SERVICELEVEL": "서비스 수준"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/lt.json b/public/app/main/apps/voice/i18n/lt.json
index 7e65709..035674c 100644
--- a/public/app/main/apps/voice/i18n/lt.json
+++ b/public/app/main/apps/voice/i18n/lt.json
@@ -138,7 +138,8 @@
 			"NAME": "Palaikomi tik skaičiai, raidės ir konkretūs simboliai (._)",
 			"CALLERIDALL": "Palaikomas formatas: \"Skambintojo ID\" <numeris>",
 			"CALLER_ID": "Palaikomas formatas: \"Skambintojo ID\" <numeris>",
-			"MANDATORYDISPOSITIONPAUSEID": "Nustatyti pauzės būseną privalomo išdėstymo metu"
+			"MANDATORYDISPOSITIONPAUSEID": "Nustatyti pauzės būseną privalomo išdėstymo metu",
+			"SERVICELEVEL": "Antrieji paslaugos lygio nustatymai (numatytasis = 0, be SL). Naudojamas paslaugų lygio statistikai (į skambučius atsakoma per paslaugų lygio laikotarpį)"
 		},
 		"MUSICONHOLD": "Muzika sulaikyta",
 		"ANNOUNCETOAGENT": "Pranešti agentui",
@@ -469,6 +470,7 @@
 		"TRANSCRIBESTATUS_IN_PROGRESS": "Vykdoma",
 		"TRANSCRIBESTATUS_NEW": "Nauja",
 		"TRANSCRIPT": "Nuorašas",
-		"TRANSCRIPTANALYSIS": "Nuorašas ir analizė"
+		"TRANSCRIPTANALYSIS": "Nuorašas ir analizė",
+		"SERVICELEVEL": "Aptarnavimo lygis"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/lv.json b/public/app/main/apps/voice/i18n/lv.json
index 6028229..b553b78 100644
--- a/public/app/main/apps/voice/i18n/lv.json
+++ b/public/app/main/apps/voice/i18n/lv.json
@@ -94,7 +94,8 @@
 			"NAME": "Tiek atbalstīti tikai numuri, burti un atsevišķas rakstzīmes (._)",
 			"CALLERIDALL": "Atbalstītais formāts: \"CallerId\" &lt;numurs>",
 			"CALLER_ID": "Atbalstītais formāts: \"CallerId\" &lt;numurs>",
-			"MANDATORYDISPOSITIONPAUSEID": "Pauzēt statusu, lai iestatītu obligātās izvietošanas laikā"
+			"MANDATORYDISPOSITIONPAUSEID": "Pauzēt statusu, lai iestatītu obligātās izvietošanas laikā",
+			"SERVICELEVEL": "Pakalpojuma līmeņa otrie iestatījumi (noklusējums = 0, bez SL). Izmanto pakalpojuma līmeņa statistikai (zvani tiek atbildēti pakalpojuma līmeņa laika posmā)"
 		},
 		"WAITING_FOR_AGENTS": "Gaida aģentus",
 		"ACTIVE": "Aktīvs",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Beigt ekrāna ierakstīšanu",
 		"TOOLTIP_SCREENRECORDING_OFF": "Ekrāna ieraksts ir pieejams",
 		"TOOLTIP_SCREENRECORDING_ON": "Notiek ekrāna ierakstīšana",
-		"WRONG_EXTENSION": "Failā ir norādīts nepareizs paplašinājums"
+		"WRONG_EXTENSION": "Failā ir norādīts nepareizs paplašinājums",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Lejupielādējiet stenogrammu",
+		"FAILUREREASON": "Neveiksmes iemesls",
+		"RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Palaist pārrakstīšanu un noskaņojumu",
+		"RUNTRANSCRIBE_VOICERECORDING": "Palaist pārrakstu",
+		"SENTIMENT": "Sentimentāls",
+		"SENTIMENTANALYSIS": "Sentimentu analīze",
+		"SENTIMENT_MIXED": "Sajaukts",
+		"SENTIMENT_NEGATIVE": "Negatīvs",
+		"SENTIMENT_NEUTRAL": "Neitrāls",
+		"SENTIMENT_POSITIVE": "Pozitīvs",
+		"TEXT": "Teksts",
+		"TRANSCRIBE": "Atšifrēt",
+		"TRANSCRIBESTATUS_COMPLETED": "Pabeigts",
+		"TRANSCRIBESTATUS_FAILED": "Neizdevās",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "Notiek izstrāde",
+		"TRANSCRIBESTATUS_NEW": "Jauns",
+		"TRANSCRIPT": "Stenogramma",
+		"TRANSCRIPTANALYSIS": "Atraksts un analīze",
+		"SERVICELEVEL": "Pakalpojuma līmenis"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/nl.json b/public/app/main/apps/voice/i18n/nl.json
index 3bda21d..42c7cc5 100644
--- a/public/app/main/apps/voice/i18n/nl.json
+++ b/public/app/main/apps/voice/i18n/nl.json
@@ -123,7 +123,8 @@
 			"NAME": "Alleen cijfers, letters en speciale tekens (_) worden ondersteund",
 			"CALLERIDALL": "Ondersteunde indeling: 'CallerId' & lt; number & gt;",
 			"CALLER_ID": "Ondersteunde indeling: 'CallerId' & lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Pauzestatus in te stellen tijdens verplichte dispositie"
+			"MANDATORYDISPOSITIONPAUSEID": "Pauzestatus in te stellen tijdens verplichte dispositie",
+			"SERVICELEVEL": "Tweede instellingen voor serviceniveau (standaard = 0, geen SL). Gebruikt voor serviceniveaustatistieken (oproepen beantwoord binnen het serviceniveau)"
 		},
 		"MUSICONHOLD": "Wachtmuziek",
 		"ANNOUNCETOAGENT": "Kondig Agent",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Stop Screen Recording",
 		"TOOLTIP_SCREENRECORDING_OFF": "Schermopname beschikbaar",
 		"TOOLTIP_SCREENRECORDING_ON": "Schermopname bezig",
-		"WRONG_EXTENSION": "Het bestand heeft de verkeerde extensie"
+		"WRONG_EXTENSION": "Het bestand heeft de verkeerde extensie",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Transcript downloaden",
+		"FAILUREREASON": "Reden voor mislukking",
+		"RUNSENTIMENT_VOICERECORDING": "Voer Sentiment uit",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Voer Transcribe & Sentiment uit",
+		"RUNTRANSCRIBE_VOICERECORDING": "Voer Transcriberen uit",
+		"SENTIMENT": "Sentiment",
+		"SENTIMENTANALYSIS": "Sentiment analyse",
+		"SENTIMENT_MIXED": "Gemengd",
+		"SENTIMENT_NEGATIVE": "Negatief",
+		"SENTIMENT_NEUTRAL": "Neutrale",
+		"SENTIMENT_POSITIVE": "Positief",
+		"TEXT": "Tekst",
+		"TRANSCRIBE": "Transcriberen",
+		"TRANSCRIBESTATUS_COMPLETED": "Voltooid",
+		"TRANSCRIBESTATUS_FAILED": "Mislukt",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "Bezig",
+		"TRANSCRIBESTATUS_NEW": "Nieuw",
+		"TRANSCRIPT": "Vertaling",
+		"TRANSCRIPTANALYSIS": "Transcriptie en analyse",
+		"SERVICELEVEL": "Service Level"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/no.json b/public/app/main/apps/voice/i18n/no.json
index ceeb428..128b3fc 100644
--- a/public/app/main/apps/voice/i18n/no.json
+++ b/public/app/main/apps/voice/i18n/no.json
@@ -123,7 +123,8 @@
 			"NAME": "Bare tall, bokstaver og bestemte tegn (._) støttes",
 			"CALLERIDALL": "Støttet format: \"CallerId\" & lt; number & gt;",
 			"CALLER_ID": "Støttet format: \"CallerId\" & lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Pausestatus som skal angis under obligatorisk disposisjon"
+			"MANDATORYDISPOSITIONPAUSEID": "Pausestatus som skal angis under obligatorisk disposisjon",
+			"SERVICELEVEL": "Andre innstillinger for servicenivå (standard = 0, ingen SL). Brukes for statistikk på servicenivå (samtaler besvart innen tidsramme for servicenivå)"
 		},
 		"MUSICONHOLD": "Musikk på vent",
 		"ANNOUNCETOAGENT": "Annonsere til agent",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Stopp skjermopptak",
 		"TOOLTIP_SCREENRECORDING_OFF": "Skjermopptak tilgjengelig",
 		"TOOLTIP_SCREENRECORDING_ON": "Skjermopptak pågår",
-		"WRONG_EXTENSION": "Filen presenterer feil utvidelse"
+		"WRONG_EXTENSION": "Filen presenterer feil utvidelse",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Last ned transkript",
+		"FAILUREREASON": "Feil grunn",
+		"RUNSENTIMENT_VOICERECORDING": "Kjør sentiment",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Kjør transkriber & sentiment",
+		"RUNTRANSCRIBE_VOICERECORDING": "Kjør transkribere",
+		"SENTIMENT": "sentiment",
+		"SENTIMENTANALYSIS": "Sentiment Analyse",
+		"SENTIMENT_MIXED": "blandet",
+		"SENTIMENT_NEGATIVE": "Negativ",
+		"SENTIMENT_NEUTRAL": "Nøytral",
+		"SENTIMENT_POSITIVE": "positiv",
+		"TEXT": "Tekst",
+		"TRANSCRIBE": "Transkriber",
+		"TRANSCRIBESTATUS_COMPLETED": "fullført",
+		"TRANSCRIBESTATUS_FAILED": "mislyktes",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "I prosess",
+		"TRANSCRIBESTATUS_NEW": "Ny",
+		"TRANSCRIPT": "transkripsjon",
+		"TRANSCRIPTANALYSIS": "Transkripsjon og analyse",
+		"SERVICELEVEL": "Service nivå"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/pl.json b/public/app/main/apps/voice/i18n/pl.json
index f0c15ec..668ff38 100644
--- a/public/app/main/apps/voice/i18n/pl.json
+++ b/public/app/main/apps/voice/i18n/pl.json
@@ -123,7 +123,8 @@
 			"NAME": "Tylko cyfry, litery i znaki specjalne (._) są obsługiwane",
 			"CALLERIDALL": "Obsługiwany format: \"CallerId\" & lt; number & gt;",
 			"CALLER_ID": "Obsługiwany format: \"CallerId\" & lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Wstrzymaj status, aby ustawić podczas obowiązkowej dyspozycji"
+			"MANDATORYDISPOSITIONPAUSEID": "Wstrzymaj status, aby ustawić podczas obowiązkowej dyspozycji",
+			"SERVICELEVEL": "Drugie ustawienia poziomu serwisowego (domyślnie = 0, brak SL). Używane do statystyk poziomu usług (połączenia odebrane w ramach czasowych poziomu usług)"
 		},
 		"MUSICONHOLD": "Music on Hold",
 		"ANNOUNCETOAGENT": "Poinformowania agenta",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Zatrzymaj nagrywanie ekranu",
 		"TOOLTIP_SCREENRECORDING_OFF": "Dostępne nagrywanie ekranu",
 		"TOOLTIP_SCREENRECORDING_ON": "Trwa nagrywanie ekranu",
-		"WRONG_EXTENSION": "Plik przedstawia nieprawidłowe rozszerzenie"
+		"WRONG_EXTENSION": "Plik przedstawia nieprawidłowe rozszerzenie",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Pobierz transkrypcję",
+		"FAILUREREASON": "Przyczyna awarii",
+		"RUNSENTIMENT_VOICERECORDING": "Run Sentiment",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Uruchom Transkrypcję i sentyment",
+		"RUNTRANSCRIBE_VOICERECORDING": "Uruchom Transkrypcję",
+		"SENTIMENT": "Sentyment",
+		"SENTIMENTANALYSIS": "Analiza nastrojów",
+		"SENTIMENT_MIXED": "Mieszany",
+		"SENTIMENT_NEGATIVE": "Negatywny",
+		"SENTIMENT_NEUTRAL": "Neutralny",
+		"SENTIMENT_POSITIVE": "Pozytywny",
+		"TEXT": "Tekst",
+		"TRANSCRIBE": "Rozpisać",
+		"TRANSCRIBESTATUS_COMPLETED": "Zakończony",
+		"TRANSCRIBESTATUS_FAILED": "Niepowodzenie",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "W trakcie",
+		"TRANSCRIBESTATUS_NEW": "Nowy",
+		"TRANSCRIPT": "Transkrypcja",
+		"TRANSCRIPTANALYSIS": "Transkrypcja i analiza",
+		"SERVICELEVEL": "Poziom usług"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/pt-BR.json b/public/app/main/apps/voice/i18n/pt-BR.json
index f023723..32d541f 100644
--- a/public/app/main/apps/voice/i18n/pt-BR.json
+++ b/public/app/main/apps/voice/i18n/pt-BR.json
@@ -135,7 +135,8 @@
 			"NAME": "Somente números, letras e caracteres específicos (._) são suportados",
 			"CALLERIDALL": "Formato suportado: \"CallerId \" <number>",
 			"CALLER_ID": "Formato suportado: \\ \"CallerId \" <number>",
-			"MANDATORYDISPOSITIONPAUSEID": "Pausar status para definir durante a disposição obrigatória"
+			"MANDATORYDISPOSITIONPAUSEID": "Pausar status para definir durante a disposição obrigatória",
+			"SERVICELEVEL": "Segundos ajustes para o nível de serviço (padrão = 0, sem SL). Usado para estatísticas de nível de serviço (chamadas atendidas dentro do período de tempo de nível de serviço)"
 		},
 		"MUSICONHOLD": "Música em espera",
 		"ANNOUNCETOAGENT": "Anunciar ao agente",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Parar gravação de tela",
 		"TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
 		"TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
-		"WRONG_EXTENSION": "O arquivo apresenta a extensão incorreta"
+		"WRONG_EXTENSION": "O arquivo apresenta a extensão incorreta",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Baixar transcrição",
+		"FAILUREREASON": "Razão da falha",
+		"RUNSENTIMENT_VOICERECORDING": "Executar Sentiment",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Executar transcrição e sentimento",
+		"RUNTRANSCRIBE_VOICERECORDING": "Executar a transcrição",
+		"SENTIMENT": "Sentimento",
+		"SENTIMENTANALYSIS": "Análise de sentimentos",
+		"SENTIMENT_MIXED": "Misturado",
+		"SENTIMENT_NEGATIVE": "Negativo",
+		"SENTIMENT_NEUTRAL": "Neutro",
+		"SENTIMENT_POSITIVE": "Positivo",
+		"TEXT": "Texto",
+		"TRANSCRIBE": "Transcrever",
+		"TRANSCRIBESTATUS_COMPLETED": "Concluído",
+		"TRANSCRIBESTATUS_FAILED": "Falhou",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "Em progresso",
+		"TRANSCRIBESTATUS_NEW": "Novo",
+		"TRANSCRIPT": "Transcrição",
+		"TRANSCRIPTANALYSIS": "Transcrição e Análise",
+		"SERVICELEVEL": "Nível de serviço"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/pt-PT.json b/public/app/main/apps/voice/i18n/pt-PT.json
index 87f6954..ddd1787 100644
--- a/public/app/main/apps/voice/i18n/pt-PT.json
+++ b/public/app/main/apps/voice/i18n/pt-PT.json
@@ -123,7 +123,8 @@
 			"NAME": "Apenas números, letras e caracteres específicos (._) são suportados",
 			"CALLERIDALL": "Formato suportado: \"CallerId\" & lt; number & gt;",
 			"CALLER_ID": "Formato suportado: \"CallerId\" & lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Pausar status para definir durante a disposição obrigatória"
+			"MANDATORYDISPOSITIONPAUSEID": "Pausar status para definir durante a disposição obrigatória",
+			"SERVICELEVEL": "Segundos ajustes para o nível de serviço (padrão = 0, sem SL). Usado para estatísticas de nível de serviço (chamadas atendidas dentro do período de tempo de nível de serviço)"
 		},
 		"MUSICONHOLD": "Música em espera",
 		"ANNOUNCETOAGENT": "Anunciar para agente",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Parar gravação de tela",
 		"TOOLTIP_SCREENRECORDING_OFF": "Gravação de tela disponível",
 		"TOOLTIP_SCREENRECORDING_ON": "Gravação de tela em andamento",
-		"WRONG_EXTENSION": "O arquivo apresenta a extensão incorreta"
+		"WRONG_EXTENSION": "O arquivo apresenta a extensão incorreta",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Baixar transcrição",
+		"FAILUREREASON": "Razão da falha",
+		"RUNSENTIMENT_VOICERECORDING": "Executar Sentiment",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Executar transcrição e sentimento",
+		"RUNTRANSCRIBE_VOICERECORDING": "Executar a transcrição",
+		"SENTIMENT": "Sentimento",
+		"SENTIMENTANALYSIS": "Análise de sentimentos",
+		"SENTIMENT_MIXED": "Misturado",
+		"SENTIMENT_NEGATIVE": "Negativo",
+		"SENTIMENT_NEUTRAL": "Neutro",
+		"SENTIMENT_POSITIVE": "Positivo",
+		"TEXT": "Texto",
+		"TRANSCRIBE": "Transcrever",
+		"TRANSCRIBESTATUS_COMPLETED": "Concluído",
+		"TRANSCRIBESTATUS_FAILED": "Falhou",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "Em progresso",
+		"TRANSCRIBESTATUS_NEW": "Novo",
+		"TRANSCRIPT": "Transcrição",
+		"TRANSCRIPTANALYSIS": "Transcrição e Análise",
+		"SERVICELEVEL": "Nível de serviço"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/ru.json b/public/app/main/apps/voice/i18n/ru.json
index 245cd82..ef6a660 100644
--- a/public/app/main/apps/voice/i18n/ru.json
+++ b/public/app/main/apps/voice/i18n/ru.json
@@ -1,455 +1,476 @@
 {
 	"VOICE": {
-		"GOTO_VOICEQUEUE": "Перейти к очередям голосовой почты в режиме реального времени",
-		"GOTOREALTIME_VOICEQUEUE": "Перейти к очередям голосовой почты в режиме реального времени",
+		"GOTO_VOICEQUEUE": "Перейдите к в режиме реального времени голосовой очередей",
+		"GOTOREALTIME_VOICEQUEUE": "Перейдите к в режиме реального времени голосовой очередей",
 		"NAME": "Имя",
-		"LOGOUT": "Выход",
-		"VOICEQUEUES": "Очереди голосовой почты",
-		"SEARCH_FOR_ANYONE": "Поиск",
+		"LOGOUT": "Выход из системы",
+		"VOICEQUEUES": "Голос очередей",
+		"SEARCH_FOR_ANYONE": "Для поиска любого",
 		"BACK": "Назад",
 		"SELECTED": "Выбранные",
 		"SELECT_ALL": "Выбрать все",
-		"SELECT_NONE": "Отменить все",
-		"DELETE_VOICEDISPOSITION": "Удалить диспозицию голосовой почты",
-		"EDIT_VOICEDISPOSITION": "Редактировать диспозицию голосовой почты",
-		"EDIT_VOICEQUEUE": "Редактировать очередь голосовой почты",
-		"DELETE_VOICEQUEUE": "Удалить очередь голосовой почты",
-		"MOHSOUNDS": "Звуки музыки на удержании",
+		"SELECT_NONE": "Выберите пункт None",
+		"DELETE_VOICEDISPOSITION": "Удаление голосовых распоряжения",
+		"EDIT_VOICEDISPOSITION": "Редактировать голосовые распоряжения",
+		"EDIT_VOICEQUEUE": "Изменить голос очереди",
+		"DELETE_VOICEQUEUE": "Удаление голосовых очереди",
+		"MOHSOUNDS": "Мз звуки",
 		"STRATEGY": "Стратегия",
 		"DESCRIPTION": "Описание",
-		"ADD_VOICEQUEUE": "Добавить очередь голосовой почты",
-		"CREATED_AT": "Создано на",
-		"CANT_PLAY_GSM_AUDIO_FILES": "Не могу воспроизвести аудиофайлы gsm или wav49",
+		"ADD_VOICEQUEUE": "Добавить голосовую очереди",
+		"CREATED_AT": "Созданные в",
+		"CANT_PLAY_GSM_AUDIO_FILES": "Не удается воспроизвести gsm аудио файлов",
 		"APPLICATIONS_LIST": "Список приложений",
 		"LEGEND": {
-			"CUSTOM_APPLICATION": "(*) – Пользовательское приложение"
+			"CUSTOM_APPLICATION": "(*) - пользовательские приложения."
 		},
 		"ERRORS": {
-			"NAME_REQUIRED": "Обязательное поле",
-			"APPLICATION_NAME_REQUIRED": "Обязательное поле",
-			"TIMEOUT_REQUIRED": "Обязательное поле",
-			"PHONENUMBER_REQUIRED": "Обязательное поле",
-			"CONTEXT_REQUIRED": "Обязательное поле",
-			"DESTINATIONPATTERN_REQUIRED": "Обязательное поле",
-			"FULLNAME_REQUIRED": "Обязательное поле",
-			"EMAIL_REQUIRED": "Обязательное поле",
-			"EMAIL_MUST_VALID": "Неверный формат",
-			"MAILBOX_REQUIRED": "Обязательное поле",
-			"PASSWORD_REQUIRED": "Обязательное поле",
-			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
-			"TIMEZONE_REQUIRED": "Обязательное поле",
-			"PREFIX_REQUIRED": "Обязательное поле",
-			"OPTIONS_REQUIRED": "Обязательное поле",
-			"AFTERCALLWORKDURATION_REQUIRED": "Обязательное поле",
-			"TECHNOLOGY/RESOURCE_REQUIRED": "Обязательное поле",
-			"PHONE_REQUIRED": "Обязательное поле",
-			"VALUE_REQUIRED": "Обязательное поле",
-			"EXTENSION_REQUIRED": "Обязательное поле",
-			"PRIORITY_REQUIRED": "Обязательное поле",
-			"NAME_MUST_VALID_PATTERN": "Неверный формат",
-			"APPLICATION_REQUIRED": "Обязательное поле",
-			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Значение должно быть больше или равно",
-			"MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Значение должно быть меньше или равно",
-			"CALLERIDALL_MUST_VALID_PATTERN": "Неверный формат",
+			"NAME_REQUIRED": "Это имя требуется",
+			"APPLICATION_NAME_REQUIRED": "Имя приложения не требуется",
+			"TIMEOUT_REQUIRED": "Тайм-аут не требуется",
+			"PHONENUMBER_REQUIRED": "Номер телефона не требуется",
+			"CONTEXT_REQUIRED": "В этом контексте необходимо",
+			"DESTINATIONPATTERN_REQUIRED": "Назначение шаблона не требуется",
+			"FULLNAME_REQUIRED": "В требуется указать полное имя",
+			"EMAIL_REQUIRED": "Адреса электронной почты не требуется",
+			"EMAIL_MUST_VALID": "Адреса электронной почты должны быть записаны в действительный формат",
+			"MAILBOX_REQUIRED": "Почтовый ящик не требуется",
+			"PASSWORD_REQUIRED": "Пароль не требуется",
+			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
+			"TIMEZONE_REQUIRED": "Часовой пояс не требуется",
+			"PREFIX_REQUIRED": "Префикс не требуется",
+			"OPTIONS_REQUIRED": "Параметры не требуется",
+			"AFTERCALLWORKDURATION_REQUIRED": "После вызова, продолжительность работы не требуется",
+			"TECHNOLOGY/RESOURCE_REQUIRED": "Технология/ресурсов не требуется",
+			"PHONE_REQUIRED": "Номер телефона не требуется",
+			"VALUE_REQUIRED": "Это значение требуется",
+			"EXTENSION_REQUIRED": "Такое продление срока действия необходимо",
+			"PRIORITY_REQUIRED": "Приоритет не требуется",
+			"NAME_MUST_VALID_PATTERN": "Имя должно быть записано в действительный формат",
+			"APPLICATION_REQUIRED": "Приложения не требуется",
+			"TIMEOUT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Тайм-аута должно быть больше или равно",
+			"MAXLENGTH_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Максимальная длина должна быть больше или равно",
+			"RETRY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Повтор должно быть больше или равно",
+			"WRAPUPTIME_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "На время завершения должно быть больше или равно",
+			"WEIGHT_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Вес должен быть больше или равно",
+			"ANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Объявить об периодичности должно быть больше или равно",
+			"MINANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Мин объявить о периодичности должно быть больше или равно",
+			"PERIODICANNOUNCEFREQUENCY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Периодические объявить о периодичности должно быть больше или равно",
+			"AFTERCALLWORKDURATION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "После вызова, продолжительность работы должно быть больше или равно",
+			"MEMBERDELAY_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Государства-задержки должно быть больше или равно",
+			"POSITION_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Положение должно быть больше или равно",
+			"CUTDIGITS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Разрез цифры должны быть больше или равно",
+			"MAXSECONDS_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max секунд должно быть больше или равно",
+			"MAXMESSAGES_MUST_BE_GREATER_THAN_OR_EQUAL_TO": "Max сообщений должно быть больше или равно",
+			"MAXMESSAGES_MUST_BE_LESS_THAN_OR_EQUAL_TO": "Max сообщений должно быть меньше или равно",
+			"CALLERIDALL_MUST_VALID_PATTERN": "Неправильный формат",
 			"OUTBOUNDROUTE_REQUIRED": "Обязательное поле",
 			"VARIABLE_REQUIRED": "Обязательное поле",
-			"CALLER_ID_MUST_VALID_PATTERN": "Неверный формат",
+			"CALLER_ID_MUST_VALID_PATTERN": "Неправильный формат",
 			"TRUNK_REQUIRED": "Обязательное поле",
 			"MANDATORYDISPOSITIONPAUSEID_REQUIRED": "Обязательное поле",
 			"PROJECT_REQUIRED": "Обязательное поле"
 		},
-		"GENERAL": "Общие",
-		"TIMEOUT": "Тайм-аут",
+		"GENERAL": "Генеральной",
+		"TIMEOUT": "Превышение лимита времени",
 		"MAXLENGTH": "Максимальная длина",
-		"RETRY": "Повторная попытка",
-		"WRAPUPTIME": "Время обработки завершенного звонка",
+		"RETRY": "Повторите попытку",
+		"WRAPUPTIME": "Время подготовки сводки",
 		"WEIGHT": "Вес",
-		"JOINWHENEMPTY": "Добавление абонентов в очередь без агентов",
-		"LEAVEWHENEMPTY": "Удаление абонентов из очереди без агентов",
+		"JOINWHENEMPTY": "Присоединиться к при пустом",
+		"LEAVEWHENEMPTY": "Оставьте при пустом",
 		"HELP": {
-			"TIMEOUT": "Сколько секунд требуется, чтобы совершить вызов (устройство)",
-			"MAXLENGTH": "Максимальное количество абонентов, которым разрешается ждать в очереди: ноль означает отсутствие ограничений",
-			"RETRY": "Время ожидания в секундах до вызова следующего агента в очереди по истечении тайм-аута",
-			"WRAPUPTIME": "Время в секундах, в течение которого участник очереди остается недоступным после обработки вызова",
-			"WEIGHT": "Вес очереди для определения приоритета, если участники ассоциируются с несколькими очередями",
-			"JOINWHENEMPTY": "Используется для контроля за тем, поставлен ли в очередь вызывающий абонент, если доступных участников нет",
-			"LEAVEWHENEMPTY": "Используется для контроля за тем, будут ли вызывающие абоненты выходить из очереди, если доступных участников для приема вызовов нет",
-			"ANNOUNCEFREQUENCY": "Как часто объявляется позиция вызывающего абонента и/или предполагаемое время ожидания в очереди (ноль для отключения)",
-			"MINANNOUNCEFREQUENCY": "Минимальная частота объявлений (полезная функция в случае, если позиция вызывающего абонента часто меняется)",
-			"PERIODICANNOUNCEFREQUENCY": "Частота периодических объявлений, предназначенных для вызывающего абонента",
-			"ANNOUNCEPOSITIONLIMIT": "Используется, если позиция объявления определяется как «ограничение» или «больше»",
-			"AFTERCALLWORKDURATION": "Длина паузы, запускаемая параметром постобработки вызова After Call Work",
-			"MEMBERDELAY": "Введение задержки перед подключением к очереди вызывающего абонента и агента",
-			"MUSICONHOLD": "Установка музыки для использования в определенной очереди",
-			"ANNOUNCETOAGENT": "Воспроизведение объявления для агента, отвечающего на вызов (как правило, для того, чтобы сообщить ему, из какой очереди вызывающий абонент)",
-			"RANDOMPERIODICANNOUNCE": "В случае значения «да» определенные периодические объявления будут воспроизводиться случайным образом",
-			"ANNOUNCEHOLDTIME": "Воспроизведение в течение предполагаемого времени ожидания вместе с периодическими объявлениями (Да/Нет/Один раз)",
-			"ANNOUNCECALLERPOSITION": "Используется для определения того, должна ли быть объявлена позиция в очереди вызывающего абонента: Нет = никогда; Да = всегда; Ограничение = исключительно при нахождении в пределах ограничения, определенного параметром announce-position-limit; Больше = исключительно при выходе за пределы значения, определенного параметром announce-position-limit",
-			"REPORTHOLDTIMEAGENT": "Позволяет сообщить время ожидания для вызывающего абонента агенту в очереди до подключения",
-			"PERIODICANNOUNCE": "Набор периодических объявлений для воспроизведения (в определенной последовательности)",
-			"HOLDTIMEANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «Время ожидания». Не определено = объявления нет",
-			"YOUARENEXTANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «Вы первый в очереди». Не определено = объявления нет",
-			"THEREAREANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «Имеются». Не определено = объявления нет",
-			"WAITINGCALLSANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «вызовы на ожидании». Не определено = объявления нет",
-			"ESTIMATEDHOLDTIMEANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «Расчетное время ожидания». Не определено = объявления нет",
-			"MINUTESANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «минуты». Не определено = объявления нет",
-			"MINUTEANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «минута». Не определено = объявления нет",
-			"SECONDSANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «секунды». Не определено = объявления нет",
-			"THANKYOUANNOUNCE": "Выбрать звук, определенный в разделе «Инструменты». По умолчанию = «Благодарим за терпение». Не определено = объявления нет",
-			"AFTERCALLWORK": "При включении агент будет поставлен на паузу после обработки вызова",
-			"AUTOPAUSE": "Включение/отключение автоматической паузы для агентов, которые не отвечают на вызов. При включении данного параметра агент оказывается на паузе во всех очередях, к которым он относится",
-			"RINGINUSE": "Для избежания/разрешения отправки вызовов участникам со статусом «Используется»",
-			"TIMEOUTRESTART": "В случае значения «да» тайм-аут для ответа агента сбрасывается, если от канала получены данные о статусе «ЛИНИЯ ЗАНЯТА» (BUSY) или «КАНАЛ ПЕРЕГРУЖЕН» (CONGESTION)",
-			"MONITORFORMAT": "Определяет формат файла для использования при записи. Если соответствующий формат монитора неактивен, запись вызовов осуществляться не будет",
-			"CONTEXT": "Позволяет вызывающему абоненту выйти из очереди, нажав одну цифру DTMF. Если контекст задан и вызывающий абонент вводит цифру, то эта цифра попытается быть сопоставленной в указанном контексте, и выполнение диалплана продолжится там",
-			"SETINTERFACEVARIABLES": "Если установлено значение «да», то непосредственно перед подключением вызывающего абонента к агенту очереди будут установлены некоторые переменные (дополнительную информацию см. вики-документацию)",
-			"SETQUEUEVARIABLES": "Если установлено значение «да», то непосредственно перед тем, как вызывающий абонент будет подключен к агенту очереди и покинет очередь, будут установлены некоторые переменные (для получения дополнительной информации см. вики-документацию)",
-			"SETQUEUEENTRYVARIABLES": "Если установлено значение «да», то непосредственно перед подключением вызывающего абонента к агенту очереди будут установлены некоторые переменные (дополнительную информацию см. вики-документацию)",
-			"RECORDING": "Включить запись звонка",
-			"VOICEMAIL_CONTEXT": "Контекст относительного расширения",
-			"NAME": "Поддерживаются только цифры, буквы и специальные символы (._)",
-			"CALLERIDALL": "Поддерживаемый формат: «CallerId» &lt;номер>",
-			"CALLER_ID": "Поддерживаемый формат: «CallerId» &lt;номер>",
-			"MANDATORYDISPOSITIONPAUSEID": "Статус: пауза для установки во время обязательной диспозиции"
+			"TIMEOUT": "Указывает число секунд в кольцо на устройстве.",
+			"MAXLENGTH": "Указывает максимальное число разрешенных абонентов будет в состоянии ожидания в очереди. Нулевое значение означает неограниченное количество абонентов не допускаются в очереди.",
+			"RETRY": "Указывает количество секунд ожидания перед следующей члена в очереди, если значение тайм-аута не иссякнет при попытке кольцо членом очереди.",
+			"WRAPUPTIME": "Количество секунд для поддержания члена недоступна в очереди после завершения вызова.",
+			"WEIGHT": "Определяет вес очереди. Очереди с более высокий вес определяется получите первый приоритет когда члены связаны с несколькими очередями.",
+			"JOINWHENEMPTY": "Управляет ли вызывающий абонент будет добавлен в очередь при отсутствии членов доступны.",
+			"LEAVEWHENEMPTY": "Используется для управления ли абоненты ногами из очереди когда члены больше не доступен для вызовов.",
+			"ANNOUNCEFREQUENCY": "Определяет, как часто мы должны объявить о вызывающем абоненте, положение и/или время удержания в очереди. Задать это значение на ноль, чтобы отключить.",
+			"MINANNOUNCEFREQUENCY": "Указывает минимальное количество времени, которое должно пройти перед тем мы объявляем о абонента в позицию в очереди еще раз. Это значение используется при абонента в положение может меняться очень часто, чтобы предотвратить слушания вызывающего абонента несколько обновлений в короткий период времени.",
+			"PERIODICANNOUNCEFREQUENCY": "Показывает, как часто мы должны сделать периодические объявления для абонента.",
+			"ANNOUNCEPOSITIONLIMIT": "Если вы определены объявить положение либо как ограничение или более.",
+			"AFTERCALLWORKDURATION": "Длительность паузы включается работа после вызова параметр",
+			"MEMBERDELAY": "Если вы хотите быть задержка до вызывающего абонента и очереди членом соединены друг с другом.",
+			"MUSICONHOLD": "Устанавливает музыки класса для использования в конкретной очереди.",
+			"ANNOUNCETOAGENT": "Используется для воспроизведения объявление на оператора, ответил на вызов, обычно ему знать, какие очереди вызывающего абонента.",
+			"RANDOMPERIODICANNOUNCE": "Если установлено значение Да, будет играть определенных периодических объявлений о вакансиях в произвольном порядке.",
+			"ANNOUNCEHOLDTIME": "Определяет по оценкам времени удержания должен воспроизводиться вместе с периодических объявлений.",
+			"ANNOUNCECALLERPOSITION": "Определяет номер вызывающего абонента в очереди должно быть объявлено на нее. Если установлено значение Нет, положение никогда не будет объявлено дополнительно. Если установлено значение Да, абонента в положении всегда будет объявлено дополнительно. Если для этого параметра установлено значение предела, абонент услышит ее положение в очереди только если он находится в пределах заданного предела, объявить-position-предел. Если значение установлено на более абонент услышит ее положение, если она выходит за рамки номер определяется объявить-position-предел.",
+			"REPORTHOLDTIMEAGENT": "Позволяет создавать отчеты о абонента в время удержания в очередь член до моста.",
+			"PERIODICANNOUNCE": "Набор периодических объявлений, воспроизводятся в том порядке они определены.",
+			"HOLDTIMEANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Время удержания\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"YOUARENEXTANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Теперь Вы сначала в линии\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"THEREAREANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Есть\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"WAITINGCALLSANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Вызовов ожидающих\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"ESTIMATEDHOLDTIMEANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Оценка текущего времени удержания\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"MINUTESANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Минуты\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"MINUTEANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Минуты\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"SECONDSANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"секунд\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"THANKYOUANNOUNCE": "Если не определено, будет играть значение по умолчанию (\"Благодарим вас за ваше терпение\"). Если установлено на пустое значение, запрос не будет воспроизводиться на всех.",
+			"AFTERCALLWORK": "Если активно, оператор будет установлен на паузу после полного завершения вызова в очередь",
+			"AUTOPAUSE": "Включение/отключение автоматического приостановки члены Совета, которые не ответить на вызов. Если активно причины этого члена на паузу во всех очередях он является членом.",
+			"RINGINUSE": "Используется для предотвращения отправки вызовов для членов, состояние которого находится в использовании.",
+			"TIMEOUTRESTART": "Если установлено значение Да, Сброс тайм-аут для ответа оператора либо занят или состояние перегрузки будет получено от канала.",
+			"MONITORFORMAT": "Указывает формат файла для использования при записи. Если монитор формата неактивно, вызовы не будут записаны.",
+			"CONTEXT": "Позволяет вызывающему абоненту для выхода из очереди нажатием одной цифры DTMF. Если контекст не указан и абонент вводит номер, цифра будет пытаться быть подобраны в контексте указанного и команду display dialplan analysis исполнения будет и впредь.",
+			"SETINTERFACEVARIABLES": "Если установлено значение Да, просто до абонента, параллельной линии с очередью членов некоторых переменных будет set(см. wiki)",
+			"SETQUEUEVARIABLES": "Если установлено значение Да, просто до абонента, параллельной линии с очередью член и непосредственно до абонента оставив очереди некоторых переменных будет set(см. wiki)",
+			"SETQUEUEENTRYVARIABLES": "Если установлено значение Да, просто до абонента, параллельной линии с очередью членов некоторых переменных будет set(см. wiki)",
+			"RECORDING": "Включение записи вызова",
+			"VOICEMAIL_CONTEXT": "В контексте относительного добавочный номер.",
+			"NAME": "Только цифры, буквы и специальные символы (_) поддерживаются",
+			"CALLERIDALL": "Поддерживаемый формат: «CallerId» & lt; number & gt;",
+			"CALLER_ID": "Поддерживаемый формат: \"CallerId\" & lt; number & gt;",
+			"MANDATORYDISPOSITIONPAUSEID": "Статус паузы, чтобы установить во время обязательного распоряжения",
+			"SERVICELEVEL": "Вторые настройки уровня обслуживания (по умолчанию = 0, без SL). Используется для статистики уровня обслуживания (вызовы, отвеченные в течение периода времени уровня обслуживания)"
 		},
 		"MUSICONHOLD": "Музыка на удержании",
-		"ANNOUNCETOAGENT": "Объявить агенту",
+		"ANNOUNCETOAGENT": "Сообщить оператору",
 		"ANNOUNCEMENTS": "Объявления",
-		"ADVANCED": "Продвинутый",
-		"ANNOUNCEFREQUENCY": "Частота объявлений",
-		"MINANNOUNCEFREQUENCY": "Минимальная частота объявлений",
-		"PERIODICANNOUNCEFREQUENCY": "Периодическая частота объявлений",
-		"RANDOMPERIODICANNOUNCE": "Случайная частота объявлений",
-		"ANNOUNCEHOLDTIME": "Время ожидания в объявлении",
-		"ANNOUNCECALLERPOSITION": "Объявить позицию вызывающего абонента",
-		"ANNOUNCEPOSITIONLIMIT": "Объявить ограничение позиций",
-		"REPORTHOLDTIMEAGENT": "Сообщить агенту о времени ожидания",
-		"PERIODICANNOUNCE": "Периодические объявления",
-		"HOLDTIMEANNOUNCE": "Объявления о времени ожидания",
-		"YOUARENEXTANNOUNCE": "Объявления «Вы следующий»",
-		"THEREAREANNOUNCE": "Объявления «Имеются»",
-		"WAITINGCALLSANNOUNCE": "Объявления о вызовах в режиме ожидания",
-		"ESTIMATEDHOLDTIMEANNOUNCE": "Объявления о расчетном времени ожидания",
-		"MINUTESANNOUNCE": "Объявления о минутах",
-		"MINUTEANNOUNCE": "Объявления о минуте",
-		"SECONDSANNOUNCE": "Объявления о секундах",
-		"THANKYOUANNOUNCE": "Объявления «Благодарим»",
-		"AUTOPAUSE": "Автоматическая постановка на паузу",
-		"AFTERCALLWORK": "After Call Work",
-		"AFTERCALLWORKDURATION": "Продолжительность: параметр After Call Work",
-		"RINGINUSE": "Вызов используется",
-		"MEMBERDELAY": "Задержка до того, как участник соединится с вызывающим абонентом",
-		"TIMEOUTRESTART": "Время повторного вызова агента, который не принял звонок из очереди",
+		"ADVANCED": "Расширенные возможности",
+		"ANNOUNCEFREQUENCY": "Объявить о частоте",
+		"MINANNOUNCEFREQUENCY": "Объявить о минимальной частоты",
+		"PERIODICANNOUNCEFREQUENCY": "Периодические объявить о частоте",
+		"RANDOMPERIODICANNOUNCE": "Случайные периодические объявить о",
+		"ANNOUNCEHOLDTIME": "Объявить о времени удержания",
+		"ANNOUNCECALLERPOSITION": "Объявить о положении вызывающего абонента",
+		"ANNOUNCEPOSITIONLIMIT": "Объявить предельное положение",
+		"REPORTHOLDTIMEAGENT": "Доклад оператор время удержания",
+		"PERIODICANNOUNCE": "Периодические объявить о",
+		"HOLDTIMEANNOUNCE": "Время удержания объявить о",
+		"YOUARENEXTANNOUNCE": "\"Вы далее' объявить о",
+		"THEREAREANNOUNCE": "'Есть' объявить о",
+		"WAITINGCALLSANNOUNCE": "Ожидающих вызовов объявить о",
+		"ESTIMATEDHOLDTIMEANNOUNCE": "По оценкам времени удержания объявить о",
+		"MINUTESANNOUNCE": "Минут объявить о",
+		"MINUTEANNOUNCE": "Минуту объявить о",
+		"SECONDSANNOUNCE": "Секунд объявить о",
+		"THANKYOUANNOUNCE": "\"Спасибо\" объявить о",
+		"AUTOPAUSE": "Автоматическая пауза",
+		"AFTERCALLWORK": "Работа после вызова",
+		"AFTERCALLWORKDURATION": "Работа после вызова продолжительность",
+		"RINGINUSE": "Кольцо в использовании",
+		"MEMBERDELAY": "Член временной задержки",
+		"TIMEOUTRESTART": "Тайм-аут перезапуска",
 		"MONITORFORMAT": "Формат записи",
-		"SETINTERFACEVARIABLES": "Задать переменные интерфейса",
-		"SETQUEUEVARIABLES": "Задать переменные очереди",
-		"SETQUEUEENTRYVARIABLES": "Задать переменные записи в очереди",
+		"SETINTERFACEVARIABLES": "Установите интерфейс переменных",
+		"SETQUEUEVARIABLES": "Задать очередь переменных",
+		"SETQUEUEENTRYVARIABLES": "Задать очередь запись переменных",
 		"VARIABLE": "Переменная",
-		"CONTEXT": "Контекст",
+		"CONTEXT": "Контексте",
 		"SAVE": "Сохранить",
 		"SETTINGS": "Настройки",
-		"INBOUNDROUTES": "Входящая маршрутизация",
+		"INBOUNDROUTES": "Входящие маршруты",
 		"PHONENUMBER": "Номер телефона",
-		"ADD_INBOUNDROUTE": "Добавить входящий маршрут",
-		"EDIT_INBOUNDROUTE": "Редактировать входящий маршрут",
-		"DELETE_INBOUNDROUTE": "Удалить входящий маршрут",
+		"ADD_INBOUNDROUTE": "Добавить маршрут входящих вызовов",
+		"EDIT_INBOUNDROUTE": "Редактировать маршрут входящих вызовов",
+		"DELETE_INBOUNDROUTE": "Удалить маршрут при обработке входящих вызовов",
 		"ACTIONS": "Действия",
-		"OUTBOUNDROUTES": "Исходящая маршрутизация",
-		"DESTINATIONPATTERN": "Шаблон назначения",
-		"ADD_OUTBOUNDROUTE": "Добавить исходящий маршрут",
-		"EDIT_OUTBOUNDROUTE": "Редактировать исходящий маршрут",
-		"DELETE_OUTBOUNDROUTE": "Удалить исходящий маршрут",
-		"CUTDIGITS": "Вырезать цифры",
+		"OUTBOUNDROUTES": "Маршруты исходящих вызовов",
+		"DESTINATIONPATTERN": "Схема назначения",
+		"ADD_OUTBOUNDROUTE": "Добавить маршрут исходящих вызовов",
+		"EDIT_OUTBOUNDROUTE": "Редактировать маршрут исходящих вызовов",
+		"DELETE_OUTBOUNDROUTE": "Удалить маршрут исходящих вызовов",
+		"CUTDIGITS": "Разрежьте цифр",
 		"RECORDING": "Запись",
 		"RECORDINGFORMAT": "Формат записи",
-		"INTERNALROUTES": "Внутренняя маршрутизация",
+		"INTERNALROUTES": "Внутренние маршруты",
 		"ADD_INTERNALROUTE": "Добавить внутренний маршрут",
-		"EDIT_INTERNALROUTE": "Редактировать внутренний маршрут",
-		"DELETE_INTERNALROUTE": "Удалить внутренний маршрут",
-		"CONTEXTS": "Контексты",
-		"ADD_CONTEXT": "Добавить контекст",
-		"EDIT_CONTEXT": "Редактировать контекст",
-		"DELETE_CONTEXT": "Удалить контекст",
-		"VOICEMAILS": "Голосовая почта",
+		"EDIT_INTERNALROUTE": "Редактирование внутренних маршрутов",
+		"DELETE_INTERNALROUTE": "Удалить внутреннего маршрута",
+		"CONTEXTS": "Контекстах",
+		"ADD_CONTEXT": "Добавить контексте",
+		"EDIT_CONTEXT": "Правка контекстное",
+		"DELETE_CONTEXT": "Удаление связи",
+		"VOICEMAILS": "Сообщения голосовой почты",
 		"ADD_VOICEMAIL": "Добавить голосовую почту",
-		"EDIT_VOICEMAIL": "Редактировать голосовую почту",
+		"EDIT_VOICEMAIL": "Редактировать сообщения голосовой почты",
 		"DELETE_VOICEMAIL": "Удалить голосовую почту",
-		"FULLNAME": "Полное имя",
-		"EMAIL": "Электронная почта",
+		"FULLNAME": "Полное Имя",
+		"EMAIL": "Адрес электронной почты",
 		"MAILBOX": "Почтовый ящик",
 		"PASSWORD": "Пароль",
-		"CONFIRM_PASSWORD": "Подтверждение пароля",
+		"CONFIRM_PASSWORD": "Подтвердите пароль",
 		"TIMEZONE": "Часовой пояс",
-		"ATTACH": "Прикрепить",
+		"ATTACH": "Прикрепите",
 		"ENVELOPE": "Конверт",
 		"DELETE": "Удалить",
-		"EMAILBODY": "Текст сообщения электронной почты",
-		"EMAILSUBJECT": "Тема письма",
-		"MAXSECONDS": "Макс. секунд",
-		"MAXMESSAGES": "Макс. сообщений",
+		"EMAILBODY": "Тело сообщения",
+		"EMAILSUBJECT": "Тема в сообщении электронной почты",
+		"MAXSECONDS": "Max секунд",
+		"MAXMESSAGES": "Max сообщений",
 		"MESSAGES": "Сообщения",
-		"SORT": "Сортировать",
-		"ADD_MUSICONHOLD": "Добавить музыку на удержании",
-		"MUSICONHOLDS": "Музыка на удержании",
-		"EDIT_MUSICONHOLD": "Редактировать музыку на удержании",
-		"DELETE_MUSICONHOLD": "Удалить музыку на удержании",
+		"SORT": "Порядок сортировки",
+		"ADD_MUSICONHOLD": "Добавление музыки на удержании",
+		"MUSICONHOLDS": "Разная музыка на удержании",
+		"EDIT_MUSICONHOLD": "Редактирование музыки на удержании",
+		"DELETE_MUSICONHOLD": "Удалить музыка на удержании",
 		"DIRECTORY": "Каталог",
-		"AUDIOFILES": "Аудиофайлы",
+		"AUDIOFILES": "Звуковые файлы",
 		"RECORDINGS": "Записи",
 		"CHANSPY": "ChanSpy",
 		"PREFIX": "Префикс",
-		"OPTIONS": "Опции",
+		"OPTIONS": "Варианты",
 		"AUTH": "Auth",
-		"ADD_CHANSPY": "Добавить модуль ChanSpy",
-		"EDIT_CHANSPY": "Редактировать модуль ChanSpy",
-		"DELETE_CHANSPY": "Удалить модуль ChanSpy",
-		"AGENTS": "Агенты",
+		"ADD_CHANSPY": "Добавить ChanSpy",
+		"EDIT_CHANSPY": "Редактировать ChanSpy",
+		"DELETE_CHANSPY": "Удалить ChanSpy",
+		"AGENTS": "Операторы",
 		"TELEPHONES": "Телефоны",
 		"QUEUES": "Очереди",
-		"QUEUE_CALLS": "Вызовы в очереди",
+		"QUEUE_CALLS": "Вызовы в очереди",
 		"QUEUE_PARAMETERS": "Параметры очереди",
-		"ABANDONED_CALLS": "Потерянные вызовы",
+		"ABANDONED_CALLS": "Отмененные вызовы",
 		"OUTBOUND_CALLS": "Исходящие вызовы",
-		"AGI": "Agi",
-		"DIAL": "Набор номера",
+		"AGI": "AGI",
+		"DIAL": "Диск набора команд",
 		"CALLYSQUARE": "CallySquare",
-		"INTERNALDIAL": "Набор внутреннего номера",
-		"EXTERNALDIAL": "Набор внешнего номера",
-		"RINGGROUP": "Группа вызовов",
+		"INTERNALDIAL": "Внутреннего набора",
+		"EXTERNALDIAL": "Внешний диск набора команд",
+		"RINGGROUP": "Кольцо группы",
 		"PLAYBACK": "Воспроизведение",
-		"QUEUE": "Очередь",
-		"SET": "Set",
+		"QUEUE": "Очереди",
+		"SET": "Установить",
 		"VOICEMAIL": "Голосовая почта",
-		"GOTO": "Перейти к",
-		"HANGUP": "Положить трубку",
-		"CUSTOM": "Дополняющая конфигурация Custom",
-		"PROJECT": "Проект Cally-Square",
-		"TECHNOLOGY/RESOURCE": "Технология/Ресурс",
+		"GOTO": "GoTo",
+		"HANGUP": "Отключение",
+		"CUSTOM": "Пользовательский",
+		"PROJECT": "Cally-Square проекта",
+		"TECHNOLOGY/RESOURCE": "Технологии и ресурсов",
 		"URL": "URL",
-		"EDIT_APP": "Редактировать приложение",
-		"EDIT_INTERVAL": "Редактировать интервал",
-		"DELETE_APP": "Удалить приложение",
-		"INTERVALS": "Интервалы",
+		"EDIT_APP": "Изменить приложение",
+		"EDIT_INTERVAL": "Изменить интервал",
+		"DELETE_APP": "Удалить приложения",
+		"INTERVALS": "Интервалы времени",
 		"USER": "Пользователь",
-		"TRUNK": "Транк",
-		"PHONE": "Телефон",
-		"AUDIO_FILES": "Аудиофайлы",
-		"ANNOUNCE_OVERRIDES": "Объявления: заменяющая конфигурация Override",
-		"MACRO": "Macro",
-		"GOSUB": "GoSub",
+		"TRUNK": "Сл",
+		"PHONE": "Номер телефона",
+		"AUDIO_FILES": "Звуковые файлы",
+		"ANNOUNCE_OVERRIDES": "Объявить переопределяет",
+		"MACRO": "Макрос",
+		"GOSUB": "For to",
 		"RULE": "Правило",
-		"POSITION": "Позиция",
+		"POSITION": "Положение",
 		"ANSWER": "Ответ",
 		"VALUE": "Значение",
-		"MAILBOX@CONTEXT": "Mailbox@Context",
-		"EXTENSION": "Расширение",
-		"PRIORITY": "Приоритет",
-		"HANGUP_CAUSE": "Причина отбоя вызова",
-		"OUTBOUNDDIAL": "Набор: исходящ.",
+		"MAILBOX@CONTEXT": "Фотогалерея@контексте",
+		"EXTENSION": "Добавочный номер",
+		"PRIORITY": "Первоочередное внимание",
+		"HANGUP_CAUSE": "Отключение причиной",
+		"OUTBOUNDDIAL": "Набор исходящих вызовов",
 		"CALLER_ID": "Идентификатор вызывающего абонента",
-		"NO_MESSAGE_AVAILABLE": "Сообщения отсутствуют",
-		"NO_SOUND_AVAILABLE": "Звуки отсутствуют",
-		"VOICERECORDINGS": "Голосовые записи",
-		"CHANSPIES": "ChanSpy",
-		"VOICE": "Голос",
-		"REALTIME": "Режим реального времени",
-		"ID": "Идентификатор",
-		"VOICEMAIL_CONTEXT": "Контекст",
-		"NO_MOHSOUND_AVAILABLE": "Музыка на удержании отсутствует",
+		"NO_MESSAGE_AVAILABLE": "Нет доступных сообщений",
+		"NO_SOUND_AVAILABLE": "Никаких звуков не доступно",
+		"VOICERECORDINGS": "Запись голоса",
+		"CHANSPIES": "Чан шпионы",
+		"VOICE": "Голосовой связи",
+		"REALTIME": "В режиме реального времени",
+		"ID": "Id",
+		"VOICEMAIL_CONTEXT": "Контексте",
+		"NO_MOHSOUND_AVAILABLE": "Нет музыки на удержании имеющихся",
 		"FILE": "Файл",
-		"ADD_MOHSOUND": "Добавить звуки музыки на удержании",
-		"DOWNLOAD_MOHSOUND": "Скачать звуки музыки на удержании",
-		"DELETE_MOHSOUND": "Удалить звуки музыки на удержании",
+		"ADD_MOHSOUND": "Добавление музыки в режиме удержания звука",
+		"DOWNLOAD_MOHSOUND": "Загрузка музыки на удержании звук",
+		"DELETE_MOHSOUND": "Удалить музыка в режиме удержания звука",
 		"UNIQUEID": "Уникальный идентификатор",
-		"AGENT": "Агент",
+		"AGENT": "Оператор",
 		"TYPE": "Тип",
 		"RATING": "Рейтинг",
 		"AUDIO": "Аудио",
 		"DATE": "Дата",
-		"NEW_VOICEQUEUE": "Новая очередь голосовой почты",
-		"NEW_INBOUNDROUTE": "Новый входящий маршрут",
-		"NEW_OUTBOUNDROUTE": "Новый исходящий маршрут",
-		"NEW_INTERNALROUTE": "Новый внутренний маршрут",
-		"NEW_CONTEXT": "Новый контекст",
-		"NEW_VOICEMAIL": "Новая голосовая почта",
+		"NEW_VOICEQUEUE": "Новые голосовые очереди",
+		"NEW_INBOUNDROUTE": "Новый маршрут входящих вызовов",
+		"NEW_OUTBOUNDROUTE": "Новый маршрут исходящих вызовов",
+		"NEW_INTERNALROUTE": "Новых внутренних маршрутов",
+		"NEW_CONTEXT": "Новом контексте",
+		"NEW_VOICEMAIL": "Новые сообщения голосовой почты",
 		"NEW_MUSICONHOLD": "Новая музыка на удержании",
-		"NEW_CHANSPY": "Новый модуль ChanSpy",
-		"PENALTY": "Параметр Penalty",
-		"ADD_TEAM_TO_VOICEQUEUE": "Добавить команду к очереди голосовой почты",
-		"ADD_AGENT_TO_VOICEQUEUE": "Добавить агента к очереди голосовой почты",
-		"EDIT_DIAL": "Редактировать набор",
-		"EDIT_AGI": "Редактировать AGI",
-		"EDIT_INTERNALDIAL": "Редактировать набор внутреннего номера",
-		"EDIT_EXTERNALDIAL": "Редактировать набор внешнего номера",
-		"EDIT_RINGGROUP": "Редактировать группу вызовов",
-		"EDIT_PLAYBACK": "Редактировать воспроизведение",
-		"EDIT_QUEUE": "Редактировать очередь",
-		"EDIT_SET": "Редактировать Set",
-		"EDIT_GOTO": "Редактировать Перейти к",
-		"EDIT_HANGUP": "Редактировать «Положить трубку»",
-		"EDIT_CUSTOM": "Редактировать Custom",
+		"NEW_CHANSPY": "Новые ChanSpy",
+		"PENALTY": "Смертная казнь",
+		"ADD_TEAM_TO_VOICEQUEUE": "Добавить группу в очереди голосовой связи",
+		"ADD_AGENT_TO_VOICEQUEUE": "Добавить оператора в очереди голосовой связи",
+		"EDIT_DIAL": "Редактирование набора",
+		"EDIT_AGI": "Редактировать AGI",
+		"EDIT_INTERNALDIAL": "Редактировать внутреннего набора",
+		"EDIT_EXTERNALDIAL": "Редактировать внешний диск набора команд",
+		"EDIT_RINGGROUP": "Редактировать кольцо группы",
+		"EDIT_PLAYBACK": "Воспроизведения в режиме редактирования",
+		"EDIT_QUEUE": "Редактирования очереди",
+		"EDIT_SET": "Редактирование набора",
+		"EDIT_GOTO": "Редактировать GoTo",
+		"EDIT_HANGUP": "Редактировать отключение",
+		"EDIT_CUSTOM": "Редактировать пользовательский",
 		"DURATION": "Продолжительность",
-		"RECEIVED_AT": "Получено в",
+		"RECEIVED_AT": "Полученные на",
 		"YES": "Да",
 		"NO": "Нет",
-		"HANGUPCAUSE_1": "1 = неназначенный номер",
-		"HANGUPCAUSE_16": "16 = нормальное завершение вызова",
-		"HANGUPCAUSE_17": "17 = вызываемый абонент не может принять вызов",
-		"HANGUPCAUSE_18": "18 = пользователь не отвечает (телефонное устройство не подключено)",
-		"HANGUPCAUSE_21": "21 = вызов отклонен",
-		"HANGUPCAUSE_22": "22 = номер изменился",
-		"HANGUPCAUSE_27": "27 = направление не обслуживается",
-		"HANGUPCAUSE_38": "38 = сетевое соединение функционирует некорректно",
-		"HANGUPCAUSE_41": "41 = временная неработоспособность сервиса",
-		"RANDOM": "Случайный",
-		"ALPHABETICAL": "По алфавиту",
-		"NO_APPS_AVAILABLE": "Доступные приложения отсутствуют",
-		"DOWNLOAD_VOICERECORDING": "Скачать голосовую запись",
-		"DELETE_VOICERECORDING": "Удалить голосовую запись",
-		"INTERNAL": "Внутренний",
+		"HANGUPCAUSE_1": "1 = номер нераспределенных",
+		"HANGUPCAUSE_16": "16 = Normail вызова",
+		"HANGUPCAUSE_17": "17 = пользователь занят",
+		"HANGUPCAUSE_18": "18 = пользователь не отвечает (Вашему телефону устройство не подключено)",
+		"HANGUPCAUSE_21": "На XXI век = Вызов отклонен",
+		"HANGUPCAUSE_22": "22 = Номер борозды изменился",
+		"HANGUPCAUSE_27": "27 = пункт назначения не по порядку",
+		"HANGUPCAUSE_38": "38 = сети",
+		"HANGUPCAUSE_41": "41 = Временный сбой",
+		"RANDOM": "Случайная",
+		"ALPHABETICAL": "В алфавитном порядке",
+		"NO_APPS_AVAILABLE": "Нет доступных приложений",
+		"DOWNLOAD_VOICERECORDING": "Загрузить запись голоса",
+		"DELETE_VOICERECORDING": "Удалить запись голоса",
+		"INTERNAL": "Внутренние",
 		"PHONE_STATE": "Состояние телефона",
-		"PHONE_STATUS": "Статус телефона",
-		"TRUNK_STATUS": "Статус транка",
-		"REGISTERED": "Зарегистрирован",
-		"UNREGISTERED": "Не зарегистрирован",
-		"LAGGED": "Лаг",
-		"REACHABLE": "Достижимые",
-		"UNREACHABLE": "Недостижимый",
-		"UNKNOWN": "Неизвестно",
-		"NOT_INUSE": "Не используется",
-		"INUSE": "Используется",
-		"BUSY": "Линия занята",
-		"INVALID": "Недействительный",
-		"UNAVAILABLE": "Отсутствует",
-		"RINGING": "Наличие тонального сигнала вызова",
+		"PHONE_STATUS": "Состояние телефона",
+		"TRUNK_STATUS": "Состояния СЛ",
+		"REGISTERED": "Зарегистрированные",
+		"UNREGISTERED": "Незарегистрированный",
+		"LAGGED": "Отстает",
+		"REACHABLE": "Доступен",
+		"UNREACHABLE": "Недоступен",
+		"UNKNOWN": "Неизвестный",
+		"NOT_INUSE": "Не используется",
+		"INUSE": "В ИСПОЛЬЗОВАНИИ",
+		"BUSY": "Занят",
+		"INVALID": "Неверный",
+		"UNAVAILABLE": "Недоступен",
+		"RINGING": "При звонке",
 		"ONHOLD": "На удержании",
-		"RING": "Вызов",
+		"RING": "Кольцо",
 		"UP": "Вверх",
-		"INFO": "Информация",
-		"TRUNKS": "Транки",
+		"INFO": "Info",
+		"TRUNKS": "Соединительные линии внешней АТС",
 		"REGISTRY": "Реестр",
-		"NO_REGISTRY": "Нет реестра",
-		"LOGGED_IN": "Зарегистрирован в системе (подключение к системе SIP)",
-		"PAUSED": "Поставлен на паузу",
+		"NO_REGISTRY": "Раздел реестра не",
+		"LOGGED_IN": "Вход в систему",
+		"PAUSED": "Приостановлено",
 		"WAITING": "Ожидание",
-		"TALKING": "Текущий вызов",
-		"DID": "DID",
+		"TALKING": "Разговор",
+		"DID": "Не",
 		"CALLER": "Вызывающий абонент",
-		"TOTAL": "Всего",
+		"TOTAL": "Итого",
 		"ANSWERED": "Отвеченные",
-		"ABANDONED": "Потерянные",
-		"UNMANAGED": "Необработанные",
-		"AVG_HOLD_TIME": "Среднее время на удержании",
-		"AVG_DURATION": "Средняя продолжительность",
-		"AVG_BILLABLE": "Средняя оплата",
+		"ABANDONED": "Отмененные",
+		"UNMANAGED": "Неуправляемые коммутаторы",
+		"AVG_HOLD_TIME": "Среднее время удержания",
+		"AVG_DURATION": "Продолжительность Av",
+		"AVG_BILLABLE": "Avg платными",
 		"SOURCE": "Источник",
 		"DESTINATION": "Пункт назначения",
-		"REJECTED": "Отклоненные",
-		"FAILED": "Неудачный вызов",
-		"CALLED": "Удачный вызов",
-		"CONNECTED": "Соединение установлено",
-		"NO_RATING": "Рейтинг отсутствует",
-		"EDIT_VOICERECORDING": "Редактировать голосовую запись",
+		"REJECTED": "Отклонено",
+		"FAILED": "Не удалось",
+		"CALLED": "Призвали к",
+		"CONNECTED": "Подключен к",
+		"NO_RATING": "Нет рейтинга",
+		"EDIT_VOICERECORDING": "Редактировать запись голоса",
 		"APPLICATION_NAME": "Имя приложения",
 		"ARGUMENTS": "Аргументы",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует",
-		"ADD_AGENT_TO_QUEUE": "Добавить агента к очереди",
-		"DEFAULT_PAUSE": "ПАУЗА ПО УМОЛЧАНИЮ",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"ADD_AGENT_TO_QUEUE": "Добавить оператора в очереди",
+		"DEFAULT_PAUSE": "По умолчанию пауза",
 		"PAUSE": "Пауза",
-		"UNPAUSE": "Конец паузы",
+		"UNPAUSE": "Возобновить",
 		"REDIRECT_TO_NUMBER": "Перенаправить на номер",
-		"REDIRECT_TO_AGENT": "Перенаправить на агента",
-		"AGENTADD_VOICEQUEUE": "Добавить агента к очереди голосовой почты",
+		"REDIRECT_TO_AGENT": "Перенаправить для оператора",
+		"AGENTADD_VOICEQUEUE": "Добавить оператора в очереди голосовой связи",
 		"APPLICATION": "Приложение",
 		"FILES": "Файлы",
 		"FORMAT": "Формат",
-		"MODE": "Режим",
+		"MODE": "Режим работы",
 		"RECORD": "Запись",
-		"TEAMADD_VOICEQUEUE": "Добавить команду к очереди голосовой почты",
-		"NEW_MOHSOUND": "Новые звуки музыки на удержании",
-		"DOWNLOAD_MESSAGE": "Скачать",
+		"TEAMADD_VOICEQUEUE": "Добавить группу voicequeue",
+		"NEW_MOHSOUND": "Новая музыка на удержании звук",
+		"DOWNLOAD_MESSAGE": "Загрузить",
 		"DELETE_MESSAGE": "Удалить",
 		"QUEUE_PARAMS": "Параметры очереди",
-		"TOTAL_OFFERED": "Всего предложенных",
-		"READY": "Готов",
-		"AGENTADD_QUEUE": "Добавить агента к очереди голосовой почты",
-		"AGENTSADD_QUEUE": "Добавить агентов к очереди голосовой почты",
-		"ALL_TEAMS": "Все команды",
-		"SELECTED_TEAMS": "Избранные команды",
-		"ALL_AGENTS": "Все агенты",
-		"SELECTED_AGENTS": "Выбранные агенты",
+		"TOTAL_OFFERED": "Общий объем предлагаемых",
+		"READY": "Готов к работе",
+		"AGENTADD_QUEUE": "Добавить оператора в очереди голосовой связи",
+		"AGENTSADD_QUEUE": "Добавление операторов в очереди голосовой связи",
+		"ALL_TEAMS": "Все группы",
+		"SELECTED_TEAMS": "Выбранные группы",
+		"ALL_AGENTS": "Все Операторы",
+		"SELECTED_AGENTS": "Выбранные операторы",
 		"CLOSING": "Закрытие",
-		"TAGS": "Теги",
-		"WAITING_FOR_AGENT": "Ожидание ответов агентов",
-		"EDIT_OUTBOUNDDIAL": "Редактировать набор: исходящ.",
+		"TAGS": "Теги индексов",
+		"WAITING_FOR_AGENT": "Ожидание для операторов",
+		"EDIT_OUTBOUNDDIAL": "Редактирование набора исходящих вызовов",
 		"ACCOUNTNAME": "Имя учетной записи",
 		"PAGE": "Страница",
 		"ROWSPERPAGE": "Строк на странице",
-		"OF": "из",
-		"DISPOSITION": "Диспозиция",
-		"WAITING_FOR_AGENTS": "Ожидание ответов агентов",
+		"OF": "В",
+		"DISPOSITION": "Отчуждения",
+		"WAITING_FOR_AGENTS": "Ожидание для операторов",
 		"CHAT": "Чат",
-		"MAIL": "Электронная почта",
+		"MAIL": "Почта",
 		"SMS": "SMS",
-		"OPENCHANNEL": "Открытый канал",
+		"OPENCHANNEL": "Открыть канал",
 		"FAX": "Факс",
-		"NO_AGENT_ONLINE": "Агент отсутствует онлайн",
-		"PARTIALPAUSE": "Частичная пауза",
+		"NO_AGENT_ONLINE": "Ни один оператор На Сайте",
+		"PARTIALPAUSE": "Частичная приостановка",
 		"STATUS": "Состояние",
 		"TIMER": "Таймер",
 		"ALL": "Все",
-		"IDLE": "Линия свободна",
-		"EDIT_TRUNK": "Редактировать транк",
-		"ACTIVE": "Активные",
+		"IDLE": "Обороты холостого хода",
+		"EDIT_TRUNK": "Редактировать сл",
+		"ACTIVE": "активный",
 		"CLEAR": "Очистить",
 		"CALLS": "Вызовы",
 		"STARTEDAT": "Начато в",
-		"ENDEDAT": "Завершено в",
+		"ENDEDAT": "Закончено на",
 		"TAG": "Тег",
-		"DETAILS": "Реквизиты",
-		"BILLABLESECONDS": "Оплата: секунды",
-		"ANSWEREDAT": "Отвечено в",
-		"NOTE": "Примечание",
+		"DETAILS": "Детали",
+		"BILLABLESECONDS": "Счетные секунды",
+		"ANSWEREDAT": "Отвечено на",
+		"NOTE": "Заметка",
 		"CLOSE": "Закрыть",
-		"SELECT_DATE": "Выбрать дату начала",
-		"SELECT_TYPE": "Выбрать тип",
-		"ABANDONEDCALLS": "Потерянные вызовы в очереди",
+		"SELECT_DATE": "Выберите Дата начала",
+		"SELECT_TYPE": "Выберите тип",
+		"ABANDONEDCALLS": "Заброшенные очереди вызовов",
 		"ADD_VOICEPREFIX": "Добавить префикс",
-		"AGENTADD_VOICEPREFIX": "Добавить агента к префиксу",
+		"AGENTADD_VOICEPREFIX": "Добавить агент в префикс",
 		"DELETE_VOICEPREFIX": "Удалить префикс",
-		"EDIT_VOICEPREFIX": "Редактировать префикс",
+		"EDIT_VOICEPREFIX": "Изменить префикс",
 		"NEW_VOICEPREFIX": "Новый префикс",
-		"VOICEPREFIXES": "Префиксы: Out",
-		"CALLERIDALL": "Идентификатор вызывающего абонента",
+		"VOICEPREFIXES": "Исходные префиксы",
+		"CALLERIDALL": "Идентификатор абонента",
 		"OUTBOUNDROUTE": "Исходящий маршрут",
-		"LOGIN_TIME": "Время входа в систему",
+		"LOGIN_TIME": "Время входа",
 		"PAUSE_TIME": "Время паузы",
-		"DIALER": "Система обзвона",
-		"INBOUND": "Входящие",
-		"OUTBOUND": "Исходящие",
-		"MANDATORYDISPOSITION": "Обязательная диспозиция",
-		"MANDATORYDISPOSITIONPAUSEID": "Обязательная диспозиция: статус паузы",
+		"DIALER": "Dialer",
+		"INBOUND": "прибывающий",
+		"OUTBOUND": "Исходящий",
+		"MANDATORYDISPOSITION": "Обязательное распоряжение",
+		"MANDATORYDISPOSITIONPAUSEID": "Обязательный статус паузы",
 		"TEAMS_ASSOCIATION": "Ассоциация команд",
-		"CANT_DOWNLOAD_THIS_FILE": "Не могу скачать этот файл",
-		"FILE_NOT_FOUND": "Файл не найден",
-		"SCREENRECORDING": "Управление записью с экрана",
-		"START_SCREENRECORDING": "Воспроизвести запись с экрана",
-		"STOP_SCREENRECORDING": "Остановить запись с экрана",
-		"TOOLTIP_SCREENRECORDING_OFF": "Доступна запись с экрана",
-		"TOOLTIP_SCREENRECORDING_ON": "Идет запись с экрана",
-		"WRONG_EXTENSION": "Неправильное расширение имени файла"
+		"CANT_DOWNLOAD_THIS_FILE": "Не могу скачать этот файл",
+		"FILE_NOT_FOUND": "Файл не найден",
+		"SCREENRECORDING": "Управление записью экрана",
+		"START_SCREENRECORDING": "Начать запись экрана",
+		"STOP_SCREENRECORDING": "Остановить запись экрана",
+		"TOOLTIP_SCREENRECORDING_OFF": "Запись экрана доступна",
+		"TOOLTIP_SCREENRECORDING_ON": "Идет запись экрана",
+		"WRONG_EXTENSION": "Файл представляет неправильное расширение",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Скачать стенограмму",
+		"FAILUREREASON": "Причина отказа",
+		"RUNSENTIMENT_VOICERECORDING": "Выполнить настрой",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Запустить расшифровку и настройку",
+		"RUNTRANSCRIBE_VOICERECORDING": "Запустить расшифровку",
+		"SENTIMENT": "сентиментальность",
+		"SENTIMENTANALYSIS": "Анализ настроений",
+		"SENTIMENT_MIXED": "смешанный",
+		"SENTIMENT_NEGATIVE": "отрицательный",
+		"SENTIMENT_NEUTRAL": "нейтральный",
+		"SENTIMENT_POSITIVE": "положительный",
+		"TEXT": "Текст",
+		"TRANSCRIBE": "Расшифруйте",
+		"TRANSCRIBESTATUS_COMPLETED": "Завершенный",
+		"TRANSCRIBESTATUS_FAILED": "Не смогли",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "В ходе выполнения",
+		"TRANSCRIBESTATUS_NEW": "новый",
+		"TRANSCRIPT": "расшифровка",
+		"TRANSCRIPTANALYSIS": "Расшифровка и анализ",
+		"SERVICELEVEL": "Уровень обслуживания"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/sv.json b/public/app/main/apps/voice/i18n/sv.json
index 73ea7df..21a2010 100644
--- a/public/app/main/apps/voice/i18n/sv.json
+++ b/public/app/main/apps/voice/i18n/sv.json
@@ -123,7 +123,8 @@
 			"NAME": "Endast siffror, bokstäver och särskilda tecken (._) stöds",
 			"CALLERIDALL": "Stödformat: \"CallerId\" & lt; number & gt;",
 			"CALLER_ID": "Stödformat: \"CallerId\" & lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Pausstatus som ska vara aktiv under obligatorisk kategorisering"
+			"MANDATORYDISPOSITIONPAUSEID": "Pausstatus som ska vara aktiv under obligatorisk kategorisering",
+			"SERVICELEVEL": "Andra inställningar för servicenivå (standard = 0, ingen SL). Används för statistik på servicenivå (samtal besvaras inom tidsramen för servicenivå)"
 		},
 		"MUSICONHOLD": "Musik i vänteläge",
 		"ANNOUNCETOAGENT": "Meddela till agent",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Stop Screen Inspelning",
 		"TOOLTIP_SCREENRECORDING_OFF": "Skärminspelning tillgänglig",
 		"TOOLTIP_SCREENRECORDING_ON": "Skärminspelning pågår",
-		"WRONG_EXTENSION": "Filen visar fel förlängning"
+		"WRONG_EXTENSION": "Filen visar fel förlängning",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Ladda ner transkript",
+		"FAILUREREASON": "Felaktig anledning",
+		"RUNSENTIMENT_VOICERECORDING": "Kör sentiment",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Kör Transkriber & Sentiment",
+		"RUNTRANSCRIBE_VOICERECORDING": "Kör transkribera",
+		"SENTIMENT": "Känsla",
+		"SENTIMENTANALYSIS": "Sentimentanalys",
+		"SENTIMENT_MIXED": "Blandad",
+		"SENTIMENT_NEGATIVE": "Negativ",
+		"SENTIMENT_NEUTRAL": "Neutral",
+		"SENTIMENT_POSITIVE": "Positiv",
+		"TEXT": "Text",
+		"TRANSCRIBE": "Transkribera",
+		"TRANSCRIBESTATUS_COMPLETED": "Avslutad",
+		"TRANSCRIBESTATUS_FAILED": "misslyckades",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "Pågående",
+		"TRANSCRIBESTATUS_NEW": "Ny",
+		"TRANSCRIPT": "Transkript",
+		"TRANSCRIPTANALYSIS": "Transkript & analys",
+		"SERVICELEVEL": "Servicenivå"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/tr.json b/public/app/main/apps/voice/i18n/tr.json
index e42496c..010c966 100644
--- a/public/app/main/apps/voice/i18n/tr.json
+++ b/public/app/main/apps/voice/i18n/tr.json
@@ -123,7 +123,8 @@
 			"NAME": "Sadece sayılar, harfler ve özel karakterler (._) desteklenir.",
 			"CALLERIDALL": "Desteklenen biçim: \"CallerId\" & lt; number & gt;",
 			"CALLER_ID": "Desteklenen biçim: \"CallerId\" & lt; number & gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "Zorunlu kullanım sırasında ayarlamak için durumu duraklat"
+			"MANDATORYDISPOSITIONPAUSEID": "Zorunlu kullanım sırasında ayarlamak için durumu duraklat",
+			"SERVICELEVEL": "Servis seviyesi için ikinci ayarlar (varsayılan = 0, SL yok). Servis seviyesi istatistikleri için kullanılır (servis seviyesi zaman çerçevesi içinde cevaplanan aramalar)"
 		},
 		"MUSICONHOLD": "Bekletme Müziği",
 		"ANNOUNCETOAGENT": "Duyurmak Agent",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "Ekran Kaydı Durdur",
 		"TOOLTIP_SCREENRECORDING_OFF": "Ekran kaydı",
 		"TOOLTIP_SCREENRECORDING_ON": "Ekran Kaydı devam ediyor",
-		"WRONG_EXTENSION": "Dosya yanlış uzantıyı sunuyor"
+		"WRONG_EXTENSION": "Dosya yanlış uzantıyı sunuyor",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "Transkripti İndir",
+		"FAILUREREASON": "Başarısızlık nedeni",
+		"RUNSENTIMENT_VOICERECORDING": "Duyarlılığı Çalıştırın",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "Metne Dönüştürme ve Duyguları Çalıştırın",
+		"RUNTRANSCRIBE_VOICERECORDING": "Metni Çalıştır",
+		"SENTIMENT": "Duygusallık",
+		"SENTIMENTANALYSIS": "Duygu Analizi",
+		"SENTIMENT_MIXED": "Karışık",
+		"SENTIMENT_NEGATIVE": "Olumsuz",
+		"SENTIMENT_NEUTRAL": "nötr",
+		"SENTIMENT_POSITIVE": "Pozitif",
+		"TEXT": "Metin",
+		"TRANSCRIBE": "Uyarlamak",
+		"TRANSCRIBESTATUS_COMPLETED": "Tamamlandı",
+		"TRANSCRIBESTATUS_FAILED": "Başarısız oldu",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "Devam etmekte",
+		"TRANSCRIBESTATUS_NEW": "Yeni",
+		"TRANSCRIPT": "Transcript",
+		"TRANSCRIPTANALYSIS": "Transkript ve Analiz",
+		"SERVICELEVEL": "Servis seviyesi"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/zh-CN.json b/public/app/main/apps/voice/i18n/zh-CN.json
index 59352fc..b241603 100644
--- a/public/app/main/apps/voice/i18n/zh-CN.json
+++ b/public/app/main/apps/voice/i18n/zh-CN.json
@@ -123,7 +123,8 @@
 			"NAME": "只有数字、字母和特殊字符(_)的支持",
 			"CALLERIDALL": "支持的格式：“CallerId”＆lt; number＆gt;",
 			"CALLER_ID": "支持的格式：“CallerId”＆lt; number＆gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "暂停在强制处置期间设置的状态"
+			"MANDATORYDISPOSITIONPAUSEID": "暂停在强制处置期间设置的状态",
+			"SERVICELEVEL": "服务级别的第二个设置（默认= 0，无SL）。用于服务水平统计（在服务水平时间范围内应答的呼叫）"
 		},
 		"MUSICONHOLD": "音乐保留",
 		"ANNOUNCETOAGENT": "宣布到座席",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "停止画面录制",
 		"TOOLTIP_SCREENRECORDING_OFF": "屏幕录像可用",
 		"TOOLTIP_SCREENRECORDING_ON": "屏幕录像正在进行中",
-		"WRONG_EXTENSION": "该文件显示错误的扩展名"
+		"WRONG_EXTENSION": "该文件显示错误的扩展名",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "下载成绩单",
+		"FAILUREREASON": "失败原因",
+		"RUNSENTIMENT_VOICERECORDING": "运行情绪",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "运行转录和情感",
+		"RUNTRANSCRIBE_VOICERECORDING": "运行转录",
+		"SENTIMENT": "情绪",
+		"SENTIMENTANALYSIS": "情绪分析",
+		"SENTIMENT_MIXED": "混合的",
+		"SENTIMENT_NEGATIVE": "负",
+		"SENTIMENT_NEUTRAL": "中性",
+		"SENTIMENT_POSITIVE": "正",
+		"TEXT": "文本",
+		"TRANSCRIBE": "录制",
+		"TRANSCRIBESTATUS_COMPLETED": "已完成",
+		"TRANSCRIBESTATUS_FAILED": "失败的",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "进行中",
+		"TRANSCRIBESTATUS_NEW": "新",
+		"TRANSCRIPT": "成绩单",
+		"TRANSCRIPTANALYSIS": "成绩单和分析",
+		"SERVICELEVEL": "服务等级"
 	}
 }
\ No newline at end of file
diff --git a/public/app/main/apps/voice/i18n/zh-TW.json b/public/app/main/apps/voice/i18n/zh-TW.json
index a728654..1d37106 100644
--- a/public/app/main/apps/voice/i18n/zh-TW.json
+++ b/public/app/main/apps/voice/i18n/zh-TW.json
@@ -123,7 +123,8 @@
 			"NAME": "只有數字、字母和特殊字元 ( _ ) 都受到支援",
 			"CALLERIDALL": "支持的格式：“CallerId”＆lt; number＆gt;",
 			"CALLER_ID": "支持的格式：“CallerId”＆lt; number＆gt;",
-			"MANDATORYDISPOSITIONPAUSEID": "暫停在強制處置期間設置的狀態"
+			"MANDATORYDISPOSITIONPAUSEID": "暫停在強制處置期間設置的狀態",
+			"SERVICELEVEL": "服務級別的第二設置（默認= 0，無SL）。用於服務水平統計（在服務水平時間範圍內應答的呼叫）"
 		},
 		"MUSICONHOLD": "音樂保留通話",
 		"ANNOUNCETOAGENT": "發佈至值機員",
@@ -450,6 +451,26 @@
 		"STOP_SCREENRECORDING": "停止畫面錄製",
 		"TOOLTIP_SCREENRECORDING_OFF": "屏幕錄像可用",
 		"TOOLTIP_SCREENRECORDING_ON": "屏幕錄像正在進行中",
-		"WRONG_EXTENSION": "該文件顯示錯誤的擴展名"
+		"WRONG_EXTENSION": "該文件顯示錯誤的擴展名",
+		"DOWNLOADTRANSCRIBE_VOICERECORDING": "下載成績單",
+		"FAILUREREASON": "失敗原因",
+		"RUNSENTIMENT_VOICERECORDING": "運行情緒",
+		"RUNTRANSCRIBESENTIMENT_VOICERECORDING": "運行轉錄和情感",
+		"RUNTRANSCRIBE_VOICERECORDING": "運行轉錄",
+		"SENTIMENT": "情緒",
+		"SENTIMENTANALYSIS": "情緒分析",
+		"SENTIMENT_MIXED": "混合的",
+		"SENTIMENT_NEGATIVE": "負",
+		"SENTIMENT_NEUTRAL": "中性",
+		"SENTIMENT_POSITIVE": "正",
+		"TEXT": "文本",
+		"TRANSCRIBE": "錄製",
+		"TRANSCRIBESTATUS_COMPLETED": "已完成",
+		"TRANSCRIBESTATUS_FAILED": "失敗的",
+		"TRANSCRIBESTATUS_IN_PROGRESS": "進行中",
+		"TRANSCRIBESTATUS_NEW": "新",
+		"TRANSCRIPT": "成績單",
+		"TRANSCRIPTANALYSIS": "成績單和分析",
+		"SERVICELEVEL": "服務等級"
 	}
 }
\ No newline at end of file
diff --git a/public/app/quick-panel/i18n/ru.json b/public/app/quick-panel/i18n/ru.json
index fe20b87..fb098b8 100644
--- a/public/app/quick-panel/i18n/ru.json
+++ b/public/app/quick-panel/i18n/ru.json
@@ -1,73 +1,73 @@
 {
 	"QUICKPANEL": {
-		"TODAY": "СЕГОДНЯ",
+		"TODAY": "Сегодня",
 		"MONDAY": "Понедельник",
-		"TUESDAY": "Вторник",
-		"WEDNESDAY": "Среда",
+		"TUESDAY": "Во вторник",
+		"WEDNESDAY": "Среду",
 		"THURSDAY": "Четверг",
 		"FRIDAY": "Пятница",
 		"SATURDAY": "Суббота",
 		"SUNDAY": "Воскресенье",
 		"JANUARY": "Январь",
-		"FEBRUARY": "Февраль",
-		"MARCH": "Март",
-		"APRIL": "Апрель",
-		"MAY": "Май",
+		"FEBRUARY": "Февраля",
+		"MARCH": "Марта",
+		"APRIL": "Апреля",
+		"MAY": "Мая",
 		"JUNE": "Июнь",
-		"JULY": "Июль",
-		"AUGUST": "Август",
+		"JULY": "Июля",
+		"AUGUST": "Августа",
 		"SEPTEMBER": "Сентябрь",
-		"OCTOBER": "Октябрь",
+		"OCTOBER": "Октября",
 		"NOVEMBER": "Ноябрь",
 		"DECEMBER": "Декабрь",
-		"CHAT": "ЧАТ",
-		"ACTIVITY": "ДЕЙСТВИЯ",
+		"CHAT": "Чат",
+		"ACTIVITY": "Вид деятельности",
 		"FRIENDS": "Друзья",
 		"APP_SERVERS": "Серверы приложений",
-		"USER_STATS": "Статистика пользователей",
+		"USER_STATS": "Статистика пользователя",
 		"EVENTS": "События",
 		"NOTES": "Примечания",
 		"QUICK_SETTINGS": "Быстрые настройки",
 		"NOTIFICATIONS": "Уведомления",
-		"CLOUD_SYNC": "Облачная синхронизация",
-		"RETRO_THRUSTERS": "Ретро-двигатели",
-		"RECENT": "Последний",
-		"START_NEW_CHAT": "Начать новый чат",
+		"CLOUD_SYNC": "Cloud Sync",
+		"RETRO_THRUSTERS": "Ретро ускорители",
+		"RECENT": "В последнее время",
+		"START_NEW_CHAT": "Начать новый сеанс чата",
 		"BACK": "Назад",
 		"CALL": "Вызов",
-		"MORE": "Больше",
+		"MORE": "Более",
 		"SEND_MESSAGE": "Отправить сообщение",
-		"REPLY_PLACEHOLDER": "Введите сообщение и нажмите Enter, чтобы его отправить.",
-		"CONTACT_XCALLY_MOTION_SUPPORT": "Обратитесь в службу поддержки XCALLY Motion",
-		"EXPIRATION_DATE": "Дата истечения срока действия",
+		"REPLY_PLACEHOLDER": "Тип и нажмите enter для отправки сообщения",
+		"CONTACT_XCALLY_MOTION_SUPPORT": "Контакт xCALLY поддержки движения",
+		"EXPIRATION_DATE": "Дата окончания срока действия",
 		"EXPIRATION_REASON": "Причина истечения срока действия",
-		"LICENSE": "Лицензия",
-		"NEW_TOKEN": "Новый токен",
-		"OLD_TOKEN": "Старый токен",
-		"SEND_EMAIL_TO": "Отправить письмо на электронная почта",
-		"TOKEN": "Токен",
-		"EXPIRATION_REASON_MESSAGE": "Срок действия вашей лицензии истек или же был обновлен уникальный идентификатор вашего устройства вследствие изменений в вашей системе. Обратитесь в службу поддержки XCALLY Motion, отправив свой старый и свой новый UUID.",
-		"GRAY_PERIOD_EXPIRATION": "Истечение льготного периода",
+		"LICENSE": "Лицензии",
+		"NEW_TOKEN": "Новый маркер",
+		"OLD_TOKEN": "Старый маркер",
+		"SEND_EMAIL_TO": "Отправьте сообщение электронной почты на адрес",
+		"TOKEN": "Маркер",
+		"EXPIRATION_REASON_MESSAGE": "Срок лицензии истек или вашей машины уникальный идентификатор был обновлен в соответствии с изменением в вашей системе. Обратитесь в xCALLY Motion группы поддержки отправки ваш старый и новый идентификатор UUID.",
+		"GRAY_PERIOD_EXPIRATION": "Серый Период истечения срока действия",
 		"ERRORS": {
 			"NAME_REQUIRED": "Обязательное поле"
 		},
-		"EXPIRATION_GRAY_PERIOD": "Истечение льготного периода",
+		"EXPIRATION_GRAY_PERIOD": "Сегмент срока действия",
 		"NO_AVAILABLE_GROUPS": "Нет доступных групп",
 		"SAVE": "Сохранить",
 		"INFO": "Информация",
 		"NEW_CHATGROUP": "Новая группа",
-		"NAME": "Имя",
-		"MEMBERS": "Участники",
+		"NAME": "имя",
+		"MEMBERS": "члены",
 		"ENABLE_WRITING": "Включить запись",
-		"GROUPS": "Группы",
-		"YOU": "Вы + {{участники}}",
+		"GROUPS": "группы",
+		"YOU": "Вы {{участники}}",
 		"NEW_INTERNAL_MESSAGE": "Новое внутреннее сообщение",
 		"DELETE": "Удалить",
 		"SEARCH": "Поиск",
-		"USERS": "Пользователи",
-		"EXPIRATION_REASON_MESSAGE_GRAY": "Срок действия вашей лицензии истек или лицензия была деактивирована. Обратитесь к представителям службы поддержки XCALLY Motion.",
-		"EXPIRATION_REASON_MESSAGE_CHANGED": "Уникальный идентификатор вашего устройства был обновлен вследствие изменения в вашей системе. Обратитесь в службу поддержки XCALLY Motion, отправив свой старый и свой новый UUID.",
-		"MESSENGER_DISABLED": "Обмен внутренними сообщениями для данного агента отключен!",
+		"USERS": "пользователей",
+		"EXPIRATION_REASON_MESSAGE_GRAY": "Срок действия вашей лицензии истек или был отключен. Свяжитесь с командой поддержки xCALLY Motion.",
+		"EXPIRATION_REASON_MESSAGE_CHANGED": "Уникальный идентификатор вашей машины обновлен из-за изменения вашей системы. Обратитесь в службу поддержки xCALLY Motion, отправляющую и ваш старый, и ваш новый uuid.",
+		"MESSENGER_DISABLED": "Внутренний обмен сообщениями отключен для этого агента!",
 		"WARNING": "Предупреждение"
 	}
 }
\ No newline at end of file
diff --git a/public/app/reset/i18n/ru.json b/public/app/reset/i18n/ru.json
index 3c71160..9d2bb69 100644
--- a/public/app/reset/i18n/ru.json
+++ b/public/app/reset/i18n/ru.json
@@ -1,20 +1,20 @@
 {
 	"RESETPASSWORD": {
 		"TITLE": "Сброс пароля",
-		"EMAIL_ADRESS": "Электронная почта",
+		"EMAIL_ADRESS": "Адрес электронной почты",
 		"PASSWORD": "Пароль",
-		"PASSWORD_CONFIRM": "Пароль (подтвердить)",
-		"UPDATE_PASSWORD": "СБРОС ПАРОЛЯ",
-		"GO_BACK": "Вернуться на страницу ввода логина и пароля",
+		"PASSWORD_CONFIRM": "Пароль (Подтверждение)",
+		"UPDATE_PASSWORD": "Изменить пароль",
+		"GO_BACK": "Вернуться Введите логин и пароль,",
 		"PASSWORD_RESET": "Сброс пароля",
-		"PASSWORD_RESET_MESSAGE": "Ваш пароль был сброшен правильно, теперь вы можете войти в систему!",
-		"PASSWORD_RESET_ERROR": "Ошибка при сбросе пароля",
+		"PASSWORD_RESET_MESSAGE": "Ваш пароль был правильно сбросить, вы теперь можете войти!",
+		"PASSWORD_RESET_ERROR": "Пароль Сбросить ошибку",
 		"ERRORS": {
-			"EMAIL_REQUIRED": "Поле ввода адреса электронной почты обязательно для заполнения",
-			"EMAIL_MUST_VALID": "Электронная почта должен быть действительным",
-			"PASSWORD_REQUIRED": "Поле ввода пароля обязательно для заполнения",
-			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
-			"SECURE_PASSWORD_PATTERN": "Должен содержать не менее 8 символов, включая 1 строчную букву, 1 заглавную букву, 1 цифру и 1 специальный символ ~!?*@#$%^&amp;-_=+[{]}."
+			"EMAIL_REQUIRED": "Поле \"Адрес эл. почты\" не требуется",
+			"EMAIL_MUST_VALID": "Адрес электронной почты должен быть действительный адрес электронной почты",
+			"PASSWORD_REQUIRED": "Пароль Поле является обязательным для заполнения",
+			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
+			"SECURE_PASSWORD_PATTERN": "Должен содержать не менее 8 символов и содержать не менее 1 букв нижнего регистра, 1 буквы, 1 цифровых символов и 1 специального символа ~!?*@#$%^&-_=+[{]}."
 		}
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/ar.json b/public/app/toolbar/i18n/ar.json
index 6acb0a6..dbb766d 100644
--- a/public/app/toolbar/i18n/ar.json
+++ b/public/app/toolbar/i18n/ar.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "لا توجد أجهزة صوتية متاحة",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "لا يتوفر ميكروفون",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "لا يوجد مكبر صوت متاح",
-		"NO_AVAILABLE_INFO": "لا توجد معلومات متاحة"
+		"NO_AVAILABLE_INFO": "لا توجد معلومات متاحة",
+		"LITHUANIAN": "الليتوانية",
+		"NOTIFICATION_TITLE": "إشعار جديد من {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "إلى {{المستلم}}",
+		"USER_FORCE_LOGOUT": "قام {{ip}} بتسجيل الدخول باستخدام بيانات الاعتماد الخاصة بك.\nغير مسموح بتسجيل الدخول المتعدد"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/da.json b/public/app/toolbar/i18n/da.json
index 689b3fb..ce6eee5 100644
--- a/public/app/toolbar/i18n/da.json
+++ b/public/app/toolbar/i18n/da.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Ingen lydenheder tilgængelige",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Ingen mikrofon tilgængelig",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Ingen højttaler tilgængelig",
-		"NO_AVAILABLE_INFO": "Ingen tilgængelige oplysninger"
+		"NO_AVAILABLE_INFO": "Ingen tilgængelige oplysninger",
+		"LITHUANIAN": "litauisk",
+		"NOTIFICATION_TITLE": "Ny anmeldelse fra {{afsender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "til {{modtager}}",
+		"USER_FORCE_LOGOUT": "{{ip}} er logget ind med dine legitimationsoplysninger.\nFlere login er ikke tilladt"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/de.json b/public/app/toolbar/i18n/de.json
index 932cdd0..29672a0 100644
--- a/public/app/toolbar/i18n/de.json
+++ b/public/app/toolbar/i18n/de.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Keine Audiogeräte verfügbar",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Kein Mikrofon vorhanden",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Kein Lautsprecher verfügbar",
-		"NO_AVAILABLE_INFO": "Keine verfügbaren Informationen"
+		"NO_AVAILABLE_INFO": "Keine verfügbaren Informationen",
+		"LITHUANIAN": "litauisch",
+		"NOTIFICATION_TITLE": "Neue Benachrichtigung von {{Absender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "an {{Empfänger}}",
+		"USER_FORCE_LOGOUT": "{{ip}} hat sich mit Ihren Anmeldeinformationen angemeldet.\nMehrfachanmeldungen sind nicht zulässig"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/en.json b/public/app/toolbar/i18n/en.json
index 3d69232..2ca00bd 100644
--- a/public/app/toolbar/i18n/en.json
+++ b/public/app/toolbar/i18n/en.json
@@ -85,6 +85,7 @@
 		"PAUSE": "Pause",
 		"RESUME": "End Pause",
 		"NO_PAUSES_AVAILABLE": "No pauses available",
+		"CZECH": "Czech",
 		"ERRORS": {
 			"FIELD_REQUIRED": "Mandatory Field",
 			"PASSWORD_REQUIRED": "Mandatory Field",
@@ -94,10 +95,13 @@
 		},
 		"BRAZILIAN": "Brazilian",
 		"ESTONIAN": "Estonian",
-		"CZECH": "Czech",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "No microphone available",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "No speaker available",
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "No audio devices available",
-		"NO_AVAILABLE_INFO": "No available info"
+		"NO_AVAILABLE_INFO": "No available info",
+		"LITHUANIAN": "Lithuanian",
+		"NOTIFICATION_TITLE": "New notification from {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "to {{recipient}}",
+		"USER_FORCE_LOGOUT": "{{ip}} has logged in with your credentials. \nMultiple logins are not allowed"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/es.json b/public/app/toolbar/i18n/es.json
index e3253dc..4a557ee 100644
--- a/public/app/toolbar/i18n/es.json
+++ b/public/app/toolbar/i18n/es.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "No hay dispositivos de audio disponibles",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "No hay micrófono disponible",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "No hay altavoces disponibles",
-		"NO_AVAILABLE_INFO": "No hay información disponible."
+		"NO_AVAILABLE_INFO": "No hay información disponible.",
+		"LITHUANIAN": "lituano",
+		"NOTIFICATION_TITLE": "Nueva notificación de {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "a {{destinatario}}",
+		"USER_FORCE_LOGOUT": "{{ip}} ha iniciado sesión con sus credenciales.\nNo se permiten múltiples inicios de sesión"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/fa.json b/public/app/toolbar/i18n/fa.json
index a04d85f..72262c9 100644
--- a/public/app/toolbar/i18n/fa.json
+++ b/public/app/toolbar/i18n/fa.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "دستگاه صوتی موجود نیست",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "هیچ میکروفون در دسترس نیست",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "هیچ بلندگو در دسترس نیست",
-		"NO_AVAILABLE_INFO": "هیچ اطلاعات در دسترس نیست"
+		"NO_AVAILABLE_INFO": "هیچ اطلاعات در دسترس نیست",
+		"LITHUANIAN": "لیتوانیایی",
+		"NOTIFICATION_TITLE": "اعلان جدید از {{فرستنده}",
+		"NOTIFICATION_TITLE_RECIPIENT": "به {{گیرنده",
+		"USER_FORCE_LOGOUT": "{{ip} with با اعتبار خود وارد شوید.\nورود چندگانه مجاز نیست"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/fi.json b/public/app/toolbar/i18n/fi.json
index 6fce60c..5a73aa4 100644
--- a/public/app/toolbar/i18n/fi.json
+++ b/public/app/toolbar/i18n/fi.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Audiolaitteita ei ole saatavana",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Mikrofonia ei ole saatavana",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Kaiutinta ei ole saatavilla",
-		"NO_AVAILABLE_INFO": "Ei tietoa"
+		"NO_AVAILABLE_INFO": "Ei tietoa",
+		"LITHUANIAN": "liettualainen",
+		"NOTIFICATION_TITLE": "Uusi ilmoitus lähettäjältä {{lähettäjä}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "vastaanottajalle {{vastaanottaja}}",
+		"USER_FORCE_LOGOUT": "{{ip}} on kirjautunut sisään käyttöoikeustietosi.\nUseita kirjautumisia ei sallita"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/fr.json b/public/app/toolbar/i18n/fr.json
index c6278e0..0220ca6 100644
--- a/public/app/toolbar/i18n/fr.json
+++ b/public/app/toolbar/i18n/fr.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Aucun périphérique audio disponible",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Pas de microphone disponible",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Aucun haut-parleur disponible",
-		"NO_AVAILABLE_INFO": "Aucune information disponible"
+		"NO_AVAILABLE_INFO": "Aucune information disponible",
+		"LITHUANIAN": "lituanien",
+		"NOTIFICATION_TITLE": "Nouvelle notification de {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "à {{destinataire}}",
+		"USER_FORCE_LOGOUT": "{{ip}} s'est connecté avec vos identifiants.\nLes connexions multiples ne sont pas autorisées"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/he.json b/public/app/toolbar/i18n/he.json
index 58da1f5..4b6db4e 100644
--- a/public/app/toolbar/i18n/he.json
+++ b/public/app/toolbar/i18n/he.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "אין מכשירי שמע זמינים",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "אין מיקרופון זמין",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "אין רמקול זמין",
-		"NO_AVAILABLE_INFO": "אין מידע זמין"
+		"NO_AVAILABLE_INFO": "אין מידע זמין",
+		"LITHUANIAN": "ליטאי",
+		"NOTIFICATION_TITLE": "הודעה חדשה מאת {{שולח}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "אל {{מקבל}}",
+		"USER_FORCE_LOGOUT": "{{ip}} התחבר עם האישורים שלך.\nאין להכניס כניסות מרובות"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/hi.json b/public/app/toolbar/i18n/hi.json
index 0a3f42c..8043b85 100644
--- a/public/app/toolbar/i18n/hi.json
+++ b/public/app/toolbar/i18n/hi.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "कोई ऑडियो डिवाइस उपलब्ध नहीं है",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "कोई माइक्रोफोन उपलब्ध नहीं है",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "कोई स्पीकर उपलब्ध नहीं है",
-		"NO_AVAILABLE_INFO": "कोई उपलब्ध जानकारी नहीं"
+		"NO_AVAILABLE_INFO": "कोई उपलब्ध जानकारी नहीं",
+		"LITHUANIAN": "लिथुआनियाई",
+		"NOTIFICATION_TITLE": "{{प्रेषक}} से नई अधिसूचना",
+		"NOTIFICATION_TITLE_RECIPIENT": "से {{प्राप्तकर्ता}}",
+		"USER_FORCE_LOGOUT": "{{ip}} ने आपकी साख के साथ लॉग इन किया है।\nएकाधिक लॉगिन की अनुमति नहीं है"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/id.json b/public/app/toolbar/i18n/id.json
index 037e09f..0099798 100644
--- a/public/app/toolbar/i18n/id.json
+++ b/public/app/toolbar/i18n/id.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Tidak ada perangkat audio yang tersedia",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Mikrofon tidak tersedia",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Tidak ada pembicara yang tersedia",
-		"NO_AVAILABLE_INFO": "Tidak ada info yang tersedia"
+		"NO_AVAILABLE_INFO": "Tidak ada info yang tersedia",
+		"LITHUANIAN": "Lithuania",
+		"NOTIFICATION_TITLE": "Pemberitahuan baru dari {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "kepada {{penerima}}",
+		"USER_FORCE_LOGOUT": "{{ip}} telah masuk dengan kredensial Anda.\nBanyak login tidak diperbolehkan"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/it.json b/public/app/toolbar/i18n/it.json
index 05a3d49..812895c 100644
--- a/public/app/toolbar/i18n/it.json
+++ b/public/app/toolbar/i18n/it.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Nessun dispositivo audio disponibile",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Nessun microfono disponibile",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Nessun altoparlante disponibile",
-		"NO_AVAILABLE_INFO": "Nessuna informazione disponibile"
+		"NO_AVAILABLE_INFO": "Nessuna informazione disponibile",
+		"LITHUANIAN": "Lituano",
+		"NOTIFICATION_TITLE": "Nuova notifica da {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "a {{recipient}}",
+		"USER_FORCE_LOGOUT": "{{ip}} si è connesso con le tue credenziali. \nNon sono consentite connessioni multiple"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/ja.json b/public/app/toolbar/i18n/ja.json
index 4152a26..c76a7ae 100644
--- a/public/app/toolbar/i18n/ja.json
+++ b/public/app/toolbar/i18n/ja.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "利用可能なオーディオデバイスがありません",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "マイクがありません",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "利用できるスピーカーはありません",
-		"NO_AVAILABLE_INFO": "利用可能な情報はありません"
+		"NO_AVAILABLE_INFO": "利用可能な情報はありません",
+		"LITHUANIAN": "リトアニア語",
+		"NOTIFICATION_TITLE": "{{sender}}からの新しい通知",
+		"NOTIFICATION_TITLE_RECIPIENT": "{{recipient}}へ",
+		"USER_FORCE_LOGOUT": "{{ip}}はあなたの認証情報でログインしています。\n複数のログインは許可されていません"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/ko.json b/public/app/toolbar/i18n/ko.json
index ac15cba..1498d32 100644
--- a/public/app/toolbar/i18n/ko.json
+++ b/public/app/toolbar/i18n/ko.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "사용 가능한 오디오 장치가 없습니다",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "사용 가능한 마이크가 없습니다",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "사용 가능한 스피커가 없습니다",
-		"NO_AVAILABLE_INFO": "사용 가능한 정보가 없습니다"
+		"NO_AVAILABLE_INFO": "사용 가능한 정보가 없습니다",
+		"LITHUANIAN": "리투아니아 사람",
+		"NOTIFICATION_TITLE": "{{sender}}의 새 알림",
+		"NOTIFICATION_TITLE_RECIPIENT": "{{recipient}}에게",
+		"USER_FORCE_LOGOUT": "{{ip}}이 (가) 귀하의 자격 증명으로 로그인했습니다.\n다중 로그인은 허용되지 않습니다."
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/lv.json b/public/app/toolbar/i18n/lv.json
index b6514e0..cc03504 100644
--- a/public/app/toolbar/i18n/lv.json
+++ b/public/app/toolbar/i18n/lv.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Neviena audio ierīce nav pieejama",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Nav pieejams mikrofons",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Nav pieejams neviens runātājs",
-		"NO_AVAILABLE_INFO": "Nav pieejama informācija"
+		"NO_AVAILABLE_INFO": "Nav pieejama informācija",
+		"LITHUANIAN": "Lietuviešu",
+		"NOTIFICATION_TITLE": "Jauns paziņojums no {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "adresātam {{saņēmējs}}",
+		"USER_FORCE_LOGOUT": "{{ip}} ir pieteicies ar jūsu akreditācijas datiem.\nVairāki pieteikumi nav atļauti"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/nl.json b/public/app/toolbar/i18n/nl.json
index 068ad16..b0ed443 100644
--- a/public/app/toolbar/i18n/nl.json
+++ b/public/app/toolbar/i18n/nl.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Geen audio-apparaten beschikbaar",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Geen microfoon beschikbaar",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Geen speaker beschikbaar",
-		"NO_AVAILABLE_INFO": "Geen beschikbare info"
+		"NO_AVAILABLE_INFO": "Geen beschikbare info",
+		"LITHUANIAN": "Litouws",
+		"NOTIFICATION_TITLE": "Nieuwe melding van {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "aan {{ontvanger}}",
+		"USER_FORCE_LOGOUT": "{{ip}} is ingelogd met uw inloggegevens.\nMeerdere aanmeldingen zijn niet toegestaan"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/no.json b/public/app/toolbar/i18n/no.json
index 155133b..deb942d 100644
--- a/public/app/toolbar/i18n/no.json
+++ b/public/app/toolbar/i18n/no.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Ingen lydenheter tilgjengelig",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Ingen mikrofon tilgjengelig",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Ingen høyttaler tilgjengelig",
-		"NO_AVAILABLE_INFO": "Ingen tilgjengelige info"
+		"NO_AVAILABLE_INFO": "Ingen tilgjengelige info",
+		"LITHUANIAN": "litauisk",
+		"NOTIFICATION_TITLE": "Ny varsel fra {{avsender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "til {{mottaker}}",
+		"USER_FORCE_LOGOUT": "{{ip}} har logget på med legitimasjonsbeskrivelsen.\nFlere pålogginger er ikke tillatt"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/pl.json b/public/app/toolbar/i18n/pl.json
index 9f67ec2..ca375e7 100644
--- a/public/app/toolbar/i18n/pl.json
+++ b/public/app/toolbar/i18n/pl.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Brak dostępnych urządzeń audio",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Brak dostępnego mikrofonu",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Brak dostępnych głośników",
-		"NO_AVAILABLE_INFO": "Brak dostępnych informacji"
+		"NO_AVAILABLE_INFO": "Brak dostępnych informacji",
+		"LITHUANIAN": "litewski",
+		"NOTIFICATION_TITLE": "Nowe powiadomienie od {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "do {{recipient}}",
+		"USER_FORCE_LOGOUT": "{{ip}} zalogował się przy użyciu Twoich danych logowania.\nWielokrotne logowanie jest niedozwolone"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/pt-BR.json b/public/app/toolbar/i18n/pt-BR.json
index e8f729c..8e3c095 100644
--- a/public/app/toolbar/i18n/pt-BR.json
+++ b/public/app/toolbar/i18n/pt-BR.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Nenhum dispositivo de áudio disponível",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Nenhum microfone disponível",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Nenhum alto-falante disponível",
-		"NO_AVAILABLE_INFO": "Nenhuma informação disponível"
+		"NO_AVAILABLE_INFO": "Nenhuma informação disponível",
+		"LITHUANIAN": "lituano",
+		"NOTIFICATION_TITLE": "Nova notificação de {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "para {{destinatário}}",
+		"USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nVários logins não são permitidos"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/pt-PT.json b/public/app/toolbar/i18n/pt-PT.json
index e8c12c7..824da6d 100644
--- a/public/app/toolbar/i18n/pt-PT.json
+++ b/public/app/toolbar/i18n/pt-PT.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Nenhum dispositivo de áudio disponível",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Nenhum microfone disponível",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Nenhum alto-falante disponível",
-		"NO_AVAILABLE_INFO": "Nenhuma informação disponível"
+		"NO_AVAILABLE_INFO": "Nenhuma informação disponível",
+		"LITHUANIAN": "lituano",
+		"NOTIFICATION_TITLE": "Nova notificação de {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "para {{destinatário}}",
+		"USER_FORCE_LOGOUT": "{{ip}} fez login com suas credenciais.\nVários logins não são permitidos"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/ru.json b/public/app/toolbar/i18n/ru.json
index 9dc88be..a0421b2 100644
--- a/public/app/toolbar/i18n/ru.json
+++ b/public/app/toolbar/i18n/ru.json
@@ -1,103 +1,107 @@
 {
 	"TOOLBAR": {
-		"TOGGLE_NAVIGATION": "Переключить навигацию",
-		"TOGGLE_NAVIGATION_FOLD": "Переключить свертывание (навигация)",
-		"TOGGLE_NAVIGATION_MODE": "Включить режим навигации",
+		"TOGGLE_NAVIGATION": "Переключение системы навигации",
+		"TOGGLE_NAVIGATION_FOLD": "Переключения складывания системы навигации",
+		"TOGGLE_NAVIGATION_MODE": "Переключение в режим навигации",
 		"SEARCH": "Поиск",
-		"USER_SETTINGS": "Пользовательские настройки",
-		"TOGGLE_QUICK_PANEL": "Переключить панель быстрых настроек",
-		"ENGLISH": "Английский",
+		"USER_SETTINGS": "Настройки пользователя",
+		"TOGGLE_QUICK_PANEL": "Переключения быстрые панели",
+		"ENGLISH": "На английском языке",
 		"ITALIAN": "Итальянский",
-		"FRENCH": "Французский",
+		"FRENCH": "По-французски",
 		"KOREAN": "Корейский",
 		"SPANISH": "Испанский",
 		"SWEDISH": "Шведский",
-		"RUSSIAN": "Русский",
+		"RUSSIAN": "Российская",
 		"GERMAN": "Немецкий",
-		"JAPANESE": "Японский",
-		"CHINESESIMPLIFIED": "Китайский (упрощенный)",
-		"CHINESETRADITIONAL": "Китайский (традиционный)",
-		"DUTCH": "Нидерландский",
+		"JAPANESE": "На японском языке",
+		"CHINESESIMPLIFIED": "Китайский упрощенный",
+		"CHINESETRADITIONAL": "Китайский традиционный",
+		"DUTCH": "Голландский",
 		"FINNISH": "Финский",
 		"DANISH": "Датский",
 		"PORTUGUESE": "Португальский",
 		"NORWEGIAN": "Норвежский",
 		"HINDI": "Хинди",
-		"TURKISH": "Турецкий",
+		"TURKISH": "турецкий язык",
 		"PERSIAN": "Персидский",
-		"LOGIN_TIME": "Время входа в систему",
+		"LOGIN_TIME": "Время входа",
 		"PAUSE_TIME": "Время паузы",
 		"PREVIEW": "Предварительный просмотр",
-		"CONFIRM_PASSWORD": "Подтверждение пароля",
+		"CONFIRM_PASSWORD": "Подтвердите пароль",
 		"NEW_PASSWORD": "Новый пароль",
 		"OLD_PASSWORD": "Старый пароль",
 		"SAVE": "Сохранить",
 		"TRIAL_VERSION": "Пробная версия",
-		"SOMEONE_LOGGED_YOU_OUT": "Пользователь вышел из системы. Хотите остаться в системе?",
-		"STAY_LOGGED": "Остаться в системе",
+		"SOMEONE_LOGGED_YOU_OUT": "Кто-то вошел вас, вы хотите оставаться зарегистрирован?",
+		"STAY_LOGGED": "Пребывание вошел",
 		"WARNING": "Предупреждение",
 		"PAUSE": "Пауза",
-		"RESUME": "Конец паузы",
-		"NO_PAUSES_AVAILABLE": "Нет доступных пауз",
-		"LATVIAN": "Латышский",
+		"RESUME": "Возобновить",
+		"NO_PAUSES_AVAILABLE": "Нет доступных приостанавливается",
+		"LATVIAN": "Латвийский",
 		"POLISH": "Польский",
 		"ERRORS": {
 			"FIELD_REQUIRED": "Обязательное поле",
 			"PASSWORD_REQUIRED": "Обязательное поле",
-			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
-			"SECURE_PASSWORD_PATTERN": "Пароль должен содержать не менее 8 символов, включая 1 строчную букву, 1 заглавную букву, 1 цифру и 1 специальный символ ~!?*@#$%^&amp;-_=+[{]}.",
+			"CONFIRM_NOT_MATCH": "Пароли не совпадают",
+			"SECURE_PASSWORD_PATTERN": "Пароль должен содержать не менее 8 символов и иметь 1 строчный символ, 1 символ верхнего регистра, 1 номер и 1 специальный символ ~! @",
 			"PASSWORD_OLDPASSWORD_MATCH": "Новый пароль должен отличаться от предыдущего"
 		},
 		"RESETPASSWORD": "Сброс пароля",
-		"PASSWORD_EXPIRE_REMAINING_DAYS": "Число дней до истечения срока действия пароля",
-		"BROWSER_COMPATIBILITY": "Совместимость браузера [Chrome, Opera, Safari]",
-		"RECORDING": "Запись",
+		"PASSWORD_EXPIRE_REMAINING_DAYS": "Оставшиеся дни до истечения срока действия вашего пароля",
+		"BROWSER_COMPATIBILITY": "Совместимость с браузером [Chrome, Opera, Safari]",
+		"RECORDING": "запись",
 		"INVALID_LICENSE": "Недействительная лицензия",
-		"BROWSER": "Браузер",
+		"BROWSER": "браузер",
 		"OS": "Операционная система",
 		"REQUIREMENTS": "Требования",
 		"LICENSE": "Лицензия",
 		"HTTPS": "HTTPS",
-		"WEBRTCSUPPORT": "Поддержка WebRTC",
-		"REGISTERED": "Зарегистрирован",
-		"NOT_REGISTERED": "Не зарегистрирован",
-		"WEBRTC_LICENSE_NOT_ENABELD": "Лицензия WebRTC не активирована",
-		"ATTENDED_TRANSFER": "Сопровождаемая передача вызова",
-		"TRANSFER": "Перевод вызова",
-		"TARGET": "Цель",
+		"WEBRTCSUPPORT": "Поддержка WebRTC",
+		"REGISTERED": "зарегистрированный",
+		"NOT_REGISTERED": "Не зарегистрирован",
+		"WEBRTC_LICENSE_NOT_ENABELD": "Лицензия WebRTC не включена",
+		"ATTENDED_TRANSFER": "Посещение Транспорта",
+		"TRANSFER": "Перевод",
+		"TARGET": "цель",
 		"CANCEL": "Отмена",
 		"FILENAME": "Имя файла",
-		"STATUS": "Состояние",
-		"ACTIONS": "Действия",
-		"SPEAKER": "Динамик",
-		"RINGING": "Мелодия звонка",
+		"STATUS": "Положение дел",
+		"ACTIONS": "действия",
+		"SPEAKER": "Оратор",
+		"RINGING": "Мелодия",
 		"MICROPHONE": "Микрофон",
 		"PROFILE": "Профиль",
 		"SERVICES": "Сервисы",
-		"AUDIO": "Аудио",
+		"AUDIO": "аудио",
 		"FULLNAME": "Полное имя",
-		"NAME": "Имя",
-		"INTERNAL": "Внутренний",
-		"RINGINGDEVICE": "Вызывное устройство",
-		"SPEAKERDEVICE": "Динамик",
-		"MICROPHONEDEVICE": "Микрофон",
+		"NAME": "имя",
+		"INTERNAL": "внутренний",
+		"RINGINGDEVICE": "Звонок",
+		"SPEAKERDEVICE": "Устройство громкоговорителей",
+		"MICROPHONEDEVICE": "Микрофонное устройство",
 		"CHANGEPASSWORD": "Изменить пароль",
-		"SETTINGS": "Настройки",
-		"AUTOANSWER": "Автоответ",
-		"INDONESIAN": "Индонезийский",
-		"ARABIC": "Арабский",
+		"SETTINGS": "настройки",
+		"AUTOANSWER": "Автоматический ответ",
+		"INDONESIAN": "индонезийский",
+		"ARABIC": "арабский",
 		"CALL": "Вызов",
-		"PREFIXES": "Префиксы",
-		"HEBREW": "Иврит",
-		"ESTONIAN": "Эстонский",
-		"CZECH": "Чешский",
-		"BRAZILIAN": "Португальский (Бразилия)",
-		"CONFERENCE": "Конференция с 2 активными сессиями",
-		"CHANGE_LANGUAGE_MESSAGE": "Не забудьте обновить страницу, чтобы применить поддержку RTL (если включена)",
-		"CHANGE_LANGUAGE_TITLE": "Изменить язык",
-		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Доступные аудиоустройства отсутствуют",
-		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Доступный микрофон отсутствует",
-		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Доступный динамик отсутствует",
-		"NO_AVAILABLE_INFO": "Доступная информация отсутствует"
+		"PREFIXES": "Приставки",
+		"HEBREW": "иврит",
+		"ESTONIAN": "эстонский",
+		"CZECH": "чешский язык",
+		"BRAZILIAN": "бразильский",
+		"CONFERENCE": "Конференция с 2 активными сессиями",
+		"CHANGE_LANGUAGE_MESSAGE": "Не забудьте обновить страницу, чтобы применить поддержку RTL (если она включена)",
+		"CHANGE_LANGUAGE_TITLE": "изменение языка",
+		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Нет доступных аудиоустройств",
+		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Микрофон недоступен",
+		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Нет доступных динамиков",
+		"NO_AVAILABLE_INFO": "Нет доступной информации",
+		"LITHUANIAN": "Литовский язык",
+		"NOTIFICATION_TITLE": "Новое уведомление от {{sender}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "кому: {{recipient}}",
+		"USER_FORCE_LOGOUT": "{{ip}} вошел в систему с вашими учетными данными.\nМножественные входы не разрешены"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/sv.json b/public/app/toolbar/i18n/sv.json
index 7a26b74..385c306 100644
--- a/public/app/toolbar/i18n/sv.json
+++ b/public/app/toolbar/i18n/sv.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Inga ljudenheter tillgängliga",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Ingen mikrofon tillgänglig",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Ingen högtalare tillgänglig",
-		"NO_AVAILABLE_INFO": "Ingen tillgänglig information"
+		"NO_AVAILABLE_INFO": "Ingen tillgänglig information",
+		"LITHUANIAN": "litauiska",
+		"NOTIFICATION_TITLE": "Ny meddelande från {{avsändare}}",
+		"NOTIFICATION_TITLE_RECIPIENT": "till {{mottagare}}",
+		"USER_FORCE_LOGOUT": "{{ip}} har loggat in med dina referenser.\nFlera inloggningar är inte tillåtna"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/tr.json b/public/app/toolbar/i18n/tr.json
index 118e960..025b302 100644
--- a/public/app/toolbar/i18n/tr.json
+++ b/public/app/toolbar/i18n/tr.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "Ses cihazı yok",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "Mikrofon yok",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "Hoparlör yok",
-		"NO_AVAILABLE_INFO": "Kullanılabilir bilgi yok"
+		"NO_AVAILABLE_INFO": "Kullanılabilir bilgi yok",
+		"LITHUANIAN": "Litvanyalı",
+		"NOTIFICATION_TITLE": "{{Sender}} tarafından gönderilen yeni bildirim",
+		"NOTIFICATION_TITLE_RECIPIENT": "{{alıcı}}",
+		"USER_FORCE_LOGOUT": "{{ip}} kimlik bilgilerinizle giriş yaptı.\nBirden çok girişe izin verilmez"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/zh-CN.json b/public/app/toolbar/i18n/zh-CN.json
index 295d324..df51097 100644
--- a/public/app/toolbar/i18n/zh-CN.json
+++ b/public/app/toolbar/i18n/zh-CN.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "没有可用的音频设备",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "没有可用的麦克风",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "没有扬声器",
-		"NO_AVAILABLE_INFO": "无可用信息"
+		"NO_AVAILABLE_INFO": "无可用信息",
+		"LITHUANIAN": "立陶宛语",
+		"NOTIFICATION_TITLE": "来自{{sender}}的新通知",
+		"NOTIFICATION_TITLE_RECIPIENT": "到{{recipient}}",
+		"USER_FORCE_LOGOUT": "{{ip}}已使用您的凭据登录。\n不允许多次登录"
 	}
 }
\ No newline at end of file
diff --git a/public/app/toolbar/i18n/zh-TW.json b/public/app/toolbar/i18n/zh-TW.json
index 0344eff..315f970 100644
--- a/public/app/toolbar/i18n/zh-TW.json
+++ b/public/app/toolbar/i18n/zh-TW.json
@@ -98,6 +98,10 @@
 		"WEBRTC_AUDIO_DEVICES_NOT_AVAILABLE": "沒有可用的音頻設備",
 		"WEBRTC_MICROPHONE_NOT_AVAILABLE": "沒有可用的麥克風",
 		"WEBRTC_SPEAKER_NOT_AVAILABLE": "沒有揚聲器",
-		"NO_AVAILABLE_INFO": "無可用信息"
+		"NO_AVAILABLE_INFO": "無可用信息",
+		"LITHUANIAN": "立陶宛語",
+		"NOTIFICATION_TITLE": "來自{{sender}}的新通知",
+		"NOTIFICATION_TITLE_RECIPIENT": "到{{recipient}}",
+		"USER_FORCE_LOGOUT": "{{ip}}已使用您的憑據登錄。\n不允許多次登錄"
 	}
 }
\ No newline at end of file
diff --git a/public/index.html b/public/index.html
index c51ce15..d8631bd 100644
--- a/public/index.html
+++ b/public/index.html
@@ -14,7 +14,7 @@
 
     <link rel="stylesheet" href="styles/vendor.50474bf7.css">
 
-    <link rel="stylesheet" href="styles/app.9ec358c8.css">
+    <link rel="stylesheet" href="styles/app.daa56aff.css">
 
     <!-- <link href='//fonts.googleapis.com/css?family=Roboto:400,100,100italic,300,300italic,400italic,500,500italic,700italic,700,900,900italic'
               rel='stylesheet' type='text/css'> -->
@@ -58,9 +58,9 @@
 
     <toasty></toasty>
 
-    <script src="scripts/vendor.17cdb947.js"></script>
+    <script src="scripts/vendor.4b108999.js"></script>
 
-    <script src="scripts/app.74f89fce.js"></script>
+    <script src="scripts/app.87a823db.js"></script>
 
     <!-- CKEDITOR -->
     <script src="assets/plugins/ckeditor/ckeditor.js"></script>
diff --git a/public/scripts/app.74f89fce.js b/public/scripts/app.74f89fce.js
deleted file mode 100644
index 7b391de..0000000
--- a/public/scripts/app.74f89fce.js
+++ /dev/null
@@ -1 +0,0 @@
\ No newline at end of file
diff --git a/public/scripts/app.87a823db.js b/public/scripts/app.87a823db.js
new file mode 100644
index 0000000..3fbc739
--- /dev/null
+++ b/public/scripts/app.87a823db.js
@@ -0,0 +1,18 @@
+// *************************************************************************
+// *                                                                       *
+// * xCALLY Motion -  The Omnichannel Contact Center                       *
+// * Copyright (c) Xenialab s.r.l. All Rights Reserved                     *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * Email: [email-masked]                                                *
+// * Website: https://www.xcally.com                                       *
+// *                                                                       *
+// *************************************************************************
+// *                                                                       *
+// * The SOFTWARE PRODUCT is protected by copyright laws and international *
+// * copyright treaties, as well as other intellectual property laws and   *
+// * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
+// *                                                                       *
+// *************************************************************************
\ No newline at end of file
diff --git a/public/scripts/vendor.17cdb947.js b/public/scripts/vendor.17cdb947.js
deleted file mode 100644
index 21bd430..0000000
--- a/public/scripts/vendor.17cdb947.js
+++ /dev/null
@@ -1 +0,0 @@
\ No newline at end of file
diff --git a/public/scripts/vendor.4b108999.js b/public/scripts/vendor.4b108999.js
new file mode 100644
index 0000000..d049d73
--- /dev/null
+++ b/public/scripts/vendor.4b108999.js
@@ -0,0 +1,587 @@
+/*!
+ * jQuery JavaScript Library v2.2.4
+ * http://jquery.com/
+ *
+ * Includes Sizzle.js
+ * http://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2016-05-20T17:23Z
+ */
+/*!
+ * Bootstrap v3.3.7 (http://getbootstrap.com)
+ * Copyright 2011-2016 Twitter, Inc.
+ * Licensed under the MIT license
+ */
+/*!
+ * Sizzle CSS Selector Engine v2.2.1
+ * http://sizzlejs.com/
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license
+ * http://jquery.org/license
+ *
+ * Date: 2015-10-17
+ */
+/**
+ * @license AngularJS v1.5.10
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+/**
+ * @license AngularJS v1.5.8
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+/**
+ * @license AngularJS v1.5.8
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+/**
+ * @license AngularJS v1.5.8
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+/*! DataTables 1.10.21
+ * ©2008-2020 SpryMedia Ltd - datatables.net/license
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/*!
+ * angular-datatables - v0.5.4
+ * https://github.com/l-lin/angular-datatables
+ * License: MIT
+ */
+/**
+ * @license AngularJS v1.5.8
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+/*!
+ * Angular Material Design
+ * https://github.com/angular/material
+ * @license MIT
+ * v1.1.1
+ */
+/**
+ * @license AngularJS v1.5.8
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+/**
+ * @license AngularJS v1.5.8
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+/*!
+ * angular-translate - v2.11.0 - 2016-03-20
+ * 
+ * Copyright (c) 2016 The angular-translate team, Pascal Precht; Licensed MIT
+ */
+/*!
+ * angular-translate - v2.11.0 - 2016-03-20
+ * 
+ * Copyright (c) 2016 The angular-translate team, Pascal Precht; Licensed MIT
+ */
+/*!
+ * FullCalendar v2.3.1
+ * Docs & License: http://fullcalendar.io/
+ * (c) 2015 Adam Shaw
+ */
+/**
+ * State-based routing for AngularJS 1.x
+ * NOTICE: This monolithic bundle also bundles the @uirouter/core code.
+ *         This causes it to be incompatible with plugins that depend on @uirouter/core.
+ *         We recommend switching to the ui-router-core.js and ui-router-angularjs.js bundles instead.
+ *         For more information, see https://ui-router.github.io/blog/uirouter-for-angularjs-umd-bundles
+ * @version v1.0.25
+ * @link https://ui-router.github.io
+ * @license MIT License, http://www.opensource.org/licenses/MIT
+ */
+/**
+ * State-based routing for AngularJS 1.x
+ * @version v1.0.25
+ * @link https://ui-router.github.io
+ * @license MIT License, http://www.opensource.org/licenses/MIT
+ */
+/*! jQuery UI - v1.12.1 - 2016-09-14
+* http://jqueryui.com
+* Copyright jQuery Foundation and other contributors; Licensed MIT */
+function(e){"function"==typeof define&&define.amd?define(["jquery"],e):e(jQuery)}((function(e){e.ui=e.ui||{};e.ui.version="1.12.1";
+/*!
+ * jQuery UI Widget 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+/*!
+ * jQuery UI Position 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * http://api.jqueryui.com/position/
+/*!
+ * jQuery UI :data 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */var i,a,o=e;e.effects={effect:{}},
+/*!
+ * jQuery Color Animations v2.1.2
+ * https://github.com/jquery/jquery-color
+ *
+ * Copyright 2014 jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ * Date: Wed Jan 16 08:47:09 2013 -0600
+ */
+/*!
+ * jQuery UI Effects Blind 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */!1!==e.uiBackCompat&&e.effects.define("transfer",(function(t,n){e(this).transfer(t,n)}));
+/*!
+ * jQuery UI Focusable 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+/*!
+ * jQuery UI Support for jQuery core 1.7.x 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ *
+ */
+/*!
+ * jQuery UI Keycode 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+/*!
+ * jQuery UI Autocomplete 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+/*!
+ * jQuery UI Controlgroup 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+/*!
+ * jQuery UI Checkboxradio 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+/*!
+ * jQuery UI Button 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+/*!
+ * jQuery UI Datepicker 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+/*!
+ * jQuery UI Draggable 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+/*!
+ * jQuery UI Resizable 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+/*!
+ * jQuery UI Dialog 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+/*!
+ * jQuery UI Droppable 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+/*!
+ * jQuery UI Progressbar 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+/*!
+ * jQuery UI Spinner 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+ */
+/*!
+ * jQuery UI Tabs 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+/*!
+ * jQuery UI Tooltip 1.12.1
+ * http://jqueryui.com
+ *
+ * Copyright jQuery Foundation and other contributors
+ * Released under the MIT license.
+ * http://jquery.org/license
+/**
+ * angular-ui-sortable - This directive allows you to jQueryUI Sortable.
+ * @version v0.14.0 - 2016-03-28
+ * @link http://angular-ui.github.com
+ * @license MIT
+ */
+/**
+ * @license Angular UI Tree v2.15.0
+ * (c) 2010-2016. https://github.com/angular-ui-tree/angular-ui-tree
+ * License: MIT
+ */
+/*@cc_on
+         @if (@_win32 || @_win64)
+         document.write('<script id="ieScriptLoad" defer src="//:"><\/script>');
+         document.getElementById('ieScriptLoad').onreadystatechange = function() {
+         if (this.readyState == 'complete') {
+         callback();
+         }
+         };
+         @end @*/
+/*! Responsive 2.1.0
+ * 2014-2016 SpryMedia Ltd - datatables.net/license
+ */
+/*!
+ * imagesLoaded v4.1.0
+ * JavaScript is all like "You images are done yet or what?"
+ * MIT License
+ */
+/**!
+ * Sortable
+ * @author	RubaXa   <[email-masked]>
+ * @license MIT
+ */
+/**
+ * @author RubaXa <[email-masked]>
+ * @licence MIT
+ */
+/*
+ * Angular Material Data Table
+ * https://github.com/daniel-nagy/md-data-table
+ * @license MIT
+ * v0.10.9
+ */
+/**
+ * Bunch of useful filters for angularJS(with no external dependencies!)
+ * @version v0.5.17 - 2017-09-22 * @link https://github.com/a8m/angular-filter
+ * @author Ariel Mashraki <[email-masked]>
+ * @license MIT License, http://www.opensource.org/licenses/MIT
+ */
+/* @license
+Papa Parse
+v4.6.3
+https://github.com/mholt/PapaParse
+License: MIT
+*/
+/*!
+ * jsTree 3.3.10
+ * http://jstree.com/
+ *
+ * Copyright (c) 2014 Ivan Bozhanov (http://vakata.com)
+ *
+ * Licensed same as jquery - under the terms of the MIT License
+ *   http://www.opensource.org/licenses/mit-license.php
+ */
+/*!
+ * if using jslint please allow for the jQuery global and use following options:
+ * jslint: loopfunc: true, browser: true, ass: true, bitwise: true, continue: true, nomen: true, plusplus: true, regexp: true, unparam: true, todo: true, white: true
+/*!
+					'themes' : {
+						'name' : this.get_theme(),
+						'icons' : this._data.core.themes.icons,
+						'dots' : this._data.core.themes.dots
+					},
+					*/
+/*!
+			oi = obj.children("i:visible"),
+			ai = a.children("i:visible"),
+			w1 = oi.width() * oi.length,
+			w2 = ai.width() * ai.length,
+			*/
+/*!
+					"shortcut"			: 113,
+					"shortcut_label"	: 'F2',
+					"icon"				: "glyphicon glyphicon-leaf",
+					*/
+/*!
+			if(!('oncontextmenu' in document.body) && ('ontouchstart' in document.body)) {
+				var el = null, tm = null;
+				this.element
+					.on("touchstart", ".jstree-anchor", function (e) {
+						el = e.currentTarget;
+						tm = +new Date();
+						$(document).one("touchend", function (e) {
+							e.target = document.elementFromPoint(e.originalEvent.targetTouches[0].pageX - window.pageXOffset, e.originalEvent.targetTouches[0].pageY - window.pageYOffset);
+							e.currentTarget = e.target;
+							tm = ((+(new Date())) - tm);
+							if(e.target === el && tm > 600 && tm < 1000) {
+								e.preventDefault();
+								$(el).trigger('contextmenu', e);
+							}
+							el = null;
+							tm = null;
+						});
+					});
+			}
+			*/
+/*!
+				.on("mousedown.jstree touchstart.jstree", ".jstree-wholerow", function (e) {
+						if(e.target === e.currentTarget) {
+							var a = $(e.currentTarget).closest(".jstree-node").children(".jstree-anchor");
+							e.target = a[0];
+							a.trigger(e);
+						}
+					})
+/*!
+ * clipboard.js v1.5.16
+ * https://zenorocha.github.io/clipboard.js
+ *
+ * Licensed MIT © Zeno Rocha
+ */
+/*! ngclipboard - v1.1.3 - 2017-10-31
+* https://github.com/sachinchoolur/ngclipboard
+* Copyright (c) 2017 Sachin; Licensed MIT */
+/**
+ * @license AngularJS v1.5.8
+ * (c) 2010-2016 Google, Inc. http://angularjs.org
+ * License: MIT
+ */
+/**
+ * UI Component For Creating Cron Job Syntax To Send To Server
+ * @version v3.2.1 - 2019-09-18 * @link https://github.com/jacobscarter/angular-cron-jobs
+ * @author Jacob Carter <[email-masked]>
+ * @license MIT License, http://www.opensource.org/licenses/MIT
+ */
+/*!
+ * jQuery.textcomplete
+ *
+ * Repository: https://github.com/yuku-t/jquery-textcomplete
+ * License:    MIT (https://github.com/yuku-t/jquery-textcomplete/blob/master/LICENSE)
+ * Author:     Yuku Takahashi
+ */
+/*! EmojioneArea v3.4.1 | MIT license */
+window="undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{},document=window.document||{},function(e,t){"function"==typeof require&&"object"==typeof exports&&"object"==typeof module?e(require("jquery")):"function"==typeof define&&define.amd?define(["jquery"],e):e(t.jQuery)}((function(e){"use strict";var t=0,n={},r={},i=window.emojione,a=[];function o(e){i?e():a.push(e)}var s,l,c,u="data:image/gif;base64,R0lGODlhAQABAJH/AP///wAAAMDAwAAAACH5BAEAAAIALAAAAAABAAEAAAICVAEAOw==",f=[].slice,d="emojionearea",h=0,p="&#8203;";function m(t,r,i){var a=!0,o=1;if(r){r=r.toLowerCase();do{var s=1==o?"@"+r:r;n[t.id][s]&&n[t.id][s].length&&e.each(n[t.id][s],(function(e,n){return a=!1!==n.apply(t,i||[])}))}while(a&&o--)}return a}function g(t,n,i,a){a=a||function(t,n){return e(n.currentTarget)},e.each(i,(function(o,s){o=e.isArray(i)?s:o,(r[t.id][s]||(r[t.id][s]=[])).push([n,o,a])}))}function _(e,t,n){var r,a=i.imageType;r="svg"==a?i.imagePathSVG:i.imagePathPNG;var o="";n&&(o=n.substr(1,n.length-2).replace(/_/g," ").replace(/\w\S*/g,(function(e){return e.charAt(0).toUpperCase()+e.substr(1).toLowerCase()})));var s="";return t.uc_base&&h>4?(s=t.uc_base,t=t.uc_output.toUpperCase()):s=t,e.replace("{name}",n||"").replace("{friendlyName}",o).replace("{img}",r+(h<2?s.toUpperCase():s)+"."+a).replace("{uni}",t).replace("{alt}",i.convert(t))}function b(e,t,n){return e.replace(/:?\+?[\w_\-]+:?/g,(function(e){e=":"+e.replace(/:$/,"").replace(/^:/,"")+":";var r=i.emojioneList[e];return r?h>4?_(t,r,e):(h>3&&(r=r.unicode),_(t,r[r.length-1],e)):n?"":e}))}function v(e){var t,n;if(window.getSelection){if((t=window.getSelection()).getRangeAt&&t.rangeCount){(n=t.getRangeAt(0)).deleteContents();var r=document.createElement("div");r.innerHTML=e;for(var i,a,o=document.createDocumentFragment();i=r.firstChild;)a=o.appendChild(i);n.insertNode(o),a&&((n=n.cloneRange()).setStartAfter(a),n.collapse(!0),t.removeAllRanges(),t.addRange(n))}}else document.selection&&"Control"!=document.selection.type&&document.selection.createRange().pasteHTML(e)}function y(){return window.emojioneVersion||"3.1.2"}function w(e){return"object"==typeof e}function C(e){var t;return e.cacheBustParam?(t=e.cacheBustParam,w(e.jsEscapeMap)?"?v=1.2.4"===t?"2.0.0":"?v=2.0.1"===t?"2.1.0":"?v=2.1.1"===t?"2.1.1":"?v=2.1.2"===t?"2.1.2":"?v=2.1.3"===t?"2.1.3":"?v=2.1.4"===t?"2.1.4":"2.2.7":"1.5.2"):e.emojiVersion}function A(e){switch(e){case"1.5.2":return 0;case"2.0.0":return 1;case"2.1.0":case"2.1.1":return 2;case"2.1.2":return 3;case"2.1.3":case"2.1.4":case"2.2.7":return 4;case"3.0.1":case"3.0.2":case"3.0.3":case"3.0":return 5;case"3.1.0":case"3.1.1":case"3.1.2":case"3.1":default:return 6}}function S(){if(e.fn.emojioneArea&&e.fn.emojioneArea.defaults)return e.fn.emojioneArea.defaults;var t={attributes:{dir:"ltr",spellcheck:!1,autocomplete:"off",autocorrect:"off",autocapitalize:"off"},search:!0,placeholder:null,emojiPlaceholder:":smiley:",searchPlaceholder:"SEARCH",container:null,hideSource:!0,shortnames:!0,sprite:!0,pickerPosition:"top",filtersPosition:"top",searchPosition:"top",hidePickerOnBlur:!0,buttonTitle:"Use the TAB key to insert emoji faster",tones:!0,tonesStyle:"bullet",inline:null,saveEmojisAs:"unicode",shortcuts:!0,autocomplete:!0,autocompleteTones:!1,standalone:!1,useInternalCDN:!0,imageType:"png",recentEmojis:!0,textcomplete:{maxCount:15,placement:null}},n=A(i?C(i):y());return t.filters=n>4?{tones:{title:"Diversity",emoji:"open_hands raised_hands palms_up_together clap pray thumbsup thumbsdown punch fist left_facing_fist right_facing_fist fingers_crossed v metal love_you_gesture ok_hand point_left point_right point_up_2 point_down point_up raised_hand raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie nail_care ear nose baby boy girl man woman blond-haired_woman blond-haired_man older_man older_woman man_with_chinese_cap woman_wearing_turban man_wearing_turban woman_police_officer man_police_officer woman_construction_worker man_construction_worker woman_guard man_guard woman_detective man_detective woman_health_worker man_health_worker woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer woman_teacher man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist woman_office_worker man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist man_artist woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman breast_feeding woman_bowing man_bowing man_tipping_hand woman_tipping_hand man_gesturing_no woman_gesturing_no man_gesturing_ok woman_gesturing_ok man_raising_hand woman_raising_hand woman_facepalming man_facepalming woman_shrugging man_shrugging man_pouting woman_pouting man_frowning woman_frowning man_getting_haircut woman_getting_haircut man_getting_face_massage woman_getting_face_massage man_in_business_suit_levitating dancer man_dancing woman_walking man_walking woman_running man_running adult child older_adult bearded_person woman_with_headscarf woman_mage man_mage woman_fairy man_fairy woman_vampire man_vampire mermaid merman woman_elf man_elf snowboarder woman_lifting_weights man_lifting_weights woman_cartwheeling man_cartwheeling woman_bouncing_ball man_bouncing_ball woman_playing_handball man_playing_handball woman_golfing man_golfing woman_surfing man_surfing woman_swimming man_swimming woman_playing_water_polo man_playing_water_polo woman_rowing_boat man_rowing_boat horse_racing woman_biking man_biking woman_mountain_biking man_mountain_biking woman_juggling man_juggling woman_in_steamy_room man_in_steamy_room woman_climbing man_climbing woman_in_lotus_position man_in_lotus_position bath person_in_bed"},recent:{icon:"clock3",title:"Recent",emoji:""},smileys_people:{icon:"yum",title:"Smileys & People",emoji:"grinning smiley smile grin laughing sweat_smile joy rofl relaxed blush innocent slight_smile upside_down wink relieved crazy_face star_struck heart_eyes kissing_heart kissing kissing_smiling_eyes kissing_closed_eyes yum stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue money_mouth hugging nerd sunglasses cowboy smirk unamused disappointed pensive worried face_with_raised_eyebrow face_with_monocle confused slight_frown frowning2 persevere confounded tired_face weary triumph angry rage face_with_symbols_over_mouth no_mouth neutral_face expressionless hushed frowning anguished open_mouth astonished dizzy_face exploding_head flushed scream fearful cold_sweat cry disappointed_relieved drooling_face sob sweat sleepy sleeping rolling_eyes thinking shushing_face face_with_hand_over_mouth lying_face grimacing zipper_mouth face_vomiting nauseated_face sneezing_face mask thermometer_face head_bandage smiling_imp imp japanese_ogre japanese_goblin poop ghost skull skull_crossbones alien space_invader robot jack_o_lantern clown smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face pouting_cat open_hands raised_hands palms_up_together clap pray handshake thumbsup thumbsdown punch fist left_facing_fist right_facing_fist fingers_crossed v metal love_you_gesture ok_hand point_left point_right point_up_2 point_down point_up raised_hand raised_back_of_hand hand_splayed vulcan wave call_me muscle middle_finger writing_hand selfie nail_care ring lipstick kiss lips tongue ear nose footprints eye eyes speaking_head bust_in_silhouette busts_in_silhouette baby boy girl man woman blond-haired_woman blond_haired_man older_man older_woman man_with_chinese_cap woman_wearing_turban man_wearing_turban woman_police_officer police_officer woman_construction_worker construction_worker woman_guard guard woman_detective detective woman_health_worker man_health_worker woman_farmer man_farmer woman_cook man_cook woman_student man_student woman_singer man_singer woman_teacher man_teacher woman_factory_worker man_factory_worker woman_technologist man_technologist woman_office_worker man_office_worker woman_mechanic man_mechanic woman_scientist man_scientist woman_artist man_artist woman_firefighter man_firefighter woman_pilot man_pilot woman_astronaut man_astronaut woman_judge man_judge mrs_claus santa princess prince bride_with_veil man_in_tuxedo angel pregnant_woman breast_feeding woman_bowing man_bowing woman_tipping_hand man_tipping_hand woman_gesturing_no man_gesturing_no woman_gesturing_ok man_gesturing_ok woman_raising_hand man_raising_hand woman_facepalming man_facepalming woman_shrugging man_shrugging woman_pouting man_pouting woman_frowning man_frowning woman_getting_haircut man_getting_haircut woman_getting_face_massage man_getting_face_massage man_in_business_suit_levitating dancer man_dancing women_with_bunny_ears_partying men_with_bunny_ears_partying woman_walking man_walking woman_running man_running couple two_women_holding_hands two_men_holding_hands couple_with_heart couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb family_mwbb family_mwgg family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb family_mmbb family_mmgg family_woman_boy family_woman_girl family_woman_girl_boy family_woman_boy_boy family_woman_girl_girl family_man_boy family_man_girl family_man_girl_boy family_man_boy_boy family_man_girl_girl bearded_person woman_with_headscarf woman_mage man_mage woman_fairy man_fairy woman_vampire man_vampire mermaid merman woman_elf man_elf woman_genie man_genie woman_zombie man_zombie womans_clothes shirt jeans necktie dress bikini kimono high_heel sandal boot mans_shoe athletic_shoe womans_hat tophat mortar_board crown helmet_with_cross school_satchel pouch purse handbag briefcase eyeglasses dark_sunglasses closed_umbrella umbrella2 brain billed_cap scarf gloves coat socks "},animals_nature:{icon:"hamster",title:"Animals & Nature",emoji:"dog cat mouse hamster rabbit fox bear panda_face koala tiger lion_face cow pig pig_nose frog monkey_face see_no_evil hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick hatching_chick hatched_chick duck eagle owl bat wolf boar horse unicorn bee bug butterfly snail shell beetle ant spider spider_web turtle snake lizard scorpion crab squid octopus shrimp tropical_fish fish blowfish dolphin shark whale whale2 crocodile leopard tiger2 water_buffalo ox cow2 deer dromedary_camel camel elephant rhino gorilla racehorse pig2 goat ram sheep dog2 poodle cat2 rooster turkey dove rabbit2 mouse2 rat chipmunk dragon giraffe zebra hedgehog sauropod t_rex cricket dragon_face feet cactus christmas_tree evergreen_tree deciduous_tree palm_tree seedling herb shamrock four_leaf_clover bamboo tanabata_tree leaves fallen_leaf maple_leaf mushroom ear_of_rice bouquet tulip rose wilted_rose sunflower blossom cherry_blossom hibiscus earth_americas earth_africa earth_asia full_moon waning_gibbous_moon last_quarter_moon waning_crescent_moon new_moon waxing_crescent_moon first_quarter_moon waxing_gibbous_moon new_moon_with_face full_moon_with_face sun_with_face first_quarter_moon_with_face last_quarter_moon_with_face crescent_moon dizzy star star2 sparkles zap fire boom comet sunny white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud rainbow cloud cloud_rain thunder_cloud_rain cloud_lightning cloud_snow snowman2 snowman snowflake wind_blowing_face dash cloud_tornado fog ocean droplet sweat_drops umbrella "},food_drink:{icon:"pizza",title:"Food & Drink",emoji:"green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach pineapple kiwi avocado tomato eggplant cucumber carrot corn hot_pepper potato sweet_potato chestnut peanuts honey_pot croissant bread french_bread cheese egg cooking bacon pancakes fried_shrimp poultry_leg meat_on_bone pizza hotdog hamburger fries stuffed_flatbread taco burrito salad shallow_pan_of_food spaghetti ramen stew fish_cake sushi bento curry rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard lollipop candy chocolate_bar popcorn doughnut cookie milk baby_bottle coffee tea sake beer beers champagne_glass wine_glass tumbler_glass cocktail tropical_drink champagne spoon fork_and_knife fork_knife_plate dumpling fortune_cookie takeout_box chopsticks bowl_with_spoon cup_with_straw coconut broccoli pie pretzel cut_of_meat sandwich canned_food"},activity:{icon:"basketball",title:"Activity",emoji:"soccer basketball football baseball tennis volleyball rugby_football 8ball ping_pong badminton goal hockey field_hockey cricket_game golf bow_and_arrow fishing_pole_and_fish boxing_glove martial_arts_uniform ice_skate ski skier snowboarder woman_lifting_weights man_lifting_weights person_fencing women_wrestling men_wrestling woman_cartwheeling man_cartwheeling woman_bouncing_ball man_bouncing_ball woman_playing_handball man_playing_handball woman_golfing man_golfing woman_surfing man_surfing woman_swimming man_swimming woman_playing_water_polo man_playing_water_polo woman_rowing_boat man_rowing_boat horse_racing woman_biking man_biking woman_mountain_biking man_mountain_biking woman_in_steamy_room man_in_steamy_room woman_climbing man_climbing woman_in_lotus_position man_in_lotus_position running_shirt_with_sash medal military_medal first_place second_place third_place trophy rosette reminder_ribbon ticket tickets circus_tent woman_juggling man_juggling performing_arts art clapper microphone headphones musical_score musical_keyboard drum saxophone trumpet guitar violin game_die dart bowling video_game slot_machine sled curling_stone "},travel_places:{icon:"rocket",title:"Travel & Places",emoji:"red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck articulated_lorry tractor scooter bike motor_scooter motorcycle rotating_light oncoming_police_car oncoming_bus oncoming_automobile oncoming_taxi aerial_tramway mountain_cableway suspension_railway railway_car train mountain_railway monorail bullettrain_side bullettrain_front light_rail steam_locomotive train2 metro tram station helicopter airplane_small airplane airplane_departure airplane_arriving rocket satellite_orbital seat canoe sailboat motorboat speedboat cruise_ship ferry ship anchor construction fuelpump busstop vertical_traffic_light traffic_light map moyai statue_of_liberty fountain tokyo_tower european_castle japanese_castle stadium ferris_wheel roller_coaster carousel_horse beach_umbrella beach island mountain mountain_snow mount_fuji volcano desert camping tent railway_track motorway construction_site factory house house_with_garden homes house_abandoned office department_store post_office european_post_office hospital bank hotel convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine japan rice_scene park sunrise sunrise_over_mountains stars sparkler fireworks city_sunset city_dusk cityscape night_with_stars milky_way bridge_at_night foggy flying_saucer"},objects:{icon:"bulb",title:"Objects",emoji:"watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick compression minidisc floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector film_frames telephone_receiver telephone pager fax tv radio microphone2 level_slider control_knobs stopwatch timer alarm_clock clock hourglass hourglass_flowing_sand satellite battery electric_plug bulb flashlight candle wastebasket oil money_with_wings dollar yen euro pound moneybag credit_card gem scales wrench hammer hammer_pick tools pick nut_and_bolt gear chains gun bomb knife dagger crossed_swords shield smoking coffin urn amphora crystal_ball prayer_beads barber alembic telescope microscope hole pill syringe thermometer toilet potable_water shower bathtub bath bellhop key key2 door couch bed sleeping_accommodation frame_photo shopping_bags shopping_cart gift balloon flags ribbon confetti_ball tada dolls izakaya_lantern wind_chime envelope envelope_with_arrow incoming_envelope e-mail love_letter inbox_tray outbox_tray package label mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail postbox postal_horn scroll page_with_curl page_facing_up bookmark_tabs bar_chart chart_with_upwards_trend chart_with_downwards_trend notepad_spiral calendar_spiral calendar date card_index card_box ballot_box file_cabinet clipboard file_folder open_file_folder dividers newspaper2 newspaper notebook notebook_with_decorative_cover ledger closed_book green_book blue_book orange_book books book bookmark link paperclip paperclips triangular_ruler straight_ruler pushpin round_pushpin scissors pen_ballpoint pen_fountain black_nib paintbrush crayon pencil pencil2 mag mag_right lock_with_ink_pen closed_lock_with_key lock unlock"},symbols:{icon:"heartpulse",title:"Symbols",emoji:"heart orange_heart yellow_heart green_heart blue_heart purple_heart black_heart broken_heart heart_exclamation two_hearts revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross star_and_crescent om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross place_of_worship ophiuchus aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn aquarius pisces id atom accept radioactive biohazard mobile_phone_off vibration_mode u6709 u7121 u7533 u55b6 u6708 eight_pointed_black_star vs white_flower ideograph_advantage secret congratulations u5408 u6e80 u5272 u7981 a b ab cl o2 sos x o octagonal_sign no_entry name_badge no_entry_sign 100 anger hotsprings no_pedestrians do_not_litter no_bicycles non-potable_water underage no_mobile_phones no_smoking exclamation grey_exclamation question grey_question bangbang interrobang low_brightness high_brightness part_alternation_mark warning children_crossing trident fleur-de-lis beginner recycle white_check_mark u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark globe_with_meridians diamond_shape_with_a_dot_inside m cyclone zzz atm wc wheelchair parking u7a7a sa passport_control customs baggage_claim left_luggage mens womens baby_symbol restroom put_litter_in_its_place cinema signal_strength koko symbols information_source abc abcd capital_abcd ng ok up cool new free zero one two three four five six seven eight nine keycap_ten 1234 hash asterisk arrow_forward pause_button play_pause stop_button record_button eject track_next track_previous fast_forward rewind arrow_double_up arrow_double_down arrow_backward arrow_up_small arrow_down_small arrow_right arrow_left arrow_up arrow_down arrow_upper_right arrow_lower_right arrow_lower_left arrow_upper_left arrow_up_down left_right_arrow arrow_right_hook leftwards_arrow_with_hook arrow_heading_up arrow_heading_down twisted_rightwards_arrows repeat repeat_one arrows_counterclockwise arrows_clockwise musical_note notes heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign currency_exchange tm copyright registered wavy_dash curly_loop loop end back on top soon heavy_check_mark ballot_box_with_check radio_button white_circle black_circle red_circle blue_circle small_red_triangle small_red_triangle_down small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond white_square_button black_square_button black_small_square white_small_square black_medium_small_square white_medium_small_square black_medium_square white_medium_square black_large_square white_large_square speaker mute sound loud_sound bell no_bell mega loudspeaker speech_left eye_in_speech_bubble speech_balloon thought_balloon anger_right spades clubs hearts diamonds black_joker flower_playing_cards mahjong clock1 clock2 clock3 clock4 clock5 clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 clock530 clock630 clock730 clock830 clock930 clock1030 clock1130 clock1230"},flags:{icon:"flag_gb",title:"Flags",emoji:"flag_white flag_black checkered_flag triangular_flag_on_post rainbow_flag flag_af flag_ax flag_al flag_dz flag_as flag_ad flag_ao flag_ai flag_aq flag_ag flag_ar flag_am flag_aw flag_au flag_at flag_az flag_bs flag_bh flag_bd flag_bb flag_by flag_be flag_bz flag_bj flag_bm flag_bt flag_bo flag_ba flag_bw flag_br flag_io flag_vg flag_bn flag_bg flag_bf flag_bi flag_kh flag_cm flag_ca flag_ic flag_cv flag_bq flag_ky flag_cf flag_td flag_cl flag_cn flag_cx flag_cc flag_co flag_km flag_cg flag_cd flag_ck flag_cr flag_ci flag_hr flag_cu flag_cw flag_cy flag_cz flag_dk flag_dj flag_dm flag_do flag_ec flag_eg flag_sv flag_gq flag_er flag_ee flag_et flag_eu flag_fk flag_fo flag_fj flag_fi flag_fr flag_gf flag_pf flag_tf flag_ga flag_gm flag_ge flag_de flag_gh flag_gi flag_gr flag_gl flag_gd flag_gp flag_gu flag_gt flag_gg flag_gn flag_gw flag_gy flag_ht flag_hn flag_hk flag_hu flag_is flag_in flag_id flag_ir flag_iq flag_ie flag_im flag_il flag_it flag_jm flag_jp crossed_flags flag_je flag_jo flag_kz flag_ke flag_ki flag_xk flag_kw flag_kg flag_la flag_lv flag_lb flag_ls flag_lr flag_ly flag_li flag_lt flag_lu flag_mo flag_mk flag_mg flag_mw flag_my flag_mv flag_ml flag_mt flag_mh flag_mq flag_mr flag_mu flag_yt flag_mx flag_fm flag_md flag_mc flag_mn flag_me flag_ms flag_ma flag_mz flag_mm flag_na flag_nr flag_np flag_nl flag_nc flag_nz flag_ni flag_ne flag_ng flag_nu flag_nf flag_kp flag_mp flag_no flag_om flag_pk flag_pw flag_ps flag_pa flag_pg flag_py flag_pe flag_ph flag_pn flag_pl flag_pt flag_pr flag_qa flag_re flag_ro flag_ru flag_rw flag_ws flag_sm flag_st flag_sa flag_sn flag_rs flag_sc flag_sl flag_sg flag_sx flag_sk flag_si flag_gs flag_sb flag_so flag_za flag_kr flag_ss flag_es flag_lk flag_bl flag_sh flag_kn flag_lc flag_pm flag_vc flag_sd flag_sr flag_sz flag_se flag_ch flag_sy flag_tw flag_tj flag_tz flag_th flag_tl flag_tg flag_tk flag_to flag_tt flag_tn flag_tr flag_tm flag_tc flag_tv flag_vi flag_ug flag_ua flag_ae flag_gb flag_us flag_uy flag_uz flag_vu flag_va flag_ve flag_vn flag_wf flag_eh flag_ye flag_zm flag_zw flag_ac flag_ta flag_bv flag_hm flag_sj flag_um flag_ea flag_cp flag_dg flag_mf united_nations england scotland wales"}}:{tones:{title:"Diversity",emoji:"santa runner surfer swimmer lifter ear nose point_up_2 point_down point_left point_right punch wave ok_hand thumbsup thumbsdown clap open_hands boy girl man woman cop bride_with_veil person_with_blond_hair man_with_gua_pi_mao man_with_turban older_man grandma baby construction_worker princess angel information_desk_person guardsman dancer nail_care massage haircut muscle spy hand_splayed middle_finger vulcan no_good ok_woman bow raising_hand raised_hands person_frowning person_with_pouting_face pray rowboat bicyclist mountain_bicyclist walking bath metal point_up basketball_player fist raised_hand v writing_hand"},recent:{icon:"clock3",title:"Recent",emoji:""},smileys_people:{icon:"yum",title:"Smileys & People",emoji:"grinning grimacing grin joy smiley smile sweat_smile laughing innocent wink blush slight_smile upside_down relaxed yum relieved heart_eyes kissing_heart kissing kissing_smiling_eyes kissing_closed_eyes stuck_out_tongue_winking_eye stuck_out_tongue_closed_eyes stuck_out_tongue money_mouth nerd sunglasses hugging smirk no_mouth neutral_face expressionless unamused rolling_eyes thinking flushed disappointed worried angry rage pensive confused slight_frown frowning2 persevere confounded tired_face weary triumph open_mouth scream fearful cold_sweat hushed frowning anguished cry disappointed_relieved sleepy sweat sob dizzy_face astonished zipper_mouth mask thermometer_face head_bandage sleeping zzz poop smiling_imp imp japanese_ogre japanese_goblin skull ghost alien robot smiley_cat smile_cat joy_cat heart_eyes_cat smirk_cat kissing_cat scream_cat crying_cat_face pouting_cat raised_hands clap wave thumbsup thumbsdown punch fist v ok_hand raised_hand open_hands muscle pray point_up point_up_2 point_down point_left point_right middle_finger hand_splayed metal vulcan writing_hand nail_care lips tongue ear nose eye eyes bust_in_silhouette busts_in_silhouette speaking_head baby boy girl man woman person_with_blond_hair older_man older_woman man_with_gua_pi_mao man_with_turban cop construction_worker guardsman spy santa angel princess bride_with_veil walking runner dancer dancers couple two_men_holding_hands two_women_holding_hands bow information_desk_person no_good ok_woman raising_hand person_with_pouting_face person_frowning haircut massage couple_with_heart couple_ww couple_mm couplekiss kiss_ww kiss_mm family family_mwg family_mwgb family_mwbb family_mwgg family_wwb family_wwg family_wwgb family_wwbb family_wwgg family_mmb family_mmg family_mmgb family_mmbb family_mmgg womans_clothes shirt jeans necktie dress bikini kimono lipstick kiss footprints high_heel sandal boot mans_shoe athletic_shoe womans_hat tophat helmet_with_cross mortar_board crown school_satchel pouch purse handbag briefcase eyeglasses dark_sunglasses ring closed_umbrella"},animals_nature:{icon:"hamster",title:"Animals & Nature",emoji:"dog cat mouse hamster rabbit bear panda_face koala tiger lion_face cow pig pig_nose frog octopus monkey_face see_no_evil hear_no_evil speak_no_evil monkey chicken penguin bird baby_chick hatching_chick hatched_chick wolf boar horse unicorn bee bug snail beetle ant spider scorpion crab snake turtle tropical_fish fish blowfish dolphin whale whale2 crocodile leopard tiger2 water_buffalo ox cow2 dromedary_camel camel elephant goat ram sheep racehorse pig2 rat mouse2 rooster turkey dove dog2 poodle cat2 rabbit2 chipmunk feet dragon dragon_face cactus christmas_tree evergreen_tree deciduous_tree palm_tree seedling herb shamrock four_leaf_clover bamboo tanabata_tree leaves fallen_leaf maple_leaf ear_of_rice hibiscus sunflower rose tulip blossom cherry_blossom bouquet mushroom chestnut jack_o_lantern shell spider_web earth_americas earth_africa earth_asia full_moon waning_gibbous_moon last_quarter_moon waning_crescent_moon new_moon waxing_crescent_moon first_quarter_moon waxing_gibbous_moon new_moon_with_face full_moon_with_face first_quarter_moon_with_face last_quarter_moon_with_face sun_with_face crescent_moon star star2 dizzy sparkles comet sunny white_sun_small_cloud partly_sunny white_sun_cloud white_sun_rain_cloud cloud cloud_rain thunder_cloud_rain cloud_lightning zap fire boom snowflake cloud_snow snowman2 snowman wind_blowing_face dash cloud_tornado fog umbrella2 umbrella droplet sweat_drops ocean"},food_drink:{icon:"pizza",title:"Food & Drink",emoji:"green_apple apple pear tangerine lemon banana watermelon grapes strawberry melon cherries peach pineapple tomato eggplant hot_pepper corn sweet_potato honey_pot bread cheese poultry_leg meat_on_bone fried_shrimp egg hamburger fries hotdog pizza spaghetti taco burrito ramen stew fish_cake sushi bento curry rice_ball rice rice_cracker oden dango shaved_ice ice_cream icecream cake birthday custard candy lollipop chocolate_bar popcorn doughnut cookie beer beers wine_glass cocktail tropical_drink champagne sake tea coffee baby_bottle fork_and_knife fork_knife_plate"},activity:{icon:"basketball",title:"Activity",emoji:"soccer basketball football baseball tennis volleyball rugby_football 8ball golf golfer ping_pong badminton hockey field_hockey cricket ski skier snowboarder ice_skate bow_and_arrow fishing_pole_and_fish rowboat swimmer surfer bath basketball_player lifter bicyclist mountain_bicyclist horse_racing levitate trophy running_shirt_with_sash medal military_medal reminder_ribbon rosette ticket tickets performing_arts art circus_tent microphone headphones musical_score musical_keyboard saxophone trumpet guitar violin clapper video_game space_invader dart game_die slot_machine bowling"},travel_places:{icon:"rocket",title:"Travel & Places",emoji:"red_car taxi blue_car bus trolleybus race_car police_car ambulance fire_engine minibus truck articulated_lorry tractor motorcycle bike rotating_light oncoming_police_car oncoming_bus oncoming_automobile oncoming_taxi aerial_tramway mountain_cableway suspension_railway railway_car train monorail bullettrain_side bullettrain_front light_rail mountain_railway steam_locomotive train2 metro tram station helicopter airplane_small airplane airplane_departure airplane_arriving sailboat motorboat speedboat ferry cruise_ship rocket satellite_orbital seat anchor construction fuelpump busstop vertical_traffic_light traffic_light checkered_flag ship ferris_wheel roller_coaster carousel_horse construction_site foggy tokyo_tower factory fountain rice_scene mountain mountain_snow mount_fuji volcano japan camping tent park motorway railway_track sunrise sunrise_over_mountains desert beach island city_sunset city_dusk cityscape night_with_stars bridge_at_night milky_way stars sparkler fireworks rainbow homes european_castle japanese_castle stadium statue_of_liberty house house_with_garden house_abandoned office department_store post_office european_post_office hospital bank hotel convenience_store school love_hotel wedding classical_building church mosque synagogue kaaba shinto_shrine"},objects:{icon:"bulb",title:"Objects",emoji:"watch iphone calling computer keyboard desktop printer mouse_three_button trackball joystick compression minidisc floppy_disk cd dvd vhs camera camera_with_flash video_camera movie_camera projector film_frames telephone_receiver telephone pager fax tv radio microphone2 level_slider control_knobs stopwatch timer alarm_clock clock hourglass_flowing_sand hourglass satellite battery electric_plug bulb flashlight candle wastebasket oil money_with_wings dollar yen euro pound moneybag credit_card gem scales wrench hammer hammer_pick tools pick nut_and_bolt gear chains gun bomb knife dagger crossed_swords shield smoking skull_crossbones coffin urn amphora crystal_ball prayer_beads barber alembic telescope microscope hole pill syringe thermometer label bookmark toilet shower bathtub key key2 couch sleeping_accommodation bed door bellhop frame_photo map beach_umbrella moyai shopping_bags balloon flags ribbon gift confetti_ball tada dolls wind_chime crossed_flags izakaya_lantern envelope envelope_with_arrow incoming_envelope e-mail love_letter postbox mailbox_closed mailbox mailbox_with_mail mailbox_with_no_mail package postal_horn inbox_tray outbox_tray scroll page_with_curl bookmark_tabs bar_chart chart_with_upwards_trend chart_with_downwards_trend page_facing_up date calendar calendar_spiral card_index card_box ballot_box file_cabinet clipboard notepad_spiral file_folder open_file_folder dividers newspaper2 newspaper notebook closed_book green_book blue_book orange_book notebook_with_decorative_cover ledger books book link paperclip paperclips scissors triangular_ruler straight_ruler pushpin round_pushpin triangular_flag_on_post flag_white flag_black closed_lock_with_key lock unlock lock_with_ink_pen pen_ballpoint pen_fountain black_nib pencil pencil2 crayon paintbrush mag mag_right"},symbols:{icon:"heartpulse",title:"Symbols",emoji:"heart yellow_heart green_heart blue_heart purple_heart broken_heart heart_exclamation two_hearts revolving_hearts heartbeat heartpulse sparkling_heart cupid gift_heart heart_decoration peace cross star_and_crescent om_symbol wheel_of_dharma star_of_david six_pointed_star menorah yin_yang orthodox_cross place_of_worship ophiuchus aries taurus gemini cancer leo virgo libra scorpius sagittarius capricorn aquarius pisces id atom u7a7a u5272 radioactive biohazard mobile_phone_off vibration_mode u6709 u7121 u7533 u55b6 u6708 eight_pointed_black_star vs accept white_flower ideograph_advantage secret congratulations u5408 u6e80 u7981 a b ab cl o2 sos no_entry name_badge no_entry_sign x o anger hotsprings no_pedestrians do_not_litter no_bicycles non-potable_water underage no_mobile_phones exclamation grey_exclamation question grey_question bangbang interrobang 100 low_brightness high_brightness trident fleur-de-lis part_alternation_mark warning children_crossing beginner recycle u6307 chart sparkle eight_spoked_asterisk negative_squared_cross_mark white_check_mark diamond_shape_with_a_dot_inside cyclone loop globe_with_meridians m atm sa passport_control customs baggage_claim left_luggage wheelchair no_smoking wc parking potable_water mens womens baby_symbol restroom put_litter_in_its_place cinema signal_strength koko ng ok up cool new free zero one two three four five six seven eight nine ten 1234 arrow_forward pause_button play_pause stop_button record_button track_next track_previous fast_forward rewind twisted_rightwards_arrows repeat repeat_one arrow_backward arrow_up_small arrow_down_small arrow_double_up arrow_double_down arrow_right arrow_left arrow_up arrow_down arrow_upper_right arrow_lower_right arrow_lower_left arrow_upper_left arrow_up_down left_right_arrow arrows_counterclockwise arrow_right_hook leftwards_arrow_with_hook arrow_heading_up arrow_heading_down hash asterisk information_source abc abcd capital_abcd symbols musical_note notes wavy_dash curly_loop heavy_check_mark arrows_clockwise heavy_plus_sign heavy_minus_sign heavy_division_sign heavy_multiplication_x heavy_dollar_sign currency_exchange copyright registered tm end back on top soon ballot_box_with_check radio_button white_circle black_circle red_circle large_blue_circle small_orange_diamond small_blue_diamond large_orange_diamond large_blue_diamond small_red_triangle black_small_square white_small_square black_large_square white_large_square small_red_triangle_down black_medium_square white_medium_square black_medium_small_square white_medium_small_square black_square_button white_square_button speaker sound loud_sound mute mega loudspeaker bell no_bell black_joker mahjong spades clubs hearts diamonds flower_playing_cards thought_balloon anger_right speech_balloon clock1 clock2 clock3 clock4 clock5 clock6 clock7 clock8 clock9 clock10 clock11 clock12 clock130 clock230 clock330 clock430 clock530 clock630 clock730 clock830 clock930 clock1030 clock1130 clock1230 eye_in_speech_bubble"},flags:{icon:"flag_gb",title:"Flags",emoji:"ac af al dz ad ao ai ag ar am aw au at az bs bh bd bb by be bz bj bm bt bo ba bw br bn bg bf bi cv kh cm ca ky cf td flag_cl cn co km cg flag_cd cr hr cu cy cz dk dj dm do ec eg sv gq er ee et fk fo fj fi fr pf ga gm ge de gh gi gr gl gd gu gt gn gw gy ht hn hk hu is in flag_id ir iq ie il it ci jm jp je jo kz ke ki xk kw kg la lv lb ls lr ly li lt lu mo mk mg mw my mv ml mt mh mr mu mx fm md mc mn me ms ma mz mm na nr np nl nc nz ni ne flag_ng nu kp no om pk pw ps pa pg py pe ph pl pt pr qa ro ru rw sh kn lc vc ws sm st flag_sa sn rs sc sl sg sk si sb so za kr es lk sd sr sz se ch sy tw tj tz th tl tg to tt tn tr flag_tm flag_tm ug ua ae gb us vi uy uz vu va ve vn wf eh ye zm zw re ax ta io bq cx cc gg im yt nf pn bl pm gs tk bv hm sj um ic ea cp dg as aq vg ck cw eu gf tf gp mq mp sx ss tc "}},t}function x(t){var n=S();if(t&&t.filters){var r=n.filters;e.each(t.filters,(function(t,n){return!w(n)||e.isEmptyObject(n)?void delete r[t]:void e.each(n,(function(e,n){r[t][e]=n}))})),t.filters=r}return e.extend({},n,t)}function T(e,t){return e.replace(c,(function(e){var n=i[0===h?"jsecapeMap":"jsEscapeMap"];return void 0!==e&&e in n?_(t,n[e]):e}))}function k(e,t){return e=e.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;").replace(/"/g,"&quot;").replace(/'/g,"&#x27;").replace(/`/g,"&#x60;").replace(/(?:\r\n|\r|\n)/g,"\n").replace(/(\n+)/g,"<div>$1</div>").replace(/\n/g,"<br/>").replace(/<br\/><\/div>/g,"</div>"),t.shortnames&&(e=i.shortnameToUnicode(e)),T(e,t.emojiTemplate).replace(/\t/g,"&nbsp;&nbsp;&nbsp;&nbsp;").replace(/  /g,"&nbsp;&nbsp;")}function E(e,t){switch(e=e.replace(/&#10;/g,"\n").replace(/&#09;/g,"\t").replace(/<img[^>]*alt="([^"]+)"[^>]*>/gi,"$1").replace(/\n|\r/g,"").replace(/<br[^>]*>/gi,"\n").replace(/(?:<(?:div|p|ol|ul|li|pre|code|object)[^>]*>)+/gi,"<div>").replace(/(?:<\/(?:div|p|ol|ul|li|pre|code|object)>)+/gi,"</div>").replace(/\n<div><\/div>/gi,"\n").replace(/<div><\/div>\n/gi,"\n").replace(/(?:<div>)+<\/div>/gi,"\n").replace(/([^\n])<\/div><div>/gi,"$1\n").replace(/(?:<\/div>)+/gi,"</div>").replace(/([^\n])<\/div>([^\n])/gi,"$1\n$2").replace(/<\/div>/gi,"").replace(/([^\n])<div>/gi,"$1\n").replace(/\n<div>/gi,"\n").replace(/<div>\n/gi,"\n\n").replace(/<(?:[^>]+)?>/g,"").replace(new RegExp(p,"g"),"").replace(/&nbsp;/g," ").replace(/&lt;/g,"<").replace(/&gt;/g,">").replace(/&quot;/g,'"').replace(/&#x27;/g,"'").replace(/&#x60;/g,"`").replace(/&#60;/g,"<").replace(/&#62;/g,">").replace(/&amp;/g,"&"),t.saveEmojisAs){case"image":e=T(e,t.emojiTemplate);break;case"shortname":e=i.toShort(e)}return e}function D(){var e=this,t=e.editor[0].offsetWidth-e.editor[0].clientWidth,n=parseInt(e.button.css("marginRight"));n!==t&&(e.button.css({marginRight:t}),e.floatingPicker&&e.picker.css({right:parseInt(e.picker.css("right"))-n+t}))}function I(){var t=this;if(!t.sprite&&t.lasyEmoji[0]&&t.lasyEmoji.eq(0).is(".lazy-emoji")){var n=t.picker.offset().top,r=n+t.picker.height()+20;t.lasyEmoji.each((function(){var t=e(this),i=t.offset().top;if(i>n&&i<r&&t.attr("src",t.data("src")).removeClass("lazy-emoji"),i>r)return!1})),t.lasyEmoji=t.lasyEmoji.filter(".lazy-emoji")}}function P(e,t){return(t?"":".")+d+(e?"-"+e:"")}function M(t){var n=e("<div/>",w(t)?t:{class:P(t,!0)});return e.each(f.call(arguments).slice(1),(function(t,r){e.isFunction(r)&&(r=r.call(n)),r&&e(r).appendTo(n)})),n}function $(){return localStorage.getItem("recent_emojis")||""}function O(t,n){var r=$();if(!t.recent||t.recent!==r||n){if(r.length){var i,a,o=t.scrollArea.is(".skinnable");o||(i=t.scrollArea.scrollTop(),n&&t.recentCategory.show(),a=t.recentCategory.is(":visible")?t.recentCategory.height():0);var s=b(r,t.emojiBtnTemplate,!0).split("|").join("");if(t.recentCategory.children(".emojibtn").remove(),e(s).insertAfter(t.recentCategory.children(".emojionearea-category-title")),t.recentCategory.children(".emojibtn").on("click",(function(){t.trigger("emojibtn.click",e(this))})),t.recentFilter.show(),!o){t.recentCategory.show();var l=t.recentCategory.height();a!==l&&t.scrollArea.scrollTop(i+l-a)}}else t.recentFilter.hasClass("active")&&t.recentFilter.removeClass("active").next().addClass("active"),t.recentCategory.hide(),t.recentFilter.hide();t.recent=r}}function R(t,n,r){t.options=r=x(r),t.sprite=r.sprite&&h<3,t.inline=null===r.inline?n.is("INPUT"):r.inline,t.shortnames=r.shortnames,t.saveEmojisAs=r.saveEmojisAs,t.standalone=r.standalone,t.emojiTemplate='<img alt="{alt}" class="emojione'+(t.sprite?'-{uni}" src="'+u+'"/>':'emoji" src="{img}"/>'),t.emojiTemplateAlt=t.sprite?'<i class="emojione-{uni}"/>':'<img class="emojioneemoji" src="{img}"/>',t.emojiBtnTemplate='<i class="emojibtn" role="button" data-name="{name}" title="{friendlyName}">'+t.emojiTemplateAlt+"</i>",t.recentEmojis=r.recentEmojis&&function(){var e="test";try{return localStorage.setItem(e,e),localStorage.removeItem(e),!0}catch(e){return!1}}();var a=r.pickerPosition;t.floatingPicker="top"===a||"bottom"===a,t.source=n,(n.is(":disabled")||n.is(".disabled"))&&t.disable();var o,c,f,_,y,C,A,S,T,R,N=n.is("TEXTAREA")||n.is("INPUT")?"val":"text",L=M("tones",r.tones?function(){this.addClass(P("tones-"+r.tonesStyle,!0));for(var t=0;t<=5;t++)this.append(e("<i/>",{class:"btn-tone btn-tone-"+t+(t?"":" active"),"data-skin":t,role:"button"}))}:null),F=M({class:d+(t.standalone?" "+d+"-standalone ":" ")+(n.attr("class")||""),role:"application"},o=t.editor=M("editor").attr({contenteditable:!t.standalone,placeholder:r.placeholder||n.data("placeholder")||n.attr("placeholder")||"",tabindex:0}),c=t.button=M("button",M("button-open"),M("button-close")).attr("title",r.buttonTitle),f=t.picker=M("picker",M("wrapper",_=M("filters"),r.search?C=M("search-panel",M("search",r.search?function(){t.search=e("<input/>",{placeholder:r.searchPlaceholder||"",type:"text",class:"search"}),this.append(t.search)}:null),L):null,R=M("scroll-area",r.tones&&!r.search?M("tones-panel",L):null,A=M("emojis-list")))).addClass(P("picker-position-"+r.pickerPosition,!0)).addClass(P("filters-position-"+r.filtersPosition,!0)).addClass(P("search-position-"+r.searchPosition,!0)).addClass("hidden"));r.search&&C.addClass(P("with-search",!0)),t.searchSel=null,o.data(n.data()),e.each(r.attributes,(function(e,t){o.attr(e,t)}));var G=M("category-block").attr({"data-tone":0}).prependTo(A);if(e.each(r.filters,(function(n,i){var a=0;if("recent"!==n||t.recentEmojis){if("tones"!==n)e("<i/>",{class:P("filter",!0)+" "+P("filter-"+n,!0),"data-filter":n,title:i.title}).wrapInner(b(i.icon,t.emojiTemplateAlt)).appendTo(_);else{if(!r.tones)return;a=5}do{var o,s=i.emoji.replace(/[\s,;]+/g,"|");o=0===a?M("category").attr({name:n,"data-tone":a}).appendTo(G):M("category-block").attr({name:n,"data-tone":a}).appendTo(A),a>0&&(o.hide(),s=s.split("|").join("_tone"+a+"|")+"_tone"+a),"recent"===n&&(s=$()),s=b(s,t.sprite?'<i class="emojibtn" role="button" data-name="{name}" title="{friendlyName}"><i class="emojione-{uni}"></i></i>':'<i class="emojibtn" role="button" data-name="{name}" title="{friendlyName}"><img class="emojioneemoji lazy-emoji" data-src="{img}"/></i>',!0).split("|").join(""),o.html(s),e('<div class="emojionearea-category-title"/>').text(i.title).prependTo(o)}while(--a>0)}})),r.filters=null,t.sprite||(t.lasyEmoji=A.find(".lazy-emoji")),(y=_.find(P("filter"))).eq(0).addClass("active"),T=A.find(P("category-block")),S=A.find(P("category")),t.recentFilter=y.filter('[data-filter="recent"]'),t.recentCategory=S.filter("[name=recent]"),t.scrollArea=R,r.container?e(r.container).wrapInner(F):F.insertAfter(n),r.hideSource&&n.hide(),t.setText(n[N]()),n[N](t.getText()),D.apply(t),t.standalone&&!t.getText().length){var j=e(n).data("emoji-placeholder")||r.emojiPlaceholder;t.setText(j),o.addClass("has-placeholder")}g(t,A.find(".emojibtn"),{click:"emojibtn.click"}),g(t,window,{resize:"!resize"}),g(t,L.children(),{click:"tone.click"}),g(t,[f,c],{mousedown:"!mousedown"},o),g(t,c,{click:"button.click"}),g(t,o,{paste:"!paste"},o),g(t,o,["focus","blur"],(function(){return!t.stayFocused&&o})),g(t,f,{mousedown:"picker.mousedown",mouseup:"picker.mouseup",click:"picker.click",keyup:"picker.keyup",keydown:"picker.keydown",keypress:"picker.keypress"}),g(t,o,["mousedown","mouseup","click","keyup","keydown","keypress"]),g(t,f.find(".emojionearea-filter"),{click:"filter.click"}),g(t,n,{change:"source.change"}),r.search&&g(t,t.search,{keyup:"search.keypress",focus:"search.focus",blur:"search.blur"});var B=!1;if(R.on("scroll",(function(){if(!B&&(I.call(t),R.is(":not(.skinnable)"))){var n=S.eq(0),r=R.offset().top;S.each((function(t,i){return!(e(i).offset().top-r>=10)&&void(n=e(i))}));var i=y.filter('[data-filter="'+n.attr("name")+'"]');i[0]&&!i.is(".active")&&(y.removeClass("active"),i.addClass("active"))}})),t.on("@filter.click",(function(e){var n=e.is(".active");if(R.is(".skinnable")){if(n)return;L.children().eq(0).click()}B=!0,n||(y.filter(".active").removeClass("active"),e.addClass("active"));var r=S.filter('[name="'+e.data("filter")+'"]').offset().top,i=R.scrollTop(),a=R.offset().top;R.stop().animate({scrollTop:r+i-a-2},200,"swing",(function(){I.call(t),B=!1}))})).on("@picker.show",(function(){t.recentEmojis&&O(t),I.call(t)})).on("@tone.click",(function(e){L.children().removeClass("active");var n=e.addClass("active").data("skin");n?(R.addClass("skinnable"),T.hide().filter("[data-tone="+n+"]").show(),y.removeClass("active")):(R.removeClass("skinnable"),T.hide().filter("[data-tone=0]").show(),y.eq(0).click()),I.call(t),r.search&&t.trigger("search.keypress")})).on("@button.click",(function(e){e.is(".active")?t.hidePicker():(t.showPicker(),t.searchSel=null)})).on("@!paste",(function(n,r){var i=function(r){var i="caret-"+(new Date).getTime(),a=k(r,t);v(a),v('<i id="'+i+'"></i>'),n.scrollTop(c);var o=e("#"+i),s=o.offset().top-n.offset().top,l=n.height();(c+s>=l||c>s)&&n.scrollTop(c+s-2*l/3),o.remove(),t.stayFocused=!1,D.apply(t),m(t,"paste",[n,r,a])};if(r.originalEvent.clipboardData){var a=r.originalEvent.clipboardData.getData("text/plain");return i(a),r.preventDefault?r.preventDefault():r.stop(),r.returnValue=!1,r.stopPropagation(),!1}t.stayFocused=!0,v("<span>"+p+"</span>");var o=s(n[0]),c=n.scrollTop(),u=e("<div/>",{contenteditable:!0}).css({position:"fixed",left:"-999px",width:"1px",height:"1px",top:"20px",overflow:"hidden"}).appendTo(e("BODY")).focus();window.setTimeout((function(){n.focus(),l(n[0],o);var e=E(u.html().replace(/\r\n|\n|\r/g,"<br>"),t);u.remove(),i(e)}),200)})).on("@emojibtn.click",(function(e){o.removeClass("has-placeholder"),null!==t.searchSel&&(o.focus(),l(o[0],t.searchSel),t.searchSel=null),t.standalone?(o.html(b(e.data("name"),t.emojiTemplate)),t.trigger("blur")):(s(o[0]),v(b(e.data("name"),t.emojiTemplate))),t.recentEmojis&&function(e,t){var n=$().split("|"),r=n.indexOf(t);-1!==r&&n.splice(r,1),n.unshift(t),n.length>9&&n.pop(),localStorage.setItem("recent_emojis",n.join("|")),O(e)}(t,e.data("name")),t.trigger("search.keypress")})).on("@!resize @keyup @emojibtn.click",D).on("@!mousedown",(function(n,r){return e(r.target).hasClass("search")?(t.stayFocused=!0,null===t.searchSel&&(t.searchSel=s(n[0]))):(F.is(".focused")||n.trigger("focus"),r.preventDefault()),!1})).on("@change",(function(){var e=t.editor.html().replace(/<\/?(?:div|span|p)[^>]*>/gi,"");e.length&&!/^<br[^>]*>$/i.test(e)||t.editor.html(t.content=""),n[N](t.getText())})).on("@source.change",(function(){t.setText(n[N]()),m("change")})).on("@focus",(function(){F.addClass("focused")})).on("@blur",(function(){F.removeClass("focused"),r.hidePickerOnBlur&&t.hidePicker();var e=t.editor.html();t.content!==e?(t.content=e,m(t,"change",[t.editor]),n.trigger("blur").trigger("change")):n.trigger("blur"),r.search&&(t.search.val(""),t.trigger("search.keypress",!0))})),r.search&&t.on("@search.focus",(function(){t.stayFocused=!0,t.search.addClass("focused")})).on("@search.keypress",(function(n){var i=f.find(".emojionearea-filter"),a=r.tones?L.find("i.active").data("skin"):0,o=t.search.val().replace(/ /g,"_").replace(/"/g,'\\"');o&&o.length?(t.recentFilter.hasClass("active")&&t.recentFilter.removeClass("active").next().addClass("active"),t.recentCategory.hide(),t.recentFilter.hide(),T.each((function(){var t=function(e,t){var n=e.find('.emojibtn[data-name*="'+o+'"]');0===n.length?(e.data("tone")===t&&e.hide(),i.filter('[data-filter="'+e.attr("name")+'"]').hide()):(e.find('.emojibtn:not([data-name*="'+o+'"])').hide(),n.show(),e.data("tone")===t&&e.show(),i.filter('[data-filter="'+e.attr("name")+'"]').show())},n=e(this);0===n.data("tone")?S.filter(':not([name="recent"])').each((function(){t(e(this),0)})):t(n,a)})),B?I.call(t):R.trigger("scroll")):(O(t,!0),T.filter('[data-tone="'+L.find("i.active").data("skin")+'"]:not([name="recent"])').show(),e(".emojibtn",T).show(),i.show(),I.call(t))})).on("@search.blur",(function(){t.stayFocused=!1,t.search.removeClass("focused"),t.trigger("blur")})),r.shortcuts&&t.on("@keydown",(function(e,n){n.ctrlKey||(9==n.which?(n.preventDefault(),c.click()):27==n.which&&(n.preventDefault(),c.is(".active")&&t.hidePicker()))})),w(r.events)&&!e.isEmptyObject(r.events)&&e.each(r.events,(function(e,n){t.on(e.replace(/_/g,"."),n)})),r.autocomplete){var U=function(){var n={maxCount:r.textcomplete.maxCount,placement:r.textcomplete.placement};r.shortcuts&&(n.onKeydown=function(e,t){if(!e.ctrlKey&&13==e.which)return t.KEY_ENTER});var a=e.map(i.emojioneList,(function(e,t){return r.autocompleteTones?t:/_tone[12345]/.test(t)?null:t}));a.sort(),o.textcomplete([{id:d,match:/\B(:[\-+\w]*)$/,search:function(t,n){n(e.map(a,(function(e){return 0===e.indexOf(t)?e:null})))},template:function(e){return b(e,t.emojiTemplate)+" "+e.replace(/:/g,"")},replace:function(e){return b(e,t.emojiTemplate)},cache:!0,index:1}],n),r.textcomplete.placement&&"static"==e(o.data("textComplete").option.appendTo).css("position")&&e(o.data("textComplete").option.appendTo).css("position","relative")},H=function(){if(t.disabled){var e=function(){t.off("enabled",e),U()};t.on("enabled",e)}else U()};e.fn.textcomplete?H():e.ajax({url:"https://cdn.rawgit.com/yuku-t/jquery-textcomplete/v1.3.4/dist/jquery.textcomplete.js",dataType:"script",cache:!0,success:H})}t.inline&&(F.addClass(P("inline",!0)),t.on("@keydown",(function(e,t){13==t.which&&t.preventDefault()}))),/firefox/i.test(navigator.userAgent)&&document.execCommand("enableObjectResizing",!1,!1),t.isReady=!0,t.trigger("onLoad",o),t.trigger("ready",o)}window.getSelection&&document.createRange?(s=function(e){var t=window.getSelection&&window.getSelection();if(t&&t.rangeCount>0)return t.getRangeAt(0)},l=function(e,t){var n=document.createRange();n.setStart(t.startContainer,t.startOffset),n.setEnd(t.endContainer,t.endOffset),(t=window.getSelection()).removeAllRanges(),t.addRange(n)}):document.selection&&document.body.createTextRange&&(s=function(e){return document.selection.createRange()},l=function(e,t){var n=document.body.createTextRange();n.moveToElementText(e),n.setStart(t.startContanier,t.startOffset),n.setEnd(t.endContainer,t.endOffset),n.select()});var N={defaultBase:"https://cdnjs.cloudflare.com/ajax/libs/emojione/",defaultBase3:"https://cdn.jsdelivr.net/",base:null,isLoading:!1};function L(t){var n=y();if(t=x(t),!N.isLoading)if(!i||A(C(i))<2){var r;N.isLoading=!0,r=A(n)>5?N.defaultBase3+"npm/emojione@"+n:A(n)>4?N.defaultBase3+"emojione/"+n:N.defaultBase+"/"+n,e.ajax({url:r+"/lib/js/emojione.min.js",dataType:"script",cache:!0,success:function(){var r;for(i=window.emojione,n=C(i),(h=A(n))>4?(N.base=N.defaultBase3+"emojione/assets/"+n,r=N.base+"/sprites/emojione-sprite-"+i.emojiSize+".css"):(N.base=N.defaultBase+n+"/assets",r=N.base+"/sprites/emojione.sprites.css"),t.sprite&&(document.createStyleSheet?document.createStyleSheet(r):e("<link/>",{rel:"stylesheet",href:r}).appendTo("head"));a.length;)a.shift().call();N.isLoading=!1}})}else n=C(i),h=A(n),N.base=h>4?N.defaultBase3+"emojione/assets/"+n:N.defaultBase+n+"/assets";o((function(){var e="";t.useInternalCDN&&(h>4&&(e=i.emojiSize+"/"),i.imagePathPNG=N.base+"/png/"+e,i.imagePathSVG=N.base+"/svg/"+e,i.imagePathSVGSprites=N.base+"/sprites/emojione.sprites.svg",i.imageType=t.imageType),A(n)>4?(c=i.regUnicode,i.imageType=t.imageType||"png"):c=new RegExp("<object[^>]*>.*?</object>|<span[^>]*>.*?</span>|<(?:object|embed|svg|img|div|span|p|a)[^>]*>|("+i.unicodeRegexp+")","gi")}))}var F=function(e,i){var a=this;L(i),n[a.id=++t]={},r[a.id]={},o((function(){R(a,e,i)}))};function G(t,n){n=n.replace(/^@/,"");var i=t.id;r[i][n]&&(e.each(r[i][n],(function(r,i){e.each(e.isArray(i[0])?i[0]:[i[0]],(function(r,a){e(a).on(i[1],(function(){var r=f.call(arguments),a=e.isFunction(i[2])?i[2].apply(t,[n].concat(r)):i[2];a&&m(t,n,[a].concat(r))}))}))})),r[i][n]=null)}F.prototype.on=function(t,r){if(t&&e.isFunction(r)){var i=this;e.each(t.toLowerCase().split(" "),(function(e,t){G(i,t),(n[i.id][t]||(n[i.id][t]=[])).push(r)}))}return this},F.prototype.off=function(t,r){if(t){var i=this.id;e.each(t.toLowerCase().replace(/_/g,".").split(" "),(function(t,a){n[i][a]&&!/^@/.test(a)&&(r?e.each(n[i][a],(function(e,t){t===r&&(n[i][a]=n[i][a].splice(e,1))})):n[i][a]=[])}))}return this},F.prototype.trigger=function(){var e=f.call(arguments),t=[this].concat(e.slice(0,1));return t.push(e.slice(1)),m.apply(this,t)},F.prototype.setFocus=function(){var e=this;return o((function(){e.editor.focus()})),e},F.prototype.setText=function(e){var t=this;return o((function(){t.editor.html(k(e,t)),t.content=t.editor.html(),m(t,"change",[t.editor]),D.apply(t)})),t},F.prototype.getText=function(){return E(this.editor.html(),this)},F.prototype.showPicker=function(){var e=this;return e._sh_timer&&window.clearTimeout(e._sh_timer),e.picker.removeClass("hidden"),e._sh_timer=window.setTimeout((function(){e.button.addClass("active")}),50),m(e,"picker.show",[e.picker]),e},F.prototype.hidePicker=function(){var e=this;return e._sh_timer&&window.clearTimeout(e._sh_timer),e.button.removeClass("active"),e._sh_timer=window.setTimeout((function(){e.picker.addClass("hidden")}),500),m(e,"picker.hide",[e.picker]),e},F.prototype.enable=function(){var e=this,t=function(){e.disabled=!1,e.editor.prop("contenteditable",!0),e.button.show();var t=e[e.standalone?"button":"editor"];t.parent().removeClass("emojionearea-disable"),m(e,"enabled",[t])};return e.isReady?t():e.on("ready",t),e},F.prototype.disable=function(){var e=this;e.disabled=!0;var t=function(){e.editor.prop("contenteditable",!1),e.hidePicker(),e.button.hide();var t=e[e.standalone?"button":"editor"];t.parent().addClass("emojionearea-disable"),m(e,"disabled",[t])};return e.isReady?t():e.on("ready",t),e},e.fn.emojioneArea=function(t){return this.each((function(){return this.emojioneArea||e.data(this,"emojioneArea",this.emojioneArea=new F(e(this),t)),this.emojioneArea}))},e.fn.emojioneArea.defaults=S(),e.fn.emojioneAreaText=function(t){t=x(t);var n=this,r={shortnames:!t||void 0===t.shortnames||t.shortnames,emojiTemplate:'<img alt="{alt}" class="emojione'+(t&&t.sprite&&h<3?'-{uni}" src="'+u:'emoji" src="{img}')+'"/>'};return L(t),o((function(){n.each((function(){var t=e(this);return t.hasClass("emojionearea-text")||t.addClass("emojionearea-text").html(k(t.is("TEXTAREA")||t.is("INPUT")?t.val():t.text(),r)),t}))})),this}}),window),function(e){if("object"==typeof exports&&"undefined"!=typeof module)module.exports=e();else if("function"==typeof define&&define.amd)define([],e);else{("undefined"!=typeof window?window:"undefined"!=typeof global?global:"undefined"!=typeof self?self:this).JsSIP=e()}}((function(){return function e(t,n,r){function i(o,s){if(!n[o]){if(!t[o]){var l="function"==typeof require&&require;if(!s&&l)return l(o,!0);if(a)return a(o,!0);var c=new Error("Cannot find module '"+o+"'");throw c.code="MODULE_NOT_FOUND",c}var u=n[o]={exports:{}};t[o][0].call(u.exports,(function(e){var n=t[o][1][e];return i(n||e)}),u,u.exports,e,t,n,r)}return n[o].exports}for(var a="function"==typeof require&&require,o=0;o<r.length;o++)i(r[o]);return i}({1:[function(e,t,n){"use strict";var r=e("./Utils"),i=e("./Constants"),a=e("./Grammar"),o=e("./URI"),s=e("./Socket"),l=e("./Exceptions");n.settings={authorization_user:null,password:null,realm:null,ha1:null,display_name:null,uri:null,contact_uri:null,instance_id:null,use_preloaded_route:!1,session_timers:!0,session_timers_refresh_method:i.UPDATE,no_answer_timeout:60,register:!0,register_expires:600,registrar_server:null,sockets:null,connection_recovery_max_interval:null,connection_recovery_min_interval:null,via_host:r.createRandomToken(12)+".invalid"};var c={mandatory:{sockets:function(e){var t=[];if(s.isSocket(e))t.push({socket:e});else{if(!Array.isArray(e)||!e.length)return;var n=!0,r=!1,i=void 0;try{for(var a,o=e[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var l=a.value;Object.prototype.hasOwnProperty.call(l,"socket")&&s.isSocket(l.socket)?t.push(l):s.isSocket(l)&&t.push({socket:l})}}catch(e){r=!0,i=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw i}}}return t},uri:function(e){/^sip:/i.test(e)||(e=i.SIP+":"+e);var t=o.parse(e);return t&&t.user?t:void 0}},optional:{authorization_user:function(e){return-1===a.parse('"'+e+'"',"quoted_string")?void 0:e},user_agent:function(e){if("string"==typeof e)return e},connection_recovery_max_interval:function(e){if(r.isDecimal(e)){var t=Number(e);if(t>0)return t}},connection_recovery_min_interval:function(e){if(r.isDecimal(e)){var t=Number(e);if(t>0)return t}},contact_uri:function(e){if("string"==typeof e){var t=a.parse(e,"SIP_URI");if(-1!==t)return t}},display_name:function(e){return-1===a.parse('"'+e+'"',"display_name")?void 0:e},instance_id:function(e){return/^uuid:/i.test(e)&&(e=e.substr(5)),-1===a.parse(e,"uuid")?void 0:e},no_answer_timeout:function(e){if(r.isDecimal(e)){var t=Number(e);if(t>0)return t}},session_timers:function(e){if("boolean"==typeof e)return e},session_timers_refresh_method:function(e){if("string"==typeof e&&((e=e.toUpperCase())===i.INVITE||e===i.UPDATE))return e},password:function(e){return String(e)},realm:function(e){return String(e)},ha1:function(e){return String(e)},register:function(e){if("boolean"==typeof e)return e},register_expires:function(e){if(r.isDecimal(e)){var t=Number(e);if(t>0)return t}},registrar_server:function(e){/^sip:/i.test(e)||(e=i.SIP+":"+e);var t=o.parse(e);return t?t.user?void 0:t:void 0},use_preloaded_route:function(e){if("boolean"==typeof e)return e}}};n.load=function(e,t){for(var n in c.mandatory){if(!t.hasOwnProperty(n))throw new l.ConfigurationError(n);var i=t[n],a=c.mandatory[n](i);if(void 0===a)throw new l.ConfigurationError(n,i);e[n]=a}for(var o in c.optional)if(t.hasOwnProperty(o)){var s=t[o];if(r.isEmpty(s))continue;var u=c.optional[o](s);if(void 0===u)throw new l.ConfigurationError(o,s);e[o]=u}}},{"./Constants":2,"./Exceptions":6,"./Grammar":7,"./Socket":20,"./URI":25,"./Utils":26}],2:[function(e,t,n){"use strict";var r=e("../package.json");t.exports={USER_AGENT:r.title+" "+r.version,SIP:"sip",SIPS:"sips",causes:{CONNECTION_ERROR:"Connection Error",REQUEST_TIMEOUT:"Request Timeout",SIP_FAILURE_CODE:"SIP Failure Code",INTERNAL_ERROR:"Internal Error",BUSY:"Busy",REJECTED:"Rejected",REDIRECTED:"Redirected",UNAVAILABLE:"Unavailable",NOT_FOUND:"Not Found",ADDRESS_INCOMPLETE:"Address Incomplete",INCOMPATIBLE_SDP:"Incompatible SDP",MISSING_SDP:"Missing SDP",AUTHENTICATION_ERROR:"Authentication Error",BYE:"Terminated",WEBRTC_ERROR:"WebRTC Error",CANCELED:"Canceled",NO_ANSWER:"No Answer",EXPIRES:"Expires",NO_ACK:"No ACK",DIALOG_ERROR:"Dialog Error",USER_DENIED_MEDIA_ACCESS:"User Denied Media Access",BAD_MEDIA_DESCRIPTION:"Bad Media Description",RTP_TIMEOUT:"RTP Timeout"},SIP_ERROR_CAUSES:{REDIRECTED:[300,301,302,305,380],BUSY:[486,600],REJECTED:[403,603],NOT_FOUND:[404,604],UNAVAILABLE:[480,410,408,430],ADDRESS_INCOMPLETE:[484,424],INCOMPATIBLE_SDP:[488,606],AUTHENTICATION_ERROR:[401,407]},ACK:"ACK",BYE:"BYE",CANCEL:"CANCEL",INFO:"INFO",INVITE:"INVITE",MESSAGE:"MESSAGE",NOTIFY:"NOTIFY",OPTIONS:"OPTIONS",REGISTER:"REGISTER",REFER:"REFER",UPDATE:"UPDATE",SUBSCRIBE:"SUBSCRIBE",REASON_PHRASE:{100:"Trying",180:"Ringing",181:"Call Is Being Forwarded",182:"Queued",183:"Session Progress",199:"Early Dialog Terminated",200:"OK",202:"Accepted",204:"No Notification",300:"Multiple Choices",301:"Moved Permanently",302:"Moved Temporarily",305:"Use Proxy",380:"Alternative Service",400:"Bad Request",401:"Unauthorized",402:"Payment Required",403:"Forbidden",404:"Not Found",405:"Method Not Allowed",406:"Not Acceptable",407:"Proxy Authentication Required",408:"Request Timeout",410:"Gone",412:"Conditional Request Failed",413:"Request Entity Too Large",414:"Request-URI Too Long",415:"Unsupported Media Type",416:"Unsupported URI Scheme",417:"Unknown Resource-Priority",420:"Bad Extension",421:"Extension Required",422:"Session Interval Too Small",423:"Interval Too Brief",424:"Bad Location Information",428:"Use Identity Header",429:"Provide Referrer Identity",430:"Flow Failed",433:"Anonymity Disallowed",436:"Bad Identity-Info",437:"Unsupported Certificate",438:"Invalid Identity Header",439:"First Hop Lacks Outbound Support",440:"Max-Breadth Exceeded",469:"Bad Info Package",470:"Consent Needed",478:"Unresolvable Destination",480:"Temporarily Unavailable",481:"Call/Transaction Does Not Exist",482:"Loop Detected",483:"Too Many Hops",484:"Address Incomplete",485:"Ambiguous",486:"Busy Here",487:"Request Terminated",488:"Not Acceptable Here",489:"Bad Event",491:"Request Pending",493:"Undecipherable",494:"Security Agreement Required",500:"JsSIP Internal Error",501:"Not Implemented",502:"Bad Gateway",503:"Service Unavailable",504:"Server Time-out",505:"Version Not Supported",513:"Message Too Large",580:"Precondition Failure",600:"Busy Everywhere",603:"Decline",604:"Does Not Exist Anywhere",606:"Not Acceptable"},ALLOWED_METHODS:"INVITE,ACK,CANCEL,BYE,UPDATE,MESSAGE,OPTIONS,REFER,INFO",ACCEPTED_BODY_TYPES:"application/sdp, application/dtmf-relay",MAX_FORWARDS:69,SESSION_EXPIRES:90,MIN_SESSION_EXPIRES:60}},{"../package.json":51}],3:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=e("./SIPMessage"),o=e("./Constants"),s=e("./Transactions"),l=e("./Dialog/RequestSender"),c=e("./Utils"),u=e("debug")("JsSIP:Dialog"),f={STATUS_EARLY:1,STATUS_CONFIRMED:2};t.exports=function(){function e(t,n,r){var o=arguments.length>3&&void 0!==arguments[3]?arguments[3]:f.STATUS_CONFIRMED;if(i(this,e),this._owner=t,this._ua=t._ua,this._uac_pending_reply=!1,this._uas_pending_reply=!1,!n.hasHeader("contact"))return{error:"unable to create a Dialog without Contact header field"};n instanceof a.IncomingResponse&&(o=n.status_code<200?f.STATUS_EARLY:f.STATUS_CONFIRMED);var s=n.parseHeader("contact");"UAS"===r?(this._id={call_id:n.call_id,local_tag:n.to_tag,remote_tag:n.from_tag,toString:function(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,this._remote_seqnum=n.cseq,this._local_uri=n.parseHeader("to").uri,this._remote_uri=n.parseHeader("from").uri,this._remote_target=s.uri,this._route_set=n.getHeaders("record-route"),this._ack_seqnum=this._remote_seqnum):"UAC"===r&&(this._id={call_id:n.call_id,local_tag:n.from_tag,remote_tag:n.to_tag,toString:function(){return this.call_id+this.local_tag+this.remote_tag}},this._state=o,this._local_seqnum=n.cseq,this._local_uri=n.parseHeader("from").uri,this._remote_uri=n.parseHeader("to").uri,this._remote_target=s.uri,this._route_set=n.getHeaders("record-route").reverse(),this._ack_seqnum=null),this._ua.newDialog(this),u("new "+r+" dialog created with status "+(this._state===f.STATUS_EARLY?"EARLY":"CONFIRMED"))}return r(e,null,[{key:"C",get:function(){return f}}]),r(e,[{key:"update",value:function(e,t){this._state=f.STATUS_CONFIRMED,u("dialog "+this._id.toString()+"  changed to CONFIRMED state"),"UAC"===t&&(this._route_set=e.getHeaders("record-route").reverse())}},{key:"terminate",value:function(){u("dialog "+this._id.toString()+" deleted"),this._ua.destroyDialog(this)}},{key:"sendRequest",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},r=c.cloneArray(n.extraHeaders),i=n.eventHandlers||{},a=n.body||null,o=this._createRequest(e,r,a);i.onAuthenticated=function(){t._local_seqnum+=1};var s=new l(this,o,i);return s.send(),o}},{key:"receiveRequest",value:function(e){this._checkInDialogRequest(e)&&(e.method===o.ACK&&null!==this._ack_seqnum?this._ack_seqnum=null:e.method===o.INVITE&&(this._ack_seqnum=e.cseq),this._owner.receiveRequest(e))}},{key:"_createRequest",value:function(e,t,n){t=c.cloneArray(t),this._local_seqnum||(this._local_seqnum=Math.floor(1e4*Math.random()));var r=e===o.CANCEL||e===o.ACK?this._local_seqnum:this._local_seqnum+=1;return new a.OutgoingRequest(e,this._remote_target,this._ua,{cseq:r,call_id:this._id.call_id,from_uri:this._local_uri,from_tag:this._id.local_tag,to_uri:this._remote_uri,to_tag:this._id.remote_tag,route_set:this._route_set},t,n)}},{key:"_checkInDialogRequest",value:function(e){var t=this;if(this._remote_seqnum)if(e.cseq<this._remote_seqnum){if(e.method!==o.ACK)return e.reply(500),!1;if(null===this._ack_seqnum||e.cseq!==this._ack_seqnum)return!1}else e.cseq>this._remote_seqnum&&(this._remote_seqnum=e.cseq);else this._remote_seqnum=e.cseq;if(e.method===o.INVITE||e.method===o.UPDATE&&e.body){if(!0===this._uac_pending_reply)e.reply(491);else{if(!0===this._uas_pending_reply){var n=1+(10*Math.random()|0);return e.reply(500,null,["Retry-After:"+n]),!1}this._uas_pending_reply=!0;e.server_transaction.on("stateChanged",(function n(){e.server_transaction.state!==s.C.STATUS_ACCEPTED&&e.server_transaction.state!==s.C.STATUS_COMPLETED&&e.server_transaction.state!==s.C.STATUS_TERMINATED||(e.server_transaction.removeListener("stateChanged",n),t._uas_pending_reply=!1)}))}e.hasHeader("contact")&&e.server_transaction.on("stateChanged",(function(){e.server_transaction.state===s.C.STATUS_ACCEPTED&&(t._remote_target=e.parseHeader("contact").uri)}))}else e.method===o.NOTIFY&&e.hasHeader("contact")&&e.server_transaction.on("stateChanged",(function(){e.server_transaction.state===s.C.STATUS_COMPLETED&&(t._remote_target=e.parseHeader("contact").uri)}));return!0}},{key:"id",get:function(){return this._id}},{key:"local_seqnum",get:function(){return this._local_seqnum},set:function(e){this._local_seqnum=e}},{key:"owner",get:function(){return this._owner}},{key:"uac_pending_reply",get:function(){return this._uac_pending_reply},set:function(e){this._uac_pending_reply=e}},{key:"uas_pending_reply",get:function(){return this._uas_pending_reply}}]),e}()},{"./Constants":2,"./Dialog/RequestSender":4,"./SIPMessage":19,"./Transactions":22,"./Utils":26,debug:29}],4:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("../Constants"),a=e("../Transactions"),o=e("../RTCSession"),s=e("../RequestSender"),l={onRequestTimeout:function(){},onTransportError:function(){},onSuccessResponse:function(){},onErrorResponse:function(){},onAuthenticated:function(){},onDialogError:function(){}};t.exports=function(){function e(t,n,r){for(var i in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._dialog=t,this._ua=t._ua,this._request=n,this._eventHandlers=r,this._reattempt=!1,this._reattemptTimer=null,l)Object.prototype.hasOwnProperty.call(l,i)&&(this._eventHandlers[i]||(this._eventHandlers[i]=l[i]))}return r(e,[{key:"send",value:function(){var e=this,t=new s(this._ua,this._request,{onRequestTimeout:function(){e._eventHandlers.onRequestTimeout()},onTransportError:function(){e._eventHandlers.onTransportError()},onAuthenticated:function(t){e._eventHandlers.onAuthenticated(t)},onReceiveResponse:function(t){e._receiveResponse(t)}});if(t.send(),(this._request.method===i.INVITE||this._request.method===i.UPDATE&&this._request.body)&&t.clientTransaction.state!==a.C.STATUS_TERMINATED){this._dialog.uac_pending_reply=!0;t.clientTransaction.on("stateChanged",(function n(){t.clientTransaction.state!==a.C.STATUS_ACCEPTED&&t.clientTransaction.state!==a.C.STATUS_COMPLETED&&t.clientTransaction.state!==a.C.STATUS_TERMINATED||(t.clientTransaction.removeListener("stateChanged",n),e._dialog.uac_pending_reply=!1)}))}}},{key:"_receiveResponse",value:function(e){var t=this;408===e.status_code||481===e.status_code?this._eventHandlers.onDialogError(e):e.method===i.INVITE&&491===e.status_code?this._reattempt?e.status_code>=200&&e.status_code<300?this._eventHandlers.onSuccessResponse(e):e.status_code>=300&&this._eventHandlers.onErrorResponse(e):(this._request.cseq.value=this._dialog.local_seqnum+=1,this._reattemptTimer=setTimeout((function(){t._dialog.owner.status!==o.C.STATUS_TERMINATED&&(t._reattempt=!0,t._request_sender.send())}),1e3)):e.status_code>=200&&e.status_code<300?this._eventHandlers.onSuccessResponse(e):e.status_code>=300&&this._eventHandlers.onErrorResponse(e)}},{key:"request",get:function(){return this._request}}]),e}()},{"../Constants":2,"../RTCSession":12,"../RequestSender":18,"../Transactions":22}],5:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("./Utils"),a=e("debug")("JsSIP:DigestAuthentication"),o=e("debug")("JsSIP:ERROR:DigestAuthentication");o.log=console.warn.bind(console),t.exports=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._credentials=t,this._cnonce=null,this._nc=0,this._ncHex="00000000",this._algorithm=null,this._realm=null,this._nonce=null,this._opaque=null,this._stale=null,this._qop=null,this._method=null,this._uri=null,this._ha1=null,this._response=null}return r(e,[{key:"get",value:function(e){switch(e){case"realm":return this._realm;case"ha1":return this._ha1;default:return void o('get() | cannot get "%s" parameter',e)}}},{key:"authenticate",value:function(e,t){var n=e.method,r=e.ruri,s=e.body,l=arguments.length>2&&void 0!==arguments[2]?arguments[2]:null;if(this._algorithm=t.algorithm,this._realm=t.realm,this._nonce=t.nonce,this._opaque=t.opaque,this._stale=t.stale,this._algorithm){if("MD5"!==this._algorithm)return o('authenticate() | challenge with Digest algorithm different than "MD5", authentication aborted'),!1}else this._algorithm="MD5";if(!this._nonce)return o("authenticate() | challenge without Digest nonce, authentication aborted"),!1;if(!this._realm)return o("authenticate() | challenge without Digest realm, authentication aborted"),!1;if(!this._credentials.password){if(!this._credentials.ha1)return o("authenticate() | no plain SIP password nor ha1 provided, authentication aborted"),!1;if(this._credentials.realm!==this._realm)return o('authenticate() | no plain SIP password, and stored `realm` does not match the given `realm`, cannot authenticate [stored:"%s", given:"%s"]',this._credentials.realm,this._realm),!1}if(t.qop)if(t.qop.indexOf("auth-int")>-1)this._qop="auth-int";else{if(!(t.qop.indexOf("auth")>-1))return o('authenticate() | challenge without Digest qop different than "auth" or "auth-int", authentication aborted'),!1;this._qop="auth"}else this._qop=null;this._method=n,this._uri=r,this._cnonce=l||i.createRandomToken(12),this._nc+=1;var c=Number(this._nc).toString(16);this._ncHex="00000000".substr(0,8-c.length)+c,4294967296===this._nc&&(this._nc=1,this._ncHex="00000001"),this._credentials.password?this._ha1=i.calculateMD5(this._credentials.username+":"+this._realm+":"+this._credentials.password):this._ha1=this._credentials.ha1;var u=void 0;return"auth"===this._qop?(u=i.calculateMD5(this._method+":"+this._uri),this._response=i.calculateMD5(this._ha1+":"+this._nonce+":"+this._ncHex+":"+this._cnonce+":auth:"+u)):"auth-int"===this._qop?(u=i.calculateMD5(this._method+":"+this._uri+":"+i.calculateMD5(s||"")),this._response=i.calculateMD5(this._ha1+":"+this._nonce+":"+this._ncHex+":"+this._cnonce+":auth-int:"+u)):null===this._qop&&(u=i.calculateMD5(this._method+":"+this._uri),this._response=i.calculateMD5(this._ha1+":"+this._nonce+":"+u)),a("authenticate() | response generated"),!0}},{key:"toString",value:function(){var e=[];if(!this._response)throw new Error("response field does not exist, cannot generate Authorization header");return e.push("algorithm="+this._algorithm),e.push('username="'+this._credentials.username+'"'),e.push('realm="'+this._realm+'"'),e.push('nonce="'+this._nonce+'"'),e.push('uri="'+this._uri+'"'),e.push('response="'+this._response+'"'),this._opaque&&e.push('opaque="'+this._opaque+'"'),this._qop&&(e.push("qop="+this._qop),e.push('cnonce="'+this._cnonce+'"'),e.push("nc="+this._ncHex)),"Digest "+e.join(", ")}}]),e}()},{"./Utils":26,debug:29}],6:[function(e,t,n){"use strict";function r(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var o=function(e){function t(e,n){r(this,t);var a=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return a.code=1,a.name="CONFIGURATION_ERROR",a.parameter=e,a.value=n,a.message=a.value?"Invalid value "+JSON.stringify(a.value)+' for parameter "'+a.parameter+'"':"Missing parameter: "+a.parameter,a}return a(t,Error),t}(),s=function(e){function t(e){r(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n.code=2,n.name="INVALID_STATE_ERROR",n.status=e,n.message="Invalid status: "+e,n}return a(t,Error),t}(),l=function(e){function t(e){r(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n.code=3,n.name="NOT_SUPPORTED_ERROR",n.message=e,n}return a(t,Error),t}(),c=function(e){function t(e){r(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n.code=4,n.name="NOT_READY_ERROR",n.message=e,n}return a(t,Error),t}();t.exports={ConfigurationError:o,InvalidStateError:s,NotSupportedError:l,NotReadyError:c}},{}],7:[function(e,t,n){"use strict";t.exports=function(){function t(e){return'"'+e.replace(/\\/g,"\\\\").replace(/"/g,'\\"').replace(/\x08/g,"\\b").replace(/\t/g,"\\t").replace(/\n/g,"\\n").replace(/\f/g,"\\f").replace(/\r/g,"\\r").replace(/[\x00-\x07\x0B\x0E-\x1F\x80-\uFFFF]/g,escape)+'"'}var n={parse:function(n,r){var i={CRLF:c,DIGIT:u,ALPHA:f,HEXDIG:d,WSP:h,OCTET:p,DQUOTE:m,SP:g,HTAB:_,alphanum:b,reserved:v,unreserved:y,mark:w,escaped:C,LWS:A,SWS:S,HCOLON:x,TEXT_UTF8_TRIM:T,TEXT_UTF8char:k,UTF8_NONASCII:E,UTF8_CONT:D,LHEX:function(){var e;null===(e=u())&&(/^[a-f]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[a-f]")));return e},token:I,token_nodot:P,separators:function(){var e;40===n.charCodeAt(a)?(e="(",a++):(e=null,l('"("'));null===e&&(41===n.charCodeAt(a)?(e=")",a++):(e=null,l('")"')),null===e&&(60===n.charCodeAt(a)?(e="<",a++):(e=null,l('"<"')),null===e&&(62===n.charCodeAt(a)?(e=">",a++):(e=null,l('">"')),null===e&&(64===n.charCodeAt(a)?(e="@",a++):(e=null,l('"@"')),null===e&&(44===n.charCodeAt(a)?(e=",",a++):(e=null,l('","')),null===e&&(59===n.charCodeAt(a)?(e=";",a++):(e=null,l('";"')),null===e&&(58===n.charCodeAt(a)?(e=":",a++):(e=null,l('":"')),null===e&&(92===n.charCodeAt(a)?(e="\\",a++):(e=null,l('"\\\\"')),null===e&&null===(e=m())&&(47===n.charCodeAt(a)?(e="/",a++):(e=null,l('"/"')),null===e&&(91===n.charCodeAt(a)?(e="[",a++):(e=null,l('"["')),null===e&&(93===n.charCodeAt(a)?(e="]",a++):(e=null,l('"]"')),null===e&&(63===n.charCodeAt(a)?(e="?",a++):(e=null,l('"?"')),null===e&&(61===n.charCodeAt(a)?(e="=",a++):(e=null,l('"="')),null===e&&(123===n.charCodeAt(a)?(e="{",a++):(e=null,l('"{"')),null===e&&(125===n.charCodeAt(a)?(e="}",a++):(e=null,l('"}"')),null===e&&null===(e=g())&&(e=_()))))))))))))))));return e},word:M,STAR:$,SLASH:O,EQUAL:R,LPAREN:N,RPAREN:L,RAQUOT:F,LAQUOT:G,COMMA:j,SEMI:B,COLON:U,LDQUOT:H,RDQUOT:W,comment:function e(){var t,n,r,i;if(i=a,null!==(t=N())){for(n=[],null===(r=q())&&null===(r=K())&&(r=e());null!==r;)n.push(r),null===(r=q())&&null===(r=K())&&(r=e());null!==n&&null!==(r=L())?t=[t,n,r]:(t=null,a=i)}else t=null,a=i;return t},ctext:q,quoted_string:z,quoted_string_clean:V,qdtext:Y,quoted_pair:K,SIP_URI_noparams:Q,SIP_URI:X,uri_scheme:Z,uri_scheme_sips:J,uri_scheme_sip:ee,userinfo:te,user:ne,user_unreserved:re,password:ie,hostport:ae,host:oe,hostname:se,domainlabel:le,toplabel:ce,IPv6reference:ue,IPv6address:fe,h16:de,ls32:he,IPv4address:pe,dec_octet:me,port:ge,uri_parameters:_e,uri_parameter:be,transport_param:ve,user_param:ye,method_param:we,ttl_param:Ce,maddr_param:Ae,lr_param:Se,other_param:xe,pname:Te,pvalue:ke,paramchar:Ee,param_unreserved:De,headers:Ie,header:Pe,hname:Me,hvalue:$e,hnv_unreserved:Oe,Request_Response:function(){var e;null===(e=ut())&&(e=Re());return e},Request_Line:Re,Request_URI:Ne,absoluteURI:Le,hier_part:Fe,net_path:Ge,abs_path:je,opaque_part:Be,uric:Ue,uric_no_slash:He,path_segments:We,segment:qe,param:ze,pchar:Ve,scheme:Ye,authority:Ke,srvr:Qe,reg_name:Xe,query:Ze,SIP_Version:Je,INVITEm:et,ACKm:tt,OPTIONSm:nt,BYEm:rt,CANCELm:it,REGISTERm:at,SUBSCRIBEm:ot,NOTIFYm:st,REFERm:lt,Method:ct,Status_Line:ut,Status_Code:ft,extension_code:dt,Reason_Phrase:ht,Allow_Events:function(){var e,t,n,r,i,o;if(i=a,null!==(e=Lt())){for(t=[],o=a,null!==(n=j())&&null!==(r=Lt())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=j())&&null!==(r=Lt())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e},Call_ID:function(){var e,t,r,i,o,s;i=a,o=a,null!==(e=M())?(s=a,64===n.charCodeAt(a)?(t="@",a++):(t=null,l('"@"')),null!==t&&null!==(r=M())?t=[t,r]:(t=null,a=s),null!==(t=null!==t?t:"")?e=[e,t]:(e=null,a=o)):(e=null,a=o);null!==e&&(e=function(e){Gn=n.substring(a,e)}(i));null===e&&(a=i);return e},Contact:function(){var e,t,n,r,i,o,s;if(i=a,null===(e=$()))if(o=a,null!==(e=pt())){for(t=[],s=a,null!==(n=j())&&null!==(r=pt())?n=[n,r]:(n=null,a=s);null!==n;)t.push(n),s=a,null!==(n=j())&&null!==(r=pt())?n=[n,r]:(n=null,a=s);null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;null!==e&&(e=function(e){var t,n;for(n=Gn.multi_header.length,t=0;t<n;t++)if(null===Gn.multi_header[t].parsed){Gn=null;break}Gn=null!==Gn?Gn.multi_header:-1}());null===e&&(a=i);return e},contact_param:pt,name_addr:mt,display_name:gt,contact_params:_t,c_p_q:bt,c_p_expires:vt,delta_seconds:yt,qvalue:wt,generic_param:Ct,gen_value:At,Content_Disposition:function(){var e,t,n,r,i,o;if(i=a,null!==(e=St())){for(t=[],o=a,null!==(n=B())&&null!==(r=xt())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=B())&&null!==(r=xt())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e},disp_type:St,disp_param:xt,handling_param:Tt,Content_Encoding:function(){var e,t,n,r,i,o;if(i=a,null!==(e=I())){for(t=[],o=a,null!==(n=j())&&null!==(r=I())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=j())&&null!==(r=I())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e},Content_Length:function(){var e,t,n;if(n=a,null!==(t=u()))for(e=[];null!==t;)e.push(t),t=u();else e=null;null!==e&&(e=void(Gn=parseInt(e.join(""))));null===e&&(a=n);return e},Content_Type:function(){var e,t;t=a,null!==(e=kt())&&(e=function(e){Gn=n.substring(a,e)}(t));null===e&&(a=t);return e},media_type:kt,m_type:Et,discrete_type:Dt,composite_type:It,extension_token:Pt,x_token:Mt,m_subtype:$t,m_parameter:Ot,m_value:Rt,CSeq:function(){var e,t,n,r;r=a,null!==(e=Nt())&&null!==(t=A())&&null!==(n=ct())?e=[e,t,n]:(e=null,a=r);return e},CSeq_value:Nt,Expires:function(){var e,t;t=a,null!==(e=yt())&&(e=void(Gn=e));null===e&&(a=t);return e},Event:function(){var e,t,n,r,i,o,s;if(i=a,o=a,null!==(e=Lt())){for(t=[],s=a,null!==(n=B())&&null!==(r=Ct())?n=[n,r]:(n=null,a=s);null!==n;)t.push(n),s=a,null!==(n=B())&&null!==(r=Ct())?n=[n,r]:(n=null,a=s);null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;null!==e&&(l=e[0],e=void(Gn.event=l.join("").toLowerCase()));var l;null===e&&(a=i);return e},event_type:Lt,From:function(){var e,t,n,r,i,o,s;i=a,o=a,null===(e=Q())&&(e=mt());if(null!==e){for(t=[],s=a,null!==(n=B())&&null!==(r=Ft())?n=[n,r]:(n=null,a=s);null!==n;)t.push(n),s=a,null!==(n=B())&&null!==(r=Ft())?n=[n,r]:(n=null,a=s);null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;null!==e&&(e=function(e){var t=Gn.tag;try{Gn=new Fn(Gn.uri,Gn.display_name,Gn.params),t&&Gn.setParam("tag",t)}catch(e){Gn=-1}}());null===e&&(a=i);return e},from_param:Ft,tag_param:Gt,Max_Forwards:function(){var e,t,n;if(n=a,null!==(t=u()))for(e=[];null!==t;)e.push(t),t=u();else e=null;null!==e&&(e=void(Gn=parseInt(e.join(""))));null===e&&(a=n);return e},Min_Expires:function(){var e,t;t=a,null!==(e=yt())&&(e=void(Gn=e));null===e&&(a=t);return e},Name_Addr_Header:function(){var e,t,n,r,i,o,s,l,c,u;l=a,c=a,e=[],t=gt();for(;null!==t;)e.push(t),t=gt();if(null!==e)if(null!==(t=G()))if(null!==(n=X()))if(null!==(r=F())){for(i=[],u=a,null!==(o=B())&&null!==(s=Ct())?o=[o,s]:(o=null,a=u);null!==o;)i.push(o),u=a,null!==(o=B())&&null!==(s=Ct())?o=[o,s]:(o=null,a=u);null!==i?e=[e,t,n,r,i]:(e=null,a=c)}else e=null,a=c;else e=null,a=c;else e=null,a=c;else e=null,a=c;null!==e&&(e=function(e){try{Gn=new Fn(Gn.uri,Gn.display_name,Gn.params)}catch(e){Gn=-1}}());null===e&&(a=l);return e},Proxy_Authenticate:function(){return jt()},challenge:jt,other_challenge:Bt,auth_param:Ut,digest_cln:Ht,realm:Wt,realm_value:qt,domain:zt,URI:Vt,nonce:Yt,nonce_value:Kt,opaque:Qt,stale:Xt,algorithm:Zt,qop_options:Jt,qop_value:en,Proxy_Require:function(){var e,t,n,r,i,o;if(i=a,null!==(e=I())){for(t=[],o=a,null!==(n=j())&&null!==(r=I())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=j())&&null!==(r=I())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e},Record_Route:function(){var e,t,n,r,i,o,s;if(i=a,o=a,null!==(e=tn())){for(t=[],s=a,null!==(n=j())&&null!==(r=tn())?n=[n,r]:(n=null,a=s);null!==n;)t.push(n),s=a,null!==(n=j())&&null!==(r=tn())?n=[n,r]:(n=null,a=s);null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;null!==e&&(e=function(e){var t,n;for(n=Gn.multi_header.length,t=0;t<n;t++)if(null===Gn.multi_header[t].parsed){Gn=null;break}Gn=null!==Gn?Gn.multi_header:-1}());null===e&&(a=i);return e},rec_route:tn,Reason:function(){var e,t,r,i,o,s,c;o=a,s=a,"sip"===n.substr(a,3).toLowerCase()?(e=n.substr(a,3),a+=3):(e=null,l('"SIP"'));null===e&&(e=I());if(null!==e){for(t=[],c=a,null!==(r=B())&&null!==(i=nn())?r=[r,i]:(r=null,a=c);null!==r;)t.push(r),c=a,null!==(r=B())&&null!==(i=nn())?r=[r,i]:(r=null,a=c);null!==t?e=[e,t]:(e=null,a=s)}else e=null,a=s;null!==e&&(e=function(e,t){if(Gn.protocol=t.toLowerCase(),Gn.params||(Gn.params={}),Gn.params.text&&'"'===Gn.params.text[0]){var n=Gn.params.text;Gn.text=n.substring(1,n.length-1),delete Gn.params.text}}(0,e[0]));null===e&&(a=o);return e},reason_param:nn,reason_cause:rn,Require:function(){var e,t,n,r,i,o;if(i=a,null!==(e=I())){for(t=[],o=a,null!==(n=j())&&null!==(r=I())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=j())&&null!==(r=I())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e},Route:function(){var e,t,n,r,i,o;if(i=a,null!==(e=an())){for(t=[],o=a,null!==(n=j())&&null!==(r=an())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=j())&&null!==(r=an())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e},route_param:an,Subscription_State:function(){var e,t,n,r,i,o;if(i=a,null!==(e=on())){for(t=[],o=a,null!==(n=B())&&null!==(r=sn())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=B())&&null!==(r=sn())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e},substate_value:on,subexp_params:sn,event_reason_value:ln,Subject:function(){var e;return e=null!==(e=T())?e:""},Supported:function(){var e,t,n,r,i,o;if(i=a,null!==(e=I())){for(t=[],o=a,null!==(n=j())&&null!==(r=I())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=j())&&null!==(r=I())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e=null!==e?e:""},To:function(){var e,t,n,r,i,o,s;i=a,o=a,null===(e=Q())&&(e=mt());if(null!==e){for(t=[],s=a,null!==(n=B())&&null!==(r=cn())?n=[n,r]:(n=null,a=s);null!==n;)t.push(n),s=a,null!==(n=B())&&null!==(r=cn())?n=[n,r]:(n=null,a=s);null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;null!==e&&(e=function(e){var t=Gn.tag;try{Gn=new Fn(Gn.uri,Gn.display_name,Gn.params),t&&Gn.setParam("tag",t)}catch(e){Gn=-1}}());null===e&&(a=i);return e},to_param:cn,Via:function(){var e,t,n,r,i,o;if(i=a,null!==(e=un())){for(t=[],o=a,null!==(n=j())&&null!==(r=un())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=j())&&null!==(r=un())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e},via_param:un,via_params:fn,via_ttl:dn,via_maddr:hn,via_received:pn,via_branch:mn,response_port:gn,sent_protocol:_n,protocol_name:bn,transport:vn,sent_by:yn,via_host:wn,via_port:Cn,ttl:An,WWW_Authenticate:function(){return jt()},Session_Expires:function(){var e,t,n,r,i,o;if(i=a,null!==(e=Sn())){for(t=[],o=a,null!==(n=B())&&null!==(r=xn())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=B())&&null!==(r=xn())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e},s_e_expires:Sn,s_e_params:xn,s_e_refresher:Tn,extension_header:function(){var e,t,n,r;r=a,null!==(e=I())&&null!==(t=x())&&null!==(n=kn())?e=[e,t,n]:(e=null,a=r);return e},header_value:kn,message_body:function(){var e,t;e=[],t=p();for(;null!==t;)e.push(t),t=p();return e},uuid_URI:function(){var e,t,r;r=a,"uuid:"===n.substr(a,5)?(e="uuid:",a+=5):(e=null,l('"uuid:"'));null!==e&&null!==(t=En())?e=[e,t]:(e=null,a=r);return e},uuid:En,hex4:Dn,hex8:In,hex12:Pn,Refer_To:function(){var e,t,n,r,i,o,s;i=a,o=a,null===(e=Q())&&(e=mt());if(null!==e){for(t=[],s=a,null!==(n=B())&&null!==(r=Ct())?n=[n,r]:(n=null,a=s);null!==n;)t.push(n),s=a,null!==(n=B())&&null!==(r=Ct())?n=[n,r]:(n=null,a=s);null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;null!==e&&(e=function(e){try{Gn=new Fn(Gn.uri,Gn.display_name,Gn.params)}catch(e){Gn=-1}}());null===e&&(a=i);return e},Replaces:function(){var e,t,n,r,i,o;if(i=a,null!==(e=Mn())){for(t=[],o=a,null!==(n=B())&&null!==(r=$n())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=B())&&null!==(r=$n())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e},call_id:Mn,replaces_param:$n,to_tag:On,from_tag:Rn,early_flag:Nn};if(void 0!==r){if(void 0===i[r])throw new Error("Invalid rule name: "+t(r)+".")}else r="CRLF";var a=0,o=0,s=[];function l(e){a<o||(a>o&&(o=a,s=[]),s.push(e))}function c(){var e;return"\r\n"===n.substr(a,2)?(e="\r\n",a+=2):(e=null,l('"\\r\\n"')),e}function u(){var e;return/^[0-9]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[0-9]")),e}function f(){var e;return/^[a-zA-Z]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[a-zA-Z]")),e}function d(){var e;return/^[0-9a-fA-F]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[0-9a-fA-F]")),e}function h(){var e;return null===(e=g())&&(e=_()),e}function p(){var e;return/^[\0-\xFF]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[\\0-\\xFF]")),e}function m(){var e;return/^["]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l('["]')),e}function g(){var e;return 32===n.charCodeAt(a)?(e=" ",a++):(e=null,l('" "')),e}function _(){var e;return 9===n.charCodeAt(a)?(e="\t",a++):(e=null,l('"\\t"')),e}function b(){var e;return/^[a-zA-Z0-9]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[a-zA-Z0-9]")),e}function v(){var e;return 59===n.charCodeAt(a)?(e=";",a++):(e=null,l('";"')),null===e&&(47===n.charCodeAt(a)?(e="/",a++):(e=null,l('"/"')),null===e&&(63===n.charCodeAt(a)?(e="?",a++):(e=null,l('"?"')),null===e&&(58===n.charCodeAt(a)?(e=":",a++):(e=null,l('":"')),null===e&&(64===n.charCodeAt(a)?(e="@",a++):(e=null,l('"@"')),null===e&&(38===n.charCodeAt(a)?(e="&",a++):(e=null,l('"&"')),null===e&&(61===n.charCodeAt(a)?(e="=",a++):(e=null,l('"="')),null===e&&(43===n.charCodeAt(a)?(e="+",a++):(e=null,l('"+"')),null===e&&(36===n.charCodeAt(a)?(e="$",a++):(e=null,l('"$"')),null===e&&(44===n.charCodeAt(a)?(e=",",a++):(e=null,l('","'))))))))))),e}function y(){var e;return null===(e=b())&&(e=w()),e}function w(){var e;return 45===n.charCodeAt(a)?(e="-",a++):(e=null,l('"-"')),null===e&&(95===n.charCodeAt(a)?(e="_",a++):(e=null,l('"_"')),null===e&&(46===n.charCodeAt(a)?(e=".",a++):(e=null,l('"."')),null===e&&(33===n.charCodeAt(a)?(e="!",a++):(e=null,l('"!"')),null===e&&(126===n.charCodeAt(a)?(e="~",a++):(e=null,l('"~"')),null===e&&(42===n.charCodeAt(a)?(e="*",a++):(e=null,l('"*"')),null===e&&(39===n.charCodeAt(a)?(e="'",a++):(e=null,l('"\'"')),null===e&&(40===n.charCodeAt(a)?(e="(",a++):(e=null,l('"("')),null===e&&(41===n.charCodeAt(a)?(e=")",a++):(e=null,l('")"')))))))))),e}function C(){var e,t,r,i,o;return i=a,o=a,37===n.charCodeAt(a)?(e="%",a++):(e=null,l('"%"')),null!==e&&null!==(t=d())&&null!==(r=d())?e=[e,t,r]:(e=null,a=o),null!==e&&(e=e.join("")),null===e&&(a=i),e}function A(){var e,t,n,r,i,o;for(r=a,i=a,o=a,e=[],t=h();null!==t;)e.push(t),t=h();if(null!==e&&null!==(t=c())?e=[e,t]:(e=null,a=o),null!==(e=null!==e?e:"")){if(null!==(n=h()))for(t=[];null!==n;)t.push(n),n=h();else t=null;null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return null!==e&&(e=" "),null===e&&(a=r),e}function S(){var e;return e=null!==(e=A())?e:""}function x(){var e,t,r,i,o;for(i=a,o=a,e=[],null===(t=g())&&(t=_());null!==t;)e.push(t),null===(t=g())&&(t=_());return null!==e?(58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=S())?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(e=":"),null===e&&(a=i),e}function T(){var e,t,r,i,o,s,l;if(o=a,s=a,null!==(t=k()))for(e=[];null!==t;)e.push(t),t=k();else e=null;if(null!==e){for(t=[],l=a,r=[],i=A();null!==i;)r.push(i),i=A();for(null!==r&&null!==(i=k())?r=[r,i]:(r=null,a=l);null!==r;){for(t.push(r),l=a,r=[],i=A();null!==i;)r.push(i),i=A();null!==r&&null!==(i=k())?r=[r,i]:(r=null,a=l)}null!==t?e=[e,t]:(e=null,a=s)}else e=null,a=s;return null!==e&&(e=function(e){return n.substring(a,e)}(o)),null===e&&(a=o),e}function k(){var e;return/^[!-~]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[!-~]")),null===e&&(e=E()),e}function E(){var e;return/^[\x80-\uFFFF]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[\\x80-\\uFFFF]")),e}function D(){var e;return/^[\x80-\xBF]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[\\x80-\\xBF]")),e}function I(){var e,t,r;if(r=a,null===(t=b())&&(45===n.charCodeAt(a)?(t="-",a++):(t=null,l('"-"')),null===t&&(46===n.charCodeAt(a)?(t=".",a++):(t=null,l('"."')),null===t&&(33===n.charCodeAt(a)?(t="!",a++):(t=null,l('"!"')),null===t&&(37===n.charCodeAt(a)?(t="%",a++):(t=null,l('"%"')),null===t&&(42===n.charCodeAt(a)?(t="*",a++):(t=null,l('"*"')),null===t&&(95===n.charCodeAt(a)?(t="_",a++):(t=null,l('"_"')),null===t&&(43===n.charCodeAt(a)?(t="+",a++):(t=null,l('"+"')),null===t&&(96===n.charCodeAt(a)?(t="`",a++):(t=null,l('"`"')),null===t&&(39===n.charCodeAt(a)?(t="'",a++):(t=null,l('"\'"')),null===t&&(126===n.charCodeAt(a)?(t="~",a++):(t=null,l('"~"')))))))))))),null!==t)for(e=[];null!==t;)e.push(t),null===(t=b())&&(45===n.charCodeAt(a)?(t="-",a++):(t=null,l('"-"')),null===t&&(46===n.charCodeAt(a)?(t=".",a++):(t=null,l('"."')),null===t&&(33===n.charCodeAt(a)?(t="!",a++):(t=null,l('"!"')),null===t&&(37===n.charCodeAt(a)?(t="%",a++):(t=null,l('"%"')),null===t&&(42===n.charCodeAt(a)?(t="*",a++):(t=null,l('"*"')),null===t&&(95===n.charCodeAt(a)?(t="_",a++):(t=null,l('"_"')),null===t&&(43===n.charCodeAt(a)?(t="+",a++):(t=null,l('"+"')),null===t&&(96===n.charCodeAt(a)?(t="`",a++):(t=null,l('"`"')),null===t&&(39===n.charCodeAt(a)?(t="'",a++):(t=null,l('"\'"')),null===t&&(126===n.charCodeAt(a)?(t="~",a++):(t=null,l('"~"'))))))))))));else e=null;return null!==e&&(e=function(e){return n.substring(a,e)}(r)),null===e&&(a=r),e}function P(){var e,t,r;if(r=a,null===(t=b())&&(45===n.charCodeAt(a)?(t="-",a++):(t=null,l('"-"')),null===t&&(33===n.charCodeAt(a)?(t="!",a++):(t=null,l('"!"')),null===t&&(37===n.charCodeAt(a)?(t="%",a++):(t=null,l('"%"')),null===t&&(42===n.charCodeAt(a)?(t="*",a++):(t=null,l('"*"')),null===t&&(95===n.charCodeAt(a)?(t="_",a++):(t=null,l('"_"')),null===t&&(43===n.charCodeAt(a)?(t="+",a++):(t=null,l('"+"')),null===t&&(96===n.charCodeAt(a)?(t="`",a++):(t=null,l('"`"')),null===t&&(39===n.charCodeAt(a)?(t="'",a++):(t=null,l('"\'"')),null===t&&(126===n.charCodeAt(a)?(t="~",a++):(t=null,l('"~"'))))))))))),null!==t)for(e=[];null!==t;)e.push(t),null===(t=b())&&(45===n.charCodeAt(a)?(t="-",a++):(t=null,l('"-"')),null===t&&(33===n.charCodeAt(a)?(t="!",a++):(t=null,l('"!"')),null===t&&(37===n.charCodeAt(a)?(t="%",a++):(t=null,l('"%"')),null===t&&(42===n.charCodeAt(a)?(t="*",a++):(t=null,l('"*"')),null===t&&(95===n.charCodeAt(a)?(t="_",a++):(t=null,l('"_"')),null===t&&(43===n.charCodeAt(a)?(t="+",a++):(t=null,l('"+"')),null===t&&(96===n.charCodeAt(a)?(t="`",a++):(t=null,l('"`"')),null===t&&(39===n.charCodeAt(a)?(t="'",a++):(t=null,l('"\'"')),null===t&&(126===n.charCodeAt(a)?(t="~",a++):(t=null,l('"~"')))))))))));else e=null;return null!==e&&(e=function(e){return n.substring(a,e)}(r)),null===e&&(a=r),e}function M(){var e,t,r;if(r=a,null===(t=b())&&(45===n.charCodeAt(a)?(t="-",a++):(t=null,l('"-"')),null===t&&(46===n.charCodeAt(a)?(t=".",a++):(t=null,l('"."')),null===t&&(33===n.charCodeAt(a)?(t="!",a++):(t=null,l('"!"')),null===t&&(37===n.charCodeAt(a)?(t="%",a++):(t=null,l('"%"')),null===t&&(42===n.charCodeAt(a)?(t="*",a++):(t=null,l('"*"')),null===t&&(95===n.charCodeAt(a)?(t="_",a++):(t=null,l('"_"')),null===t&&(43===n.charCodeAt(a)?(t="+",a++):(t=null,l('"+"')),null===t&&(96===n.charCodeAt(a)?(t="`",a++):(t=null,l('"`"')),null===t&&(39===n.charCodeAt(a)?(t="'",a++):(t=null,l('"\'"')),null===t&&(126===n.charCodeAt(a)?(t="~",a++):(t=null,l('"~"')),null===t&&(40===n.charCodeAt(a)?(t="(",a++):(t=null,l('"("')),null===t&&(41===n.charCodeAt(a)?(t=")",a++):(t=null,l('")"')),null===t&&(60===n.charCodeAt(a)?(t="<",a++):(t=null,l('"<"')),null===t&&(62===n.charCodeAt(a)?(t=">",a++):(t=null,l('">"')),null===t&&(58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null===t&&(92===n.charCodeAt(a)?(t="\\",a++):(t=null,l('"\\\\"')),null===t&&null===(t=m())&&(47===n.charCodeAt(a)?(t="/",a++):(t=null,l('"/"')),null===t&&(91===n.charCodeAt(a)?(t="[",a++):(t=null,l('"["')),null===t&&(93===n.charCodeAt(a)?(t="]",a++):(t=null,l('"]"')),null===t&&(63===n.charCodeAt(a)?(t="?",a++):(t=null,l('"?"')),null===t&&(123===n.charCodeAt(a)?(t="{",a++):(t=null,l('"{"')),null===t&&(125===n.charCodeAt(a)?(t="}",a++):(t=null,l('"}"')))))))))))))))))))))))),null!==t)for(e=[];null!==t;)e.push(t),null===(t=b())&&(45===n.charCodeAt(a)?(t="-",a++):(t=null,l('"-"')),null===t&&(46===n.charCodeAt(a)?(t=".",a++):(t=null,l('"."')),null===t&&(33===n.charCodeAt(a)?(t="!",a++):(t=null,l('"!"')),null===t&&(37===n.charCodeAt(a)?(t="%",a++):(t=null,l('"%"')),null===t&&(42===n.charCodeAt(a)?(t="*",a++):(t=null,l('"*"')),null===t&&(95===n.charCodeAt(a)?(t="_",a++):(t=null,l('"_"')),null===t&&(43===n.charCodeAt(a)?(t="+",a++):(t=null,l('"+"')),null===t&&(96===n.charCodeAt(a)?(t="`",a++):(t=null,l('"`"')),null===t&&(39===n.charCodeAt(a)?(t="'",a++):(t=null,l('"\'"')),null===t&&(126===n.charCodeAt(a)?(t="~",a++):(t=null,l('"~"')),null===t&&(40===n.charCodeAt(a)?(t="(",a++):(t=null,l('"("')),null===t&&(41===n.charCodeAt(a)?(t=")",a++):(t=null,l('")"')),null===t&&(60===n.charCodeAt(a)?(t="<",a++):(t=null,l('"<"')),null===t&&(62===n.charCodeAt(a)?(t=">",a++):(t=null,l('">"')),null===t&&(58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null===t&&(92===n.charCodeAt(a)?(t="\\",a++):(t=null,l('"\\\\"')),null===t&&null===(t=m())&&(47===n.charCodeAt(a)?(t="/",a++):(t=null,l('"/"')),null===t&&(91===n.charCodeAt(a)?(t="[",a++):(t=null,l('"["')),null===t&&(93===n.charCodeAt(a)?(t="]",a++):(t=null,l('"]"')),null===t&&(63===n.charCodeAt(a)?(t="?",a++):(t=null,l('"?"')),null===t&&(123===n.charCodeAt(a)?(t="{",a++):(t=null,l('"{"')),null===t&&(125===n.charCodeAt(a)?(t="}",a++):(t=null,l('"}"'))))))))))))))))))))))));else e=null;return null!==e&&(e=function(e){return n.substring(a,e)}(r)),null===e&&(a=r),e}function $(){var e,t,r,i,o;return i=a,o=a,null!==(e=S())?(42===n.charCodeAt(a)?(t="*",a++):(t=null,l('"*"')),null!==t&&null!==(r=S())?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(e="*"),null===e&&(a=i),e}function O(){var e,t,r,i,o;return i=a,o=a,null!==(e=S())?(47===n.charCodeAt(a)?(t="/",a++):(t=null,l('"/"')),null!==t&&null!==(r=S())?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(e="/"),null===e&&(a=i),e}function R(){var e,t,r,i,o;return i=a,o=a,null!==(e=S())?(61===n.charCodeAt(a)?(t="=",a++):(t=null,l('"="')),null!==t&&null!==(r=S())?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(e="="),null===e&&(a=i),e}function N(){var e,t,r,i,o;return i=a,o=a,null!==(e=S())?(40===n.charCodeAt(a)?(t="(",a++):(t=null,l('"("')),null!==t&&null!==(r=S())?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(e="("),null===e&&(a=i),e}function L(){var e,t,r,i,o;return i=a,o=a,null!==(e=S())?(41===n.charCodeAt(a)?(t=")",a++):(t=null,l('")"')),null!==t&&null!==(r=S())?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(e=")"),null===e&&(a=i),e}function F(){var e,t,r,i;return r=a,i=a,62===n.charCodeAt(a)?(e=">",a++):(e=null,l('">"')),null!==e&&null!==(t=S())?e=[e,t]:(e=null,a=i),null!==e&&(e=">"),null===e&&(a=r),e}function G(){var e,t,r,i;return r=a,i=a,null!==(e=S())?(60===n.charCodeAt(a)?(t="<",a++):(t=null,l('"<"')),null!==t?e=[e,t]:(e=null,a=i)):(e=null,a=i),null!==e&&(e="<"),null===e&&(a=r),e}function j(){var e,t,r,i,o;return i=a,o=a,null!==(e=S())?(44===n.charCodeAt(a)?(t=",",a++):(t=null,l('","')),null!==t&&null!==(r=S())?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(e=","),null===e&&(a=i),e}function B(){var e,t,r,i,o;return i=a,o=a,null!==(e=S())?(59===n.charCodeAt(a)?(t=";",a++):(t=null,l('";"')),null!==t&&null!==(r=S())?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(e=";"),null===e&&(a=i),e}function U(){var e,t,r,i,o;return i=a,o=a,null!==(e=S())?(58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=S())?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(e=":"),null===e&&(a=i),e}function H(){var e,t,n,r;return n=a,r=a,null!==(e=S())&&null!==(t=m())?e=[e,t]:(e=null,a=r),null!==e&&(e='"'),null===e&&(a=n),e}function W(){var e,t,n,r;return n=a,r=a,null!==(e=m())&&null!==(t=S())?e=[e,t]:(e=null,a=r),null!==e&&(e='"'),null===e&&(a=n),e}function q(){var e;return/^[!-']/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[!-']")),null===e&&(/^[*-[]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[*-[]")),null===e&&(/^[\]-~]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[\\]-~]")),null===e&&null===(e=E())&&(e=A()))),e}function z(){var e,t,r,i,o,s;if(o=a,s=a,null!==(e=S()))if(null!==(t=m())){for(r=[],null===(i=Y())&&(i=K());null!==i;)r.push(i),null===(i=Y())&&(i=K());null!==r&&null!==(i=m())?e=[e,t,r,i]:(e=null,a=s)}else e=null,a=s;else e=null,a=s;return null!==e&&(e=function(e){return n.substring(a,e)}(o)),null===e&&(a=o),e}function V(){var e,t,r,i,o,s;if(o=a,s=a,null!==(e=S()))if(null!==(t=m())){for(r=[],null===(i=Y())&&(i=K());null!==i;)r.push(i),null===(i=Y())&&(i=K());null!==r&&null!==(i=m())?e=[e,t,r,i]:(e=null,a=s)}else e=null,a=s;else e=null,a=s;return null!==e&&(e=function(e){return n.substring(a-1,e+1)}(o)),null===e&&(a=o),e}function Y(){var e;return null===(e=A())&&(33===n.charCodeAt(a)?(e="!",a++):(e=null,l('"!"')),null===e&&(/^[#-[]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[#-[]")),null===e&&(/^[\]-~]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[\\]-~]")),null===e&&(e=E())))),e}function K(){var e,t,r;return r=a,92===n.charCodeAt(a)?(e="\\",a++):(e=null,l('"\\\\"')),null!==e?(/^[\0-\t]/.test(n.charAt(a))?(t=n.charAt(a),a++):(t=null,l("[\\0-\\t]")),null===t&&(/^[\x0B-\f]/.test(n.charAt(a))?(t=n.charAt(a),a++):(t=null,l("[\\x0B-\\f]")),null===t&&(/^[\x0E-]/.test(n.charAt(a))?(t=n.charAt(a),a++):(t=null,l("[\\x0E-]")))),null!==t?e=[e,t]:(e=null,a=r)):(e=null,a=r),e}function Q(){var e,t,r,i,o,s;return o=a,s=a,null!==(e=Z())?(58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=null!==(r=te())?r:"")&&null!==(i=ae())?e=[e,t,r,i]:(e=null,a=s)):(e=null,a=s),null!==e&&(e=function(e){try{Gn.uri=new Ln(Gn.scheme,Gn.user,Gn.host,Gn.port),delete Gn.scheme,delete Gn.user,delete Gn.host,delete Gn.host_type,delete Gn.port}catch(e){Gn=-1}}()),null===e&&(a=o),e}function X(){var e,t,i,o,s,c,u,f;return u=a,f=a,null!==(e=Z())?(58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(i=null!==(i=te())?i:"")&&null!==(o=ae())&&null!==(s=_e())&&null!==(c=null!==(c=Ie())?c:"")?e=[e,t,i,o,s,c]:(e=null,a=f)):(e=null,a=f),null!==e&&(e=function(e){try{Gn.uri=new Ln(Gn.scheme,Gn.user,Gn.host,Gn.port,Gn.uri_params,Gn.uri_headers),delete Gn.scheme,delete Gn.user,delete Gn.host,delete Gn.host_type,delete Gn.port,delete Gn.uri_params,"SIP_URI"===r&&(Gn=Gn.uri)}catch(e){Gn=-1}}()),null===e&&(a=u),e}function Z(){var e;return null===(e=J())&&(e=ee()),e}function J(){var e,t,r;return t=a,"sips"===n.substr(a,4).toLowerCase()?(e=n.substr(a,4),a+=4):(e=null,l('"sips"')),null!==e&&(r=e,e=void(Gn.scheme=r.toLowerCase())),null===e&&(a=t),e}function ee(){var e,t,r;return t=a,"sip"===n.substr(a,3).toLowerCase()?(e=n.substr(a,3),a+=3):(e=null,l('"sip"')),null!==e&&(r=e,e=void(Gn.scheme=r.toLowerCase())),null===e&&(a=t),e}function te(){var e,t,r,i,o,s;return i=a,o=a,null!==(e=ne())?(s=a,58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=ie())?t=[t,r]:(t=null,a=s),null!==(t=null!==t?t:"")?(64===n.charCodeAt(a)?(r="@",a++):(r=null,l('"@"')),null!==r?e=[e,t,r]:(e=null,a=o)):(e=null,a=o)):(e=null,a=o),null!==e&&(e=function(e){Gn.user=decodeURIComponent(n.substring(a-1,e))}(i)),null===e&&(a=i),e}function ne(){var e,t;if(null===(t=y())&&null===(t=C())&&(t=re()),null!==t)for(e=[];null!==t;)e.push(t),null===(t=y())&&null===(t=C())&&(t=re());else e=null;return e}function re(){var e;return 38===n.charCodeAt(a)?(e="&",a++):(e=null,l('"&"')),null===e&&(61===n.charCodeAt(a)?(e="=",a++):(e=null,l('"="')),null===e&&(43===n.charCodeAt(a)?(e="+",a++):(e=null,l('"+"')),null===e&&(36===n.charCodeAt(a)?(e="$",a++):(e=null,l('"$"')),null===e&&(44===n.charCodeAt(a)?(e=",",a++):(e=null,l('","')),null===e&&(59===n.charCodeAt(a)?(e=";",a++):(e=null,l('";"')),null===e&&(63===n.charCodeAt(a)?(e="?",a++):(e=null,l('"?"')),null===e&&(47===n.charCodeAt(a)?(e="/",a++):(e=null,l('"/"'))))))))),e}function ie(){var e,t,r;for(r=a,e=[],null===(t=y())&&null===(t=C())&&(38===n.charCodeAt(a)?(t="&",a++):(t=null,l('"&"')),null===t&&(61===n.charCodeAt(a)?(t="=",a++):(t=null,l('"="')),null===t&&(43===n.charCodeAt(a)?(t="+",a++):(t=null,l('"+"')),null===t&&(36===n.charCodeAt(a)?(t="$",a++):(t=null,l('"$"')),null===t&&(44===n.charCodeAt(a)?(t=",",a++):(t=null,l('","')))))));null!==t;)e.push(t),null===(t=y())&&null===(t=C())&&(38===n.charCodeAt(a)?(t="&",a++):(t=null,l('"&"')),null===t&&(61===n.charCodeAt(a)?(t="=",a++):(t=null,l('"="')),null===t&&(43===n.charCodeAt(a)?(t="+",a++):(t=null,l('"+"')),null===t&&(36===n.charCodeAt(a)?(t="$",a++):(t=null,l('"$"')),null===t&&(44===n.charCodeAt(a)?(t=",",a++):(t=null,l('","')))))));return null!==e&&(e=function(e){Gn.password=n.substring(a,e)}(r)),null===e&&(a=r),e}function ae(){var e,t,r,i,o;return i=a,null!==(e=oe())?(o=a,58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=ge())?t=[t,r]:(t=null,a=o),null!==(t=null!==t?t:"")?e=[e,t]:(e=null,a=i)):(e=null,a=i),e}function oe(){var e,t;return t=a,null===(e=se())&&null===(e=pe())&&(e=ue()),null!==e&&(e=function(e){return Gn.host=n.substring(a,e).toLowerCase(),Gn.host}(t)),null===e&&(a=t),e}function se(){var e,t,r,i,o,s;for(i=a,o=a,e=[],s=a,null!==(t=le())?(46===n.charCodeAt(a)?(r=".",a++):(r=null,l('"."')),null!==r?t=[t,r]:(t=null,a=s)):(t=null,a=s);null!==t;)e.push(t),s=a,null!==(t=le())?(46===n.charCodeAt(a)?(r=".",a++):(r=null,l('"."')),null!==r?t=[t,r]:(t=null,a=s)):(t=null,a=s);return null!==e&&null!==(t=ce())?(46===n.charCodeAt(a)?(r=".",a++):(r=null,l('"."')),null!==(r=null!==r?r:"")?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(e=function(e){return Gn.host_type="domain",n.substring(a,e)}(i)),null===e&&(a=i),e}function le(){var e,t,r,i;if(i=a,null!==(e=b())){for(t=[],null===(r=b())&&(45===n.charCodeAt(a)?(r="-",a++):(r=null,l('"-"')),null===r&&(95===n.charCodeAt(a)?(r="_",a++):(r=null,l('"_"'))));null!==r;)t.push(r),null===(r=b())&&(45===n.charCodeAt(a)?(r="-",a++):(r=null,l('"-"')),null===r&&(95===n.charCodeAt(a)?(r="_",a++):(r=null,l('"_"'))));null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e}function ce(){var e,t,r,i;if(i=a,null!==(e=f())){for(t=[],null===(r=b())&&(45===n.charCodeAt(a)?(r="-",a++):(r=null,l('"-"')),null===r&&(95===n.charCodeAt(a)?(r="_",a++):(r=null,l('"_"'))));null!==r;)t.push(r),null===(r=b())&&(45===n.charCodeAt(a)?(r="-",a++):(r=null,l('"-"')),null===r&&(95===n.charCodeAt(a)?(r="_",a++):(r=null,l('"_"'))));null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e}function ue(){var e,t,r,i,o;return i=a,o=a,91===n.charCodeAt(a)?(e="[",a++):(e=null,l('"["')),null!==e&&null!==(t=fe())?(93===n.charCodeAt(a)?(r="]",a++):(r=null,l('"]"')),null!==r?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(e=function(e){return Gn.host_type="IPv6",n.substring(a,e)}(i)),null===e&&(a=i),e}function fe(){var e,t,r,i,o,s,c,u,f,d,h,p,m,g,_,b;return g=a,_=a,null!==(e=de())?(58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=de())?(58===n.charCodeAt(a)?(i=":",a++):(i=null,l('":"')),null!==i&&null!==(o=de())?(58===n.charCodeAt(a)?(s=":",a++):(s=null,l('":"')),null!==s&&null!==(c=de())?(58===n.charCodeAt(a)?(u=":",a++):(u=null,l('":"')),null!==u&&null!==(f=de())?(58===n.charCodeAt(a)?(d=":",a++):(d=null,l('":"')),null!==d&&null!==(h=de())?(58===n.charCodeAt(a)?(p=":",a++):(p=null,l('":"')),null!==p&&null!==(m=he())?e=[e,t,r,i,o,s,c,u,f,d,h,p,m]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_),null===e&&(_=a,"::"===n.substr(a,2)?(e="::",a+=2):(e=null,l('"::"')),null!==e&&null!==(t=de())?(58===n.charCodeAt(a)?(r=":",a++):(r=null,l('":"')),null!==r&&null!==(i=de())?(58===n.charCodeAt(a)?(o=":",a++):(o=null,l('":"')),null!==o&&null!==(s=de())?(58===n.charCodeAt(a)?(c=":",a++):(c=null,l('":"')),null!==c&&null!==(u=de())?(58===n.charCodeAt(a)?(f=":",a++):(f=null,l('":"')),null!==f&&null!==(d=de())?(58===n.charCodeAt(a)?(h=":",a++):(h=null,l('":"')),null!==h&&null!==(p=he())?e=[e,t,r,i,o,s,c,u,f,d,h,p]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_),null===e&&(_=a,"::"===n.substr(a,2)?(e="::",a+=2):(e=null,l('"::"')),null!==e&&null!==(t=de())?(58===n.charCodeAt(a)?(r=":",a++):(r=null,l('":"')),null!==r&&null!==(i=de())?(58===n.charCodeAt(a)?(o=":",a++):(o=null,l('":"')),null!==o&&null!==(s=de())?(58===n.charCodeAt(a)?(c=":",a++):(c=null,l('":"')),null!==c&&null!==(u=de())?(58===n.charCodeAt(a)?(f=":",a++):(f=null,l('":"')),null!==f&&null!==(d=he())?e=[e,t,r,i,o,s,c,u,f,d]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_),null===e&&(_=a,"::"===n.substr(a,2)?(e="::",a+=2):(e=null,l('"::"')),null!==e&&null!==(t=de())?(58===n.charCodeAt(a)?(r=":",a++):(r=null,l('":"')),null!==r&&null!==(i=de())?(58===n.charCodeAt(a)?(o=":",a++):(o=null,l('":"')),null!==o&&null!==(s=de())?(58===n.charCodeAt(a)?(c=":",a++):(c=null,l('":"')),null!==c&&null!==(u=he())?e=[e,t,r,i,o,s,c,u]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_),null===e&&(_=a,"::"===n.substr(a,2)?(e="::",a+=2):(e=null,l('"::"')),null!==e&&null!==(t=de())?(58===n.charCodeAt(a)?(r=":",a++):(r=null,l('":"')),null!==r&&null!==(i=de())?(58===n.charCodeAt(a)?(o=":",a++):(o=null,l('":"')),null!==o&&null!==(s=he())?e=[e,t,r,i,o,s]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_),null===e&&(_=a,"::"===n.substr(a,2)?(e="::",a+=2):(e=null,l('"::"')),null!==e&&null!==(t=de())?(58===n.charCodeAt(a)?(r=":",a++):(r=null,l('":"')),null!==r&&null!==(i=he())?e=[e,t,r,i]:(e=null,a=_)):(e=null,a=_),null===e&&(_=a,"::"===n.substr(a,2)?(e="::",a+=2):(e=null,l('"::"')),null!==e&&null!==(t=he())?e=[e,t]:(e=null,a=_),null===e&&(_=a,"::"===n.substr(a,2)?(e="::",a+=2):(e=null,l('"::"')),null!==e&&null!==(t=de())?e=[e,t]:(e=null,a=_),null===e&&(_=a,null!==(e=de())?("::"===n.substr(a,2)?(t="::",a+=2):(t=null,l('"::"')),null!==t&&null!==(r=de())?(58===n.charCodeAt(a)?(i=":",a++):(i=null,l('":"')),null!==i&&null!==(o=de())?(58===n.charCodeAt(a)?(s=":",a++):(s=null,l('":"')),null!==s&&null!==(c=de())?(58===n.charCodeAt(a)?(u=":",a++):(u=null,l('":"')),null!==u&&null!==(f=de())?(58===n.charCodeAt(a)?(d=":",a++):(d=null,l('":"')),null!==d&&null!==(h=he())?e=[e,t,r,i,o,s,c,u,f,d,h]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_),null===e&&(_=a,null!==(e=de())?(b=a,58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=de())?t=[t,r]:(t=null,a=b),null!==(t=null!==t?t:"")?("::"===n.substr(a,2)?(r="::",a+=2):(r=null,l('"::"')),null!==r&&null!==(i=de())?(58===n.charCodeAt(a)?(o=":",a++):(o=null,l('":"')),null!==o&&null!==(s=de())?(58===n.charCodeAt(a)?(c=":",a++):(c=null,l('":"')),null!==c&&null!==(u=de())?(58===n.charCodeAt(a)?(f=":",a++):(f=null,l('":"')),null!==f&&null!==(d=he())?e=[e,t,r,i,o,s,c,u,f,d]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_),null===e&&(_=a,null!==(e=de())?(b=a,58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=de())?t=[t,r]:(t=null,a=b),null!==(t=null!==t?t:"")?(b=a,58===n.charCodeAt(a)?(r=":",a++):(r=null,l('":"')),null!==r&&null!==(i=de())?r=[r,i]:(r=null,a=b),null!==(r=null!==r?r:"")?("::"===n.substr(a,2)?(i="::",a+=2):(i=null,l('"::"')),null!==i&&null!==(o=de())?(58===n.charCodeAt(a)?(s=":",a++):(s=null,l('":"')),null!==s&&null!==(c=de())?(58===n.charCodeAt(a)?(u=":",a++):(u=null,l('":"')),null!==u&&null!==(f=he())?e=[e,t,r,i,o,s,c,u,f]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_),null===e&&(_=a,null!==(e=de())?(b=a,58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=de())?t=[t,r]:(t=null,a=b),null!==(t=null!==t?t:"")?(b=a,58===n.charCodeAt(a)?(r=":",a++):(r=null,l('":"')),null!==r&&null!==(i=de())?r=[r,i]:(r=null,a=b),null!==(r=null!==r?r:"")?(b=a,58===n.charCodeAt(a)?(i=":",a++):(i=null,l('":"')),null!==i&&null!==(o=de())?i=[i,o]:(i=null,a=b),null!==(i=null!==i?i:"")?("::"===n.substr(a,2)?(o="::",a+=2):(o=null,l('"::"')),null!==o&&null!==(s=de())?(58===n.charCodeAt(a)?(c=":",a++):(c=null,l('":"')),null!==c&&null!==(u=he())?e=[e,t,r,i,o,s,c,u]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_),null===e&&(_=a,null!==(e=de())?(b=a,58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=de())?t=[t,r]:(t=null,a=b),null!==(t=null!==t?t:"")?(b=a,58===n.charCodeAt(a)?(r=":",a++):(r=null,l('":"')),null!==r&&null!==(i=de())?r=[r,i]:(r=null,a=b),null!==(r=null!==r?r:"")?(b=a,58===n.charCodeAt(a)?(i=":",a++):(i=null,l('":"')),null!==i&&null!==(o=de())?i=[i,o]:(i=null,a=b),null!==(i=null!==i?i:"")?(b=a,58===n.charCodeAt(a)?(o=":",a++):(o=null,l('":"')),null!==o&&null!==(s=de())?o=[o,s]:(o=null,a=b),null!==(o=null!==o?o:"")?("::"===n.substr(a,2)?(s="::",a+=2):(s=null,l('"::"')),null!==s&&null!==(c=he())?e=[e,t,r,i,o,s,c]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_),null===e&&(_=a,null!==(e=de())?(b=a,58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=de())?t=[t,r]:(t=null,a=b),null!==(t=null!==t?t:"")?(b=a,58===n.charCodeAt(a)?(r=":",a++):(r=null,l('":"')),null!==r&&null!==(i=de())?r=[r,i]:(r=null,a=b),null!==(r=null!==r?r:"")?(b=a,58===n.charCodeAt(a)?(i=":",a++):(i=null,l('":"')),null!==i&&null!==(o=de())?i=[i,o]:(i=null,a=b),null!==(i=null!==i?i:"")?(b=a,58===n.charCodeAt(a)?(o=":",a++):(o=null,l('":"')),null!==o&&null!==(s=de())?o=[o,s]:(o=null,a=b),null!==(o=null!==o?o:"")?(b=a,58===n.charCodeAt(a)?(s=":",a++):(s=null,l('":"')),null!==s&&null!==(c=de())?s=[s,c]:(s=null,a=b),null!==(s=null!==s?s:"")?("::"===n.substr(a,2)?(c="::",a+=2):(c=null,l('"::"')),null!==c&&null!==(u=de())?e=[e,t,r,i,o,s,c,u]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_),null===e&&(_=a,null!==(e=de())?(b=a,58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=de())?t=[t,r]:(t=null,a=b),null!==(t=null!==t?t:"")?(b=a,58===n.charCodeAt(a)?(r=":",a++):(r=null,l('":"')),null!==r&&null!==(i=de())?r=[r,i]:(r=null,a=b),null!==(r=null!==r?r:"")?(b=a,58===n.charCodeAt(a)?(i=":",a++):(i=null,l('":"')),null!==i&&null!==(o=de())?i=[i,o]:(i=null,a=b),null!==(i=null!==i?i:"")?(b=a,58===n.charCodeAt(a)?(o=":",a++):(o=null,l('":"')),null!==o&&null!==(s=de())?o=[o,s]:(o=null,a=b),null!==(o=null!==o?o:"")?(b=a,58===n.charCodeAt(a)?(s=":",a++):(s=null,l('":"')),null!==s&&null!==(c=de())?s=[s,c]:(s=null,a=b),null!==(s=null!==s?s:"")?(b=a,58===n.charCodeAt(a)?(c=":",a++):(c=null,l('":"')),null!==c&&null!==(u=de())?c=[c,u]:(c=null,a=b),null!==(c=null!==c?c:"")?("::"===n.substr(a,2)?(u="::",a+=2):(u=null,l('"::"')),null!==u?e=[e,t,r,i,o,s,c,u]:(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_)):(e=null,a=_))))))))))))))),null!==e&&(e=function(e){return Gn.host_type="IPv6",n.substring(a,e)}(g)),null===e&&(a=g),e}function de(){var e,t,n,r,i;return i=a,null!==(e=d())&&null!==(t=null!==(t=d())?t:"")&&null!==(n=null!==(n=d())?n:"")&&null!==(r=null!==(r=d())?r:"")?e=[e,t,n,r]:(e=null,a=i),e}function he(){var e,t,r,i;return i=a,null!==(e=de())?(58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t&&null!==(r=de())?e=[e,t,r]:(e=null,a=i)):(e=null,a=i),null===e&&(e=pe()),e}function pe(){var e,t,r,i,o,s,c,u,f;return u=a,f=a,null!==(e=me())?(46===n.charCodeAt(a)?(t=".",a++):(t=null,l('"."')),null!==t&&null!==(r=me())?(46===n.charCodeAt(a)?(i=".",a++):(i=null,l('"."')),null!==i&&null!==(o=me())?(46===n.charCodeAt(a)?(s=".",a++):(s=null,l('"."')),null!==s&&null!==(c=me())?e=[e,t,r,i,o,s,c]:(e=null,a=f)):(e=null,a=f)):(e=null,a=f)):(e=null,a=f),null!==e&&(e=function(e){return Gn.host_type="IPv4",n.substring(a,e)}(u)),null===e&&(a=u),e}function me(){var e,t,r,i;return i=a,"25"===n.substr(a,2)?(e="25",a+=2):(e=null,l('"25"')),null!==e?(/^[0-5]/.test(n.charAt(a))?(t=n.charAt(a),a++):(t=null,l("[0-5]")),null!==t?e=[e,t]:(e=null,a=i)):(e=null,a=i),null===e&&(i=a,50===n.charCodeAt(a)?(e="2",a++):(e=null,l('"2"')),null!==e?(/^[0-4]/.test(n.charAt(a))?(t=n.charAt(a),a++):(t=null,l("[0-4]")),null!==t&&null!==(r=u())?e=[e,t,r]:(e=null,a=i)):(e=null,a=i),null===e&&(i=a,49===n.charCodeAt(a)?(e="1",a++):(e=null,l('"1"')),null!==e&&null!==(t=u())&&null!==(r=u())?e=[e,t,r]:(e=null,a=i),null===e&&(i=a,/^[1-9]/.test(n.charAt(a))?(e=n.charAt(a),a++):(e=null,l("[1-9]")),null!==e&&null!==(t=u())?e=[e,t]:(e=null,a=i),null===e&&(e=u())))),e}function ge(){var e,t,n,r,i,o,s,l;return o=a,s=a,null!==(e=null!==(e=u())?e:"")&&null!==(t=null!==(t=u())?t:"")&&null!==(n=null!==(n=u())?n:"")&&null!==(r=null!==(r=u())?r:"")&&null!==(i=null!==(i=u())?i:"")?e=[e,t,n,r,i]:(e=null,a=s),null!==e&&(l=e,l=parseInt(l.join("")),Gn.port=l,e=l),null===e&&(a=o),e}function _e(){var e,t,r,i;for(e=[],i=a,59===n.charCodeAt(a)?(t=";",a++):(t=null,l('";"')),null!==t&&null!==(r=be())?t=[t,r]:(t=null,a=i);null!==t;)e.push(t),i=a,59===n.charCodeAt(a)?(t=";",a++):(t=null,l('";"')),null!==t&&null!==(r=be())?t=[t,r]:(t=null,a=i);return e}function be(){var e;return null===(e=ve())&&null===(e=ye())&&null===(e=we())&&null===(e=Ce())&&null===(e=Ae())&&null===(e=Se())&&(e=xe()),e}function ve(){var e,t,r,i,o;return r=a,i=a,"transport="===n.substr(a,10).toLowerCase()?(e=n.substr(a,10),a+=10):(e=null,l('"transport="')),null!==e?("udp"===n.substr(a,3).toLowerCase()?(t=n.substr(a,3),a+=3):(t=null,l('"udp"')),null===t&&("tcp"===n.substr(a,3).toLowerCase()?(t=n.substr(a,3),a+=3):(t=null,l('"tcp"')),null===t&&("sctp"===n.substr(a,4).toLowerCase()?(t=n.substr(a,4),a+=4):(t=null,l('"sctp"')),null===t&&("tls"===n.substr(a,3).toLowerCase()?(t=n.substr(a,3),a+=3):(t=null,l('"tls"')),null===t&&(t=I())))),null!==t?e=[e,t]:(e=null,a=i)):(e=null,a=i),null!==e&&(o=e[1],Gn.uri_params||(Gn.uri_params={}),e=void(Gn.uri_params.transport=o.toLowerCase())),null===e&&(a=r),e}function ye(){var e,t,r,i,o;return r=a,i=a,"user="===n.substr(a,5).toLowerCase()?(e=n.substr(a,5),a+=5):(e=null,l('"user="')),null!==e?("phone"===n.substr(a,5).toLowerCase()?(t=n.substr(a,5),a+=5):(t=null,l('"phone"')),null===t&&("ip"===n.substr(a,2).toLowerCase()?(t=n.substr(a,2),a+=2):(t=null,l('"ip"')),null===t&&(t=I())),null!==t?e=[e,t]:(e=null,a=i)):(e=null,a=i),null!==e&&(o=e[1],Gn.uri_params||(Gn.uri_params={}),e=void(Gn.uri_params.user=o.toLowerCase())),null===e&&(a=r),e}function we(){var e,t,r,i,o;return r=a,i=a,"method="===n.substr(a,7).toLowerCase()?(e=n.substr(a,7),a+=7):(e=null,l('"method="')),null!==e&&null!==(t=ct())?e=[e,t]:(e=null,a=i),null!==e&&(o=e[1],Gn.uri_params||(Gn.uri_params={}),e=void(Gn.uri_params.method=o)),null===e&&(a=r),e}function Ce(){var e,t,r,i,o;return r=a,i=a,"ttl="===n.substr(a,4).toLowerCase()?(e=n.substr(a,4),a+=4):(e=null,l('"ttl="')),null!==e&&null!==(t=An())?e=[e,t]:(e=null,a=i),null!==e&&(o=e[1],Gn.params||(Gn.params={}),e=void(Gn.params.ttl=o)),null===e&&(a=r),e}function Ae(){var e,t,r,i,o;return r=a,i=a,"maddr="===n.substr(a,6).toLowerCase()?(e=n.substr(a,6),a+=6):(e=null,l('"maddr="')),null!==e&&null!==(t=oe())?e=[e,t]:(e=null,a=i),null!==e&&(o=e[1],Gn.uri_params||(Gn.uri_params={}),e=void(Gn.uri_params.maddr=o)),null===e&&(a=r),e}function Se(){var e,t,r,i,o,s;return i=a,o=a,"lr"===n.substr(a,2).toLowerCase()?(e=n.substr(a,2),a+=2):(e=null,l('"lr"')),null!==e?(s=a,61===n.charCodeAt(a)?(t="=",a++):(t=null,l('"="')),null!==t&&null!==(r=I())?t=[t,r]:(t=null,a=s),null!==(t=null!==t?t:"")?e=[e,t]:(e=null,a=o)):(e=null,a=o),null!==e&&(Gn.uri_params||(Gn.uri_params={}),e=void(Gn.uri_params.lr=void 0)),null===e&&(a=i),e}function xe(){var e,t,r,i,o,s,c,u;return i=a,o=a,null!==(e=Te())?(s=a,61===n.charCodeAt(a)?(t="=",a++):(t=null,l('"="')),null!==t&&null!==(r=ke())?t=[t,r]:(t=null,a=s),null!==(t=null!==t?t:"")?e=[e,t]:(e=null,a=o)):(e=null,a=o),null!==e&&(c=e[0],u=e[1],Gn.uri_params||(Gn.uri_params={}),u=void 0===u?void 0:u[1],e=void(Gn.uri_params[c.toLowerCase()]=u)),null===e&&(a=i),e}function Te(){var e,t,n;if(n=a,null!==(t=Ee()))for(e=[];null!==t;)e.push(t),t=Ee();else e=null;return null!==e&&(e=e.join("")),null===e&&(a=n),e}function ke(){var e,t,n;if(n=a,null!==(t=Ee()))for(e=[];null!==t;)e.push(t),t=Ee();else e=null;return null!==e&&(e=e.join("")),null===e&&(a=n),e}function Ee(){var e;return null===(e=De())&&null===(e=y())&&(e=C()),e}function De(){var e;return 91===n.charCodeAt(a)?(e="[",a++):(e=null,l('"["')),null===e&&(93===n.charCodeAt(a)?(e="]",a++):(e=null,l('"]"')),null===e&&(47===n.charCodeAt(a)?(e="/",a++):(e=null,l('"/"')),null===e&&(58===n.charCodeAt(a)?(e=":",a++):(e=null,l('":"')),null===e&&(38===n.charCodeAt(a)?(e="&",a++):(e=null,l('"&"')),null===e&&(43===n.charCodeAt(a)?(e="+",a++):(e=null,l('"+"')),null===e&&(36===n.charCodeAt(a)?(e="$",a++):(e=null,l('"$"')))))))),e}function Ie(){var e,t,r,i,o,s,c;if(s=a,63===n.charCodeAt(a)?(e="?",a++):(e=null,l('"?"')),null!==e)if(null!==(t=Pe())){for(r=[],c=a,38===n.charCodeAt(a)?(i="&",a++):(i=null,l('"&"')),null!==i&&null!==(o=Pe())?i=[i,o]:(i=null,a=c);null!==i;)r.push(i),c=a,38===n.charCodeAt(a)?(i="&",a++):(i=null,l('"&"')),null!==i&&null!==(o=Pe())?i=[i,o]:(i=null,a=c);null!==r?e=[e,t,r]:(e=null,a=s)}else e=null,a=s;else e=null,a=s;return e}function Pe(){var e,t,r,i,o,s,c;return i=a,o=a,null!==(e=Me())?(61===n.charCodeAt(a)?(t="=",a++):(t=null,l('"="')),null!==t&&null!==(r=$e())?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(s=e[0],c=e[2],s=s.join("").toLowerCase(),c=c.join(""),Gn.uri_headers||(Gn.uri_headers={}),e=void(Gn.uri_headers[s]?Gn.uri_headers[s].push(c):Gn.uri_headers[s]=[c])),null===e&&(a=i),e}function Me(){var e,t;if(null===(t=Oe())&&null===(t=y())&&(t=C()),null!==t)for(e=[];null!==t;)e.push(t),null===(t=Oe())&&null===(t=y())&&(t=C());else e=null;return e}function $e(){var e,t;for(e=[],null===(t=Oe())&&null===(t=y())&&(t=C());null!==t;)e.push(t),null===(t=Oe())&&null===(t=y())&&(t=C());return e}function Oe(){var e;return 91===n.charCodeAt(a)?(e="[",a++):(e=null,l('"["')),null===e&&(93===n.charCodeAt(a)?(e="]",a++):(e=null,l('"]"')),null===e&&(47===n.charCodeAt(a)?(e="/",a++):(e=null,l('"/"')),null===e&&(63===n.charCodeAt(a)?(e="?",a++):(e=null,l('"?"')),null===e&&(58===n.charCodeAt(a)?(e=":",a++):(e=null,l('":"')),null===e&&(43===n.charCodeAt(a)?(e="+",a++):(e=null,l('"+"')),null===e&&(36===n.charCodeAt(a)?(e="$",a++):(e=null,l('"$"')))))))),e}function Re(){var e,t,n,r,i,o;return o=a,null!==(e=ct())&&null!==(t=g())&&null!==(n=Ne())&&null!==(r=g())&&null!==(i=Je())?e=[e,t,n,r,i]:(e=null,a=o),e}function Ne(){var e;return null===(e=X())&&(e=Le()),e}function Le(){var e,t,r,i;return i=a,null!==(e=Ye())?(58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null!==t?(null===(r=Fe())&&(r=Be()),null!==r?e=[e,t,r]:(e=null,a=i)):(e=null,a=i)):(e=null,a=i),e}function Fe(){var e,t,r,i,o;return i=a,null===(e=Ge())&&(e=je()),null!==e?(o=a,63===n.charCodeAt(a)?(t="?",a++):(t=null,l('"?"')),null!==t&&null!==(r=Ze())?t=[t,r]:(t=null,a=o),null!==(t=null!==t?t:"")?e=[e,t]:(e=null,a=i)):(e=null,a=i),e}function Ge(){var e,t,r,i;return i=a,"//"===n.substr(a,2)?(e="//",a+=2):(e=null,l('"//"')),null!==e&&null!==(t=Ke())&&null!==(r=null!==(r=je())?r:"")?e=[e,t,r]:(e=null,a=i),e}function je(){var e,t,r;return r=a,47===n.charCodeAt(a)?(e="/",a++):(e=null,l('"/"')),null!==e&&null!==(t=We())?e=[e,t]:(e=null,a=r),e}function Be(){var e,t,n,r;if(r=a,null!==(e=He())){for(t=[],n=Ue();null!==n;)t.push(n),n=Ue();null!==t?e=[e,t]:(e=null,a=r)}else e=null,a=r;return e}function Ue(){var e;return null===(e=v())&&null===(e=y())&&(e=C()),e}function He(){var e;return null===(e=y())&&null===(e=C())&&(59===n.charCodeAt(a)?(e=";",a++):(e=null,l('";"')),null===e&&(63===n.charCodeAt(a)?(e="?",a++):(e=null,l('"?"')),null===e&&(58===n.charCodeAt(a)?(e=":",a++):(e=null,l('":"')),null===e&&(64===n.charCodeAt(a)?(e="@",a++):(e=null,l('"@"')),null===e&&(38===n.charCodeAt(a)?(e="&",a++):(e=null,l('"&"')),null===e&&(61===n.charCodeAt(a)?(e="=",a++):(e=null,l('"="')),null===e&&(43===n.charCodeAt(a)?(e="+",a++):(e=null,l('"+"')),null===e&&(36===n.charCodeAt(a)?(e="$",a++):(e=null,l('"$"')),null===e&&(44===n.charCodeAt(a)?(e=",",a++):(e=null,l('","'))))))))))),e}function We(){var e,t,r,i,o,s;if(o=a,null!==(e=qe())){for(t=[],s=a,47===n.charCodeAt(a)?(r="/",a++):(r=null,l('"/"')),null!==r&&null!==(i=qe())?r=[r,i]:(r=null,a=s);null!==r;)t.push(r),s=a,47===n.charCodeAt(a)?(r="/",a++):(r=null,l('"/"')),null!==r&&null!==(i=qe())?r=[r,i]:(r=null,a=s);null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;return e}function qe(){var e,t,r,i,o,s;for(o=a,e=[],t=Ve();null!==t;)e.push(t),t=Ve();if(null!==e){for(t=[],s=a,59===n.charCodeAt(a)?(r=";",a++):(r=null,l('";"')),null!==r&&null!==(i=ze())?r=[r,i]:(r=null,a=s);null!==r;)t.push(r),s=a,59===n.charCodeAt(a)?(r=";",a++):(r=null,l('";"')),null!==r&&null!==(i=ze())?r=[r,i]:(r=null,a=s);null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;return e}function ze(){var e,t;for(e=[],t=Ve();null!==t;)e.push(t),t=Ve();return e}function Ve(){var e;return null===(e=y())&&null===(e=C())&&(58===n.charCodeAt(a)?(e=":",a++):(e=null,l('":"')),null===e&&(64===n.charCodeAt(a)?(e="@",a++):(e=null,l('"@"')),null===e&&(38===n.charCodeAt(a)?(e="&",a++):(e=null,l('"&"')),null===e&&(61===n.charCodeAt(a)?(e="=",a++):(e=null,l('"="')),null===e&&(43===n.charCodeAt(a)?(e="+",a++):(e=null,l('"+"')),null===e&&(36===n.charCodeAt(a)?(e="$",a++):(e=null,l('"$"')),null===e&&(44===n.charCodeAt(a)?(e=",",a++):(e=null,l('","'))))))))),e}function Ye(){var e,t,r,i,o;if(i=a,o=a,null!==(e=f())){for(t=[],null===(r=f())&&null===(r=u())&&(43===n.charCodeAt(a)?(r="+",a++):(r=null,l('"+"')),null===r&&(45===n.charCodeAt(a)?(r="-",a++):(r=null,l('"-"')),null===r&&(46===n.charCodeAt(a)?(r=".",a++):(r=null,l('"."')))));null!==r;)t.push(r),null===(r=f())&&null===(r=u())&&(43===n.charCodeAt(a)?(r="+",a++):(r=null,l('"+"')),null===r&&(45===n.charCodeAt(a)?(r="-",a++):(r=null,l('"-"')),null===r&&(46===n.charCodeAt(a)?(r=".",a++):(r=null,l('"."')))));null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;return null!==e&&(e=function(e){Gn.scheme=n.substring(a,e)}(i)),null===e&&(a=i),e}function Ke(){var e;return null===(e=Qe())&&(e=Xe()),e}function Qe(){var e,t,r,i;return r=a,i=a,null!==(e=te())?(64===n.charCodeAt(a)?(t="@",a++):(t=null,l('"@"')),null!==t?e=[e,t]:(e=null,a=i)):(e=null,a=i),null!==(e=null!==e?e:"")&&null!==(t=ae())?e=[e,t]:(e=null,a=r),e=null!==e?e:""}function Xe(){var e,t;if(null===(t=y())&&null===(t=C())&&(36===n.charCodeAt(a)?(t="$",a++):(t=null,l('"$"')),null===t&&(44===n.charCodeAt(a)?(t=",",a++):(t=null,l('","')),null===t&&(59===n.charCodeAt(a)?(t=";",a++):(t=null,l('";"')),null===t&&(58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null===t&&(64===n.charCodeAt(a)?(t="@",a++):(t=null,l('"@"')),null===t&&(38===n.charCodeAt(a)?(t="&",a++):(t=null,l('"&"')),null===t&&(61===n.charCodeAt(a)?(t="=",a++):(t=null,l('"="')),null===t&&(43===n.charCodeAt(a)?(t="+",a++):(t=null,l('"+"')))))))))),null!==t)for(e=[];null!==t;)e.push(t),null===(t=y())&&null===(t=C())&&(36===n.charCodeAt(a)?(t="$",a++):(t=null,l('"$"')),null===t&&(44===n.charCodeAt(a)?(t=",",a++):(t=null,l('","')),null===t&&(59===n.charCodeAt(a)?(t=";",a++):(t=null,l('";"')),null===t&&(58===n.charCodeAt(a)?(t=":",a++):(t=null,l('":"')),null===t&&(64===n.charCodeAt(a)?(t="@",a++):(t=null,l('"@"')),null===t&&(38===n.charCodeAt(a)?(t="&",a++):(t=null,l('"&"')),null===t&&(61===n.charCodeAt(a)?(t="=",a++):(t=null,l('"="')),null===t&&(43===n.charCodeAt(a)?(t="+",a++):(t=null,l('"+"'))))))))));else e=null;return e}function Ze(){var e,t;for(e=[],t=Ue();null!==t;)e.push(t),t=Ue();return e}function Je(){var e,t,r,i,o,s,c,f;if(c=a,f=a,"sip"===n.substr(a,3).toLowerCase()?(e=n.substr(a,3),a+=3):(e=null,l('"SIP"')),null!==e)if(47===n.charCodeAt(a)?(t="/",a++):(t=null,l('"/"')),null!==t){if(null!==(i=u()))for(r=[];null!==i;)r.push(i),i=u();else r=null;if(null!==r)if(46===n.charCodeAt(a)?(i=".",a++):(i=null,l('"."')),null!==i){if(null!==(s=u()))for(o=[];null!==s;)o.push(s),s=u();else o=null;null!==o?e=[e,t,r,i,o]:(e=null,a=f)}else e=null,a=f;else e=null,a=f}else e=null,a=f;else e=null,a=f;return null!==e&&(e=function(e){Gn.sip_version=n.substring(a,e)}(c)),null===e&&(a=c),e}function et(){var e;return"INVITE"===n.substr(a,6)?(e="INVITE",a+=6):(e=null,l('"INVITE"')),e}function tt(){var e;return"ACK"===n.substr(a,3)?(e="ACK",a+=3):(e=null,l('"ACK"')),e}function nt(){var e;return"OPTIONS"===n.substr(a,7)?(e="OPTIONS",a+=7):(e=null,l('"OPTIONS"')),e}function rt(){var e;return"BYE"===n.substr(a,3)?(e="BYE",a+=3):(e=null,l('"BYE"')),e}function it(){var e;return"CANCEL"===n.substr(a,6)?(e="CANCEL",a+=6):(e=null,l('"CANCEL"')),e}function at(){var e;return"REGISTER"===n.substr(a,8)?(e="REGISTER",a+=8):(e=null,l('"REGISTER"')),e}function ot(){var e;return"SUBSCRIBE"===n.substr(a,9)?(e="SUBSCRIBE",a+=9):(e=null,l('"SUBSCRIBE"')),e}function st(){var e;return"NOTIFY"===n.substr(a,6)?(e="NOTIFY",a+=6):(e=null,l('"NOTIFY"')),e}function lt(){var e;return"REFER"===n.substr(a,5)?(e="REFER",a+=5):(e=null,l('"REFER"')),e}function ct(){var e,t;return t=a,null===(e=et())&&null===(e=tt())&&null===(e=nt())&&null===(e=rt())&&null===(e=it())&&null===(e=at())&&null===(e=ot())&&null===(e=st())&&null===(e=lt())&&(e=I()),null!==e&&(e=function(e){return Gn.method=n.substring(a,e),Gn.method}(t)),null===e&&(a=t),e}function ut(){var e,t,n,r,i,o;return o=a,null!==(e=Je())&&null!==(t=g())&&null!==(n=ft())&&null!==(r=g())&&null!==(i=ht())?e=[e,t,n,r,i]:(e=null,a=o),e}function ft(){var e,t,n;return t=a,null!==(e=dt())&&(n=e,e=void(Gn.status_code=parseInt(n.join("")))),null===e&&(a=t),e}function dt(){var e,t,n,r;return r=a,null!==(e=u())&&null!==(t=u())&&null!==(n=u())?e=[e,t,n]:(e=null,a=r),e}function ht(){var e,t,r;for(r=a,e=[],null===(t=v())&&null===(t=y())&&null===(t=C())&&null===(t=E())&&null===(t=D())&&null===(t=g())&&(t=_());null!==t;)e.push(t),null===(t=v())&&null===(t=y())&&null===(t=C())&&null===(t=E())&&null===(t=D())&&null===(t=g())&&(t=_());return null!==e&&(e=function(e){Gn.reason_phrase=n.substring(a,e)}(r)),null===e&&(a=r),e}function pt(){var e,t,n,r,i,o,s;if(i=a,o=a,null===(e=Q())&&(e=mt()),null!==e){for(t=[],s=a,null!==(n=B())&&null!==(r=_t())?n=[n,r]:(n=null,a=s);null!==n;)t.push(n),s=a,null!==(n=B())&&null!==(r=_t())?n=[n,r]:(n=null,a=s);null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;return null!==e&&(e=function(e){var t;Gn.multi_header||(Gn.multi_header=[]);try{t=new Fn(Gn.uri,Gn.display_name,Gn.params),delete Gn.uri,delete Gn.display_name,delete Gn.params}catch(e){t=null}Gn.multi_header.push({possition:a,offset:e,parsed:t})}(i)),null===e&&(a=i),e}function mt(){var e,t,n,r,i;return i=a,null!==(e=null!==(e=gt())?e:"")&&null!==(t=G())&&null!==(n=X())&&null!==(r=F())?e=[e,t,n,r]:(e=null,a=i),e}function gt(){var e,t,r,i,o,s,l;if(o=a,s=a,null!==(e=I())){for(t=[],l=a,null!==(r=A())&&null!==(i=I())?r=[r,i]:(r=null,a=l);null!==r;)t.push(r),l=a,null!==(r=A())&&null!==(i=I())?r=[r,i]:(r=null,a=l);null!==t?e=[e,t]:(e=null,a=s)}else e=null,a=s;return null===e&&(e=z()),null!==e&&(e=function(e,t){'"'===(t=n.substring(a,e).trim())[0]&&(t=t.substring(1,t.length-1)),Gn.display_name=t}(o,e)),null===e&&(a=o),e}function _t(){var e;return null===(e=bt())&&null===(e=vt())&&(e=Ct()),e}function bt(){var e,t,r,i,o,s;return i=a,o=a,"q"===n.substr(a,1).toLowerCase()?(e=n.substr(a,1),a++):(e=null,l('"q"')),null!==e&&null!==(t=R())&&null!==(r=wt())?e=[e,t,r]:(e=null,a=o),null!==e&&(s=e[2],Gn.params||(Gn.params={}),e=void(Gn.params.q=s)),null===e&&(a=i),e}function vt(){var e,t,r,i,o,s;return i=a,o=a,"expires"===n.substr(a,7).toLowerCase()?(e=n.substr(a,7),a+=7):(e=null,l('"expires"')),null!==e&&null!==(t=R())&&null!==(r=yt())?e=[e,t,r]:(e=null,a=o),null!==e&&(s=e[2],Gn.params||(Gn.params={}),e=void(Gn.params.expires=s)),null===e&&(a=i),e}function yt(){var e,t,n;if(n=a,null!==(t=u()))for(e=[];null!==t;)e.push(t),t=u();else e=null;return null!==e&&(e=parseInt(e.join(""))),null===e&&(a=n),e}function wt(){var e,t,r,i,o,s,c,f;return s=a,c=a,48===n.charCodeAt(a)?(e="0",a++):(e=null,l('"0"')),null!==e?(f=a,46===n.charCodeAt(a)?(t=".",a++):(t=null,l('"."')),null!==t&&null!==(r=null!==(r=u())?r:"")&&null!==(i=null!==(i=u())?i:"")&&null!==(o=null!==(o=u())?o:"")?t=[t,r,i,o]:(t=null,a=f),null!==(t=null!==t?t:"")?e=[e,t]:(e=null,a=c)):(e=null,a=c),null!==e&&(e=function(e){return parseFloat(n.substring(a,e))}(s)),null===e&&(a=s),e}function Ct(){var e,t,n,r,i,o,s,l;return r=a,i=a,null!==(e=I())?(o=a,null!==(t=R())&&null!==(n=At())?t=[t,n]:(t=null,a=o),null!==(t=null!==t?t:"")?e=[e,t]:(e=null,a=i)):(e=null,a=i),null!==e&&(s=e[0],l=e[1],Gn.params||(Gn.params={}),l=void 0===l?void 0:l[1],e=void(Gn.params[s.toLowerCase()]=l)),null===e&&(a=r),e}function At(){var e;return null===(e=I())&&null===(e=oe())&&(e=z()),e}function St(){var e;return"render"===n.substr(a,6).toLowerCase()?(e=n.substr(a,6),a+=6):(e=null,l('"render"')),null===e&&("session"===n.substr(a,7).toLowerCase()?(e=n.substr(a,7),a+=7):(e=null,l('"session"')),null===e&&("icon"===n.substr(a,4).toLowerCase()?(e=n.substr(a,4),a+=4):(e=null,l('"icon"')),null===e&&("alert"===n.substr(a,5).toLowerCase()?(e=n.substr(a,5),a+=5):(e=null,l('"alert"')),null===e&&(e=I())))),e}function xt(){var e;return null===(e=Tt())&&(e=Ct()),e}function Tt(){var e,t,r,i;return i=a,"handling"===n.substr(a,8).toLowerCase()?(e=n.substr(a,8),a+=8):(e=null,l('"handling"')),null!==e&&null!==(t=R())?("optional"===n.substr(a,8).toLowerCase()?(r=n.substr(a,8),a+=8):(r=null,l('"optional"')),null===r&&("required"===n.substr(a,8).toLowerCase()?(r=n.substr(a,8),a+=8):(r=null,l('"required"')),null===r&&(r=I())),null!==r?e=[e,t,r]:(e=null,a=i)):(e=null,a=i),e}function kt(){var e,t,n,r,i,o,s,l;if(s=a,null!==(e=Et()))if(null!==(t=O()))if(null!==(n=$t())){for(r=[],l=a,null!==(i=B())&&null!==(o=Ot())?i=[i,o]:(i=null,a=l);null!==i;)r.push(i),l=a,null!==(i=B())&&null!==(o=Ot())?i=[i,o]:(i=null,a=l);null!==r?e=[e,t,n,r]:(e=null,a=s)}else e=null,a=s;else e=null,a=s;else e=null,a=s;return e}function Et(){var e;return null===(e=Dt())&&(e=It()),e}function Dt(){var e;return"text"===n.substr(a,4).toLowerCase()?(e=n.substr(a,4),a+=4):(e=null,l('"text"')),null===e&&("image"===n.substr(a,5).toLowerCase()?(e=n.substr(a,5),a+=5):(e=null,l('"image"')),null===e&&("audio"===n.substr(a,5).toLowerCase()?(e=n.substr(a,5),a+=5):(e=null,l('"audio"')),null===e&&("video"===n.substr(a,5).toLowerCase()?(e=n.substr(a,5),a+=5):(e=null,l('"video"')),null===e&&("application"===n.substr(a,11).toLowerCase()?(e=n.substr(a,11),a+=11):(e=null,l('"application"')),null===e&&(e=Pt()))))),e}function It(){var e;return"message"===n.substr(a,7).toLowerCase()?(e=n.substr(a,7),a+=7):(e=null,l('"message"')),null===e&&("multipart"===n.substr(a,9).toLowerCase()?(e=n.substr(a,9),a+=9):(e=null,l('"multipart"')),null===e&&(e=Pt())),e}function Pt(){var e;return null===(e=I())&&(e=Mt()),e}function Mt(){var e,t,r;return r=a,"x-"===n.substr(a,2).toLowerCase()?(e=n.substr(a,2),a+=2):(e=null,l('"x-"')),null!==e&&null!==(t=I())?e=[e,t]:(e=null,a=r),e}function $t(){var e;return null===(e=Pt())&&(e=I()),e}function Ot(){var e,t,n,r;return r=a,null!==(e=I())&&null!==(t=R())&&null!==(n=Rt())?e=[e,t,n]:(e=null,a=r),e}function Rt(){var e;return null===(e=I())&&(e=z()),e}function Nt(){var e,t,n,r;if(n=a,null!==(t=u()))for(e=[];null!==t;)e.push(t),t=u();else e=null;return null!==e&&(r=e,e=void(Gn.value=parseInt(r.join("")))),null===e&&(a=n),e}function Lt(){var e,t,r,i,o,s;if(o=a,null!==(e=P())){for(t=[],s=a,46===n.charCodeAt(a)?(r=".",a++):(r=null,l('"."')),null!==r&&null!==(i=P())?r=[r,i]:(r=null,a=s);null!==r;)t.push(r),s=a,46===n.charCodeAt(a)?(r=".",a++):(r=null,l('"."')),null!==r&&null!==(i=P())?r=[r,i]:(r=null,a=s);null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;return e}function Ft(){var e;return null===(e=Gt())&&(e=Ct()),e}function Gt(){var e,t,r,i,o,s;return i=a,o=a,"tag"===n.substr(a,3).toLowerCase()?(e=n.substr(a,3),a+=3):(e=null,l('"tag"')),null!==e&&null!==(t=R())&&null!==(r=I())?e=[e,t,r]:(e=null,a=o),null!==e&&(s=e[2],e=void(Gn.tag=s)),null===e&&(a=i),e}function jt(){var e,t,r,i,o,s,c,u;if(c=a,"digest"===n.substr(a,6).toLowerCase()?(e=n.substr(a,6),a+=6):(e=null,l('"Digest"')),null!==e)if(null!==(t=A()))if(null!==(r=Ht())){for(i=[],u=a,null!==(o=j())&&null!==(s=Ht())?o=[o,s]:(o=null,a=u);null!==o;)i.push(o),u=a,null!==(o=j())&&null!==(s=Ht())?o=[o,s]:(o=null,a=u);null!==i?e=[e,t,r,i]:(e=null,a=c)}else e=null,a=c;else e=null,a=c;else e=null,a=c;return null===e&&(e=Bt()),e}function Bt(){var e,t,n,r,i,o,s,l;if(s=a,null!==(e=I()))if(null!==(t=A()))if(null!==(n=Ut())){for(r=[],l=a,null!==(i=j())&&null!==(o=Ut())?i=[i,o]:(i=null,a=l);null!==i;)r.push(i),l=a,null!==(i=j())&&null!==(o=Ut())?i=[i,o]:(i=null,a=l);null!==r?e=[e,t,n,r]:(e=null,a=s)}else e=null,a=s;else e=null,a=s;else e=null,a=s;return e}function Ut(){var e,t,n,r;return r=a,null!==(e=I())&&null!==(t=R())?(null===(n=I())&&(n=z()),null!==n?e=[e,t,n]:(e=null,a=r)):(e=null,a=r),e}function Ht(){var e;return null===(e=Wt())&&null===(e=zt())&&null===(e=Yt())&&null===(e=Qt())&&null===(e=Xt())&&null===(e=Zt())&&null===(e=Jt())&&(e=Ut()),e}function Wt(){var e,t,r,i;return i=a,"realm"===n.substr(a,5).toLowerCase()?(e=n.substr(a,5),a+=5):(e=null,l('"realm"')),null!==e&&null!==(t=R())&&null!==(r=qt())?e=[e,t,r]:(e=null,a=i),e}function qt(){var e,t,n;return t=a,null!==(e=V())&&(n=e,e=void(Gn.realm=n)),null===e&&(a=t),e}function zt(){var e,t,r,i,o,s,c,u,f;if(u=a,"domain"===n.substr(a,6).toLowerCase()?(e=n.substr(a,6),a+=6):(e=null,l('"domain"')),null!==e)if(null!==(t=R()))if(null!==(r=H()))if(null!==(i=Vt())){if(o=[],f=a,null!==(c=g()))for(s=[];null!==c;)s.push(c),c=g();else s=null;for(null!==s&&null!==(c=Vt())?s=[s,c]:(s=null,a=f);null!==s;){if(o.push(s),f=a,null!==(c=g()))for(s=[];null!==c;)s.push(c),c=g();else s=null;null!==s&&null!==(c=Vt())?s=[s,c]:(s=null,a=f)}null!==o&&null!==(s=W())?e=[e,t,r,i,o,s]:(e=null,a=u)}else e=null,a=u;else e=null,a=u;else e=null,a=u;else e=null,a=u;return e}function Vt(){var e;return null===(e=Le())&&(e=je()),e}function Yt(){var e,t,r,i;return i=a,"nonce"===n.substr(a,5).toLowerCase()?(e=n.substr(a,5),a+=5):(e=null,l('"nonce"')),null!==e&&null!==(t=R())&&null!==(r=Kt())?e=[e,t,r]:(e=null,a=i),e}function Kt(){var e,t,n;return t=a,null!==(e=V())&&(n=e,e=void(Gn.nonce=n)),null===e&&(a=t),e}function Qt(){var e,t,r,i,o,s;return i=a,o=a,"opaque"===n.substr(a,6).toLowerCase()?(e=n.substr(a,6),a+=6):(e=null,l('"opaque"')),null!==e&&null!==(t=R())&&null!==(r=V())?e=[e,t,r]:(e=null,a=o),null!==e&&(s=e[2],e=void(Gn.opaque=s)),null===e&&(a=i),e}function Xt(){var e,t,r,i,o;return i=a,"stale"===n.substr(a,5).toLowerCase()?(e=n.substr(a,5),a+=5):(e=null,l('"stale"')),null!==e&&null!==(t=R())?(o=a,"true"===n.substr(a,4).toLowerCase()?(r=n.substr(a,4),a+=4):(r=null,l('"true"')),null!==r&&(r=void(Gn.stale=!0)),null===r&&(a=o),null===r&&(o=a,"false"===n.substr(a,5).toLowerCase()?(r=n.substr(a,5),a+=5):(r=null,l('"false"')),null!==r&&(r=void(Gn.stale=!1)),null===r&&(a=o)),null!==r?e=[e,t,r]:(e=null,a=i)):(e=null,a=i),e}function Zt(){var e,t,r,i,o,s;return i=a,o=a,"algorithm"===n.substr(a,9).toLowerCase()?(e=n.substr(a,9),a+=9):(e=null,l('"algorithm"')),null!==e&&null!==(t=R())?("md5"===n.substr(a,3).toLowerCase()?(r=n.substr(a,3),a+=3):(r=null,l('"MD5"')),null===r&&("md5-sess"===n.substr(a,8).toLowerCase()?(r=n.substr(a,8),a+=8):(r=null,l('"MD5-sess"')),null===r&&(r=I())),null!==r?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(s=e[2],e=void(Gn.algorithm=s.toUpperCase())),null===e&&(a=i),e}function Jt(){var e,t,r,i,o,s,c,u,f,d;if(u=a,"qop"===n.substr(a,3).toLowerCase()?(e=n.substr(a,3),a+=3):(e=null,l('"qop"')),null!==e)if(null!==(t=R()))if(null!==(r=H())){if(f=a,null!==(i=en())){for(o=[],d=a,44===n.charCodeAt(a)?(s=",",a++):(s=null,l('","')),null!==s&&null!==(c=en())?s=[s,c]:(s=null,a=d);null!==s;)o.push(s),d=a,44===n.charCodeAt(a)?(s=",",a++):(s=null,l('","')),null!==s&&null!==(c=en())?s=[s,c]:(s=null,a=d);null!==o?i=[i,o]:(i=null,a=f)}else i=null,a=f;null!==i&&null!==(o=W())?e=[e,t,r,i,o]:(e=null,a=u)}else e=null,a=u;else e=null,a=u;else e=null,a=u;return e}function en(){var e,t,r;return t=a,"auth-int"===n.substr(a,8).toLowerCase()?(e=n.substr(a,8),a+=8):(e=null,l('"auth-int"')),null===e&&("auth"===n.substr(a,4).toLowerCase()?(e=n.substr(a,4),a+=4):(e=null,l('"auth"')),null===e&&(e=I())),null!==e&&(r=e,Gn.qop||(Gn.qop=[]),e=void Gn.qop.push(r.toLowerCase())),null===e&&(a=t),e}function tn(){var e,t,n,r,i,o,s;if(i=a,o=a,null!==(e=mt())){for(t=[],s=a,null!==(n=B())&&null!==(r=Ct())?n=[n,r]:(n=null,a=s);null!==n;)t.push(n),s=a,null!==(n=B())&&null!==(r=Ct())?n=[n,r]:(n=null,a=s);null!==t?e=[e,t]:(e=null,a=o)}else e=null,a=o;return null!==e&&(e=function(e){var t;Gn.multi_header||(Gn.multi_header=[]);try{t=new Fn(Gn.uri,Gn.display_name,Gn.params),delete Gn.uri,delete Gn.display_name,delete Gn.params}catch(e){t=null}Gn.multi_header.push({possition:a,offset:e,parsed:t})}(i)),null===e&&(a=i),e}function nn(){var e;return null===(e=rn())&&(e=Ct()),e}function rn(){var e,t,r,i,o,s,c;if(o=a,s=a,"cause"===n.substr(a,5).toLowerCase()?(e=n.substr(a,5),a+=5):(e=null,l('"cause"')),null!==e)if(null!==(t=R())){if(null!==(i=u()))for(r=[];null!==i;)r.push(i),i=u();else r=null;null!==r?e=[e,t,r]:(e=null,a=s)}else e=null,a=s;else e=null,a=s;return null!==e&&(c=e[2],e=void(Gn.cause=parseInt(c.join("")))),null===e&&(a=o),e}function an(){var e,t,n,r,i,o;if(i=a,null!==(e=mt())){for(t=[],o=a,null!==(n=B())&&null!==(r=Ct())?n=[n,r]:(n=null,a=o);null!==n;)t.push(n),o=a,null!==(n=B())&&null!==(r=Ct())?n=[n,r]:(n=null,a=o);null!==t?e=[e,t]:(e=null,a=i)}else e=null,a=i;return e}function on(){var e,t;return t=a,"active"===n.substr(a,6).toLowerCase()?(e=n.substr(a,6),a+=6):(e=null,l('"active"')),null===e&&("pending"===n.substr(a,7).toLowerCase()?(e=n.substr(a,7),a+=7):(e=null,l('"pending"')),null===e&&("terminated"===n.substr(a,10).toLowerCase()?(e=n.substr(a,10),a+=10):(e=null,l('"terminated"')),null===e&&(e=I()))),null!==e&&(e=function(e){Gn.state=n.substring(a,e)}(t)),null===e&&(a=t),e}function sn(){var e,t,r,i,o,s,c,u;return i=a,o=a,"reason"===n.substr(a,6).toLowerCase()?(e=n.substr(a,6),a+=6):(e=null,l('"reason"')),null!==e&&null!==(t=R())&&null!==(r=ln())?e=[e,t,r]:(e=null,a=o),null!==e&&(e=void(void 0!==(s=e[2])&&(Gn.reason=s))),null===e&&(a=i),null===e&&(i=a,o=a,"expires"===n.substr(a,7).toLowerCase()?(e=n.substr(a,7),a+=7):(e=null,l('"expires"')),null!==e&&null!==(t=R())&&null!==(r=yt())?e=[e,t,r]:(e=null,a=o),null!==e&&(e=void(void 0!==(u=e[2])&&(Gn.expires=u))),null===e&&(a=i),null===e&&(i=a,o=a,"retry_after"===n.substr(a,11).toLowerCase()?(e=n.substr(a,11),a+=11):(e=null,l('"retry_after"')),null!==e&&null!==(t=R())&&null!==(r=yt())?e=[e,t,r]:(e=null,a=o),null!==e&&(e=void(void 0!==(c=e[2])&&(Gn.retry_after=c))),null===e&&(a=i),null===e&&(e=Ct()))),e}function ln(){var e;return"deactivated"===n.substr(a,11).toLowerCase()?(e=n.substr(a,11),a+=11):(e=null,l('"deactivated"')),null===e&&("probation"===n.substr(a,9).toLowerCase()?(e=n.substr(a,9),a+=9):(e=null,l('"probation"')),null===e&&("rejected"===n.substr(a,8).toLowerCase()?(e=n.substr(a,8),a+=8):(e=null,l('"rejected"')),null===e&&("timeout"===n.substr(a,7).toLowerCase()?(e=n.substr(a,7),a+=7):(e=null,l('"timeout"')),null===e&&("giveup"===n.substr(a,6).toLowerCase()?(e=n.substr(a,6),a+=6):(e=null,l('"giveup"')),null===e&&("noresource"===n.substr(a,10).toLowerCase()?(e=n.substr(a,10),a+=10):(e=null,l('"noresource"')),null===e&&("invariant"===n.substr(a,9).toLowerCase()?(e=n.substr(a,9),a+=9):(e=null,l('"invariant"')),null===e&&(e=I()))))))),e}function cn(){var e;return null===(e=Gt())&&(e=Ct()),e}function un(){var e,t,n,r,i,o,s,l;if(s=a,null!==(e=_n()))if(null!==(t=A()))if(null!==(n=yn())){for(r=[],l=a,null!==(i=B())&&null!==(o=fn())?i=[i,o]:(i=null,a=l);null!==i;)r.push(i),l=a,null!==(i=B())&&null!==(o=fn())?i=[i,o]:(i=null,a=l);null!==r?e=[e,t,n,r]:(e=null,a=s)}else e=null,a=s;else e=null,a=s;else e=null,a=s;return e}function fn(){var e;return null===(e=dn())&&null===(e=hn())&&null===(e=pn())&&null===(e=mn())&&null===(e=gn())&&(e=Ct()),e}function dn(){var e,t,r,i,o,s;return i=a,o=a,"ttl"===n.substr(a,3).toLowerCase()?(e=n.substr(a,3),a+=3):(e=null,l('"ttl"')),null!==e&&null!==(t=R())&&null!==(r=An())?e=[e,t,r]:(e=null,a=o),null!==e&&(s=e[2],e=void(Gn.ttl=s)),null===e&&(a=i),e}function hn(){var e,t,r,i,o,s;return i=a,o=a,"maddr"===n.substr(a,5).toLowerCase()?(e=n.substr(a,5),a+=5):(e=null,l('"maddr"')),null!==e&&null!==(t=R())&&null!==(r=oe())?e=[e,t,r]:(e=null,a=o),null!==e&&(s=e[2],e=void(Gn.maddr=s)),null===e&&(a=i),e}function pn(){var e,t,r,i,o,s;return i=a,o=a,"received"===n.substr(a,8).toLowerCase()?(e=n.substr(a,8),a+=8):(e=null,l('"received"')),null!==e&&null!==(t=R())?(null===(r=pe())&&(r=fe()),null!==r?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(s=e[2],e=void(Gn.received=s)),null===e&&(a=i),e}function mn(){var e,t,r,i,o,s;return i=a,o=a,"branch"===n.substr(a,6).toLowerCase()?(e=n.substr(a,6),a+=6):(e=null,l('"branch"')),null!==e&&null!==(t=R())&&null!==(r=I())?e=[e,t,r]:(e=null,a=o),null!==e&&(s=e[2],e=void(Gn.branch=s)),null===e&&(a=i),e}function gn(){var e,t,r,i,o,s,c;if(o=a,s=a,"rport"===n.substr(a,5).toLowerCase()?(e=n.substr(a,5),a+=5):(e=null,l('"rport"')),null!==e){if(c=a,null!==(t=R())){for(r=[],i=u();null!==i;)r.push(i),i=u();null!==r?t=[t,r]:(t=null,a=c)}else t=null,a=c;null!==(t=null!==t?t:"")?e=[e,t]:(e=null,a=s)}else e=null,a=s;return null!==e&&(e=void("undefined"!=typeof response_port&&(Gn.rport=response_port.join("")))),null===e&&(a=o),e}function _n(){var e,t,n,r,i,o;return o=a,null!==(e=bn())&&null!==(t=O())&&null!==(n=I())&&null!==(r=O())&&null!==(i=vn())?e=[e,t,n,r,i]:(e=null,a=o),e}function bn(){var e,t,r;return t=a,"sip"===n.substr(a,3).toLowerCase()?(e=n.substr(a,3),a+=3):(e=null,l('"SIP"')),null===e&&(e=I()),null!==e&&(r=e,e=void(Gn.protocol=r)),null===e&&(a=t),e}function vn(){var e,t,r;return t=a,"udp"===n.substr(a,3).toLowerCase()?(e=n.substr(a,3),a+=3):(e=null,l('"UDP"')),null===e&&("tcp"===n.substr(a,3).toLowerCase()?(e=n.substr(a,3),a+=3):(e=null,l('"TCP"')),null===e&&("tls"===n.substr(a,3).toLowerCase()?(e=n.substr(a,3),a+=3):(e=null,l('"TLS"')),null===e&&("sctp"===n.substr(a,4).toLowerCase()?(e=n.substr(a,4),a+=4):(e=null,l('"SCTP"')),null===e&&(e=I())))),null!==e&&(r=e,e=void(Gn.transport=r)),null===e&&(a=t),e}function yn(){var e,t,n,r,i;return r=a,null!==(e=wn())?(i=a,null!==(t=U())&&null!==(n=Cn())?t=[t,n]:(t=null,a=i),null!==(t=null!==t?t:"")?e=[e,t]:(e=null,a=r)):(e=null,a=r),e}function wn(){var e,t;return t=a,null===(e=pe())&&null===(e=ue())&&(e=se()),null!==e&&(e=function(e){Gn.host=n.substring(a,e)}(t)),null===e&&(a=t),e}function Cn(){var e,t,n,r,i,o,s,l;return o=a,s=a,null!==(e=null!==(e=u())?e:"")&&null!==(t=null!==(t=u())?t:"")&&null!==(n=null!==(n=u())?n:"")&&null!==(r=null!==(r=u())?r:"")&&null!==(i=null!==(i=u())?i:"")?e=[e,t,n,r,i]:(e=null,a=s),null!==e&&(l=e,e=void(Gn.port=parseInt(l.join("")))),null===e&&(a=o),e}function An(){var e,t,n,r,i;return r=a,i=a,null!==(e=u())&&null!==(t=null!==(t=u())?t:"")&&null!==(n=null!==(n=u())?n:"")?e=[e,t,n]:(e=null,a=i),null!==e&&(e=parseInt(e.join(""))),null===e&&(a=r),e}function Sn(){var e,t,n;return t=a,null!==(e=yt())&&(n=e,e=void(Gn.expires=n)),null===e&&(a=t),e}function xn(){var e;return null===(e=Tn())&&(e=Ct()),e}function Tn(){var e,t,r,i,o,s;return i=a,o=a,"refresher"===n.substr(a,9).toLowerCase()?(e=n.substr(a,9),a+=9):(e=null,l('"refresher"')),null!==e&&null!==(t=R())?("uac"===n.substr(a,3).toLowerCase()?(r=n.substr(a,3),a+=3):(r=null,l('"uac"')),null===r&&("uas"===n.substr(a,3).toLowerCase()?(r=n.substr(a,3),a+=3):(r=null,l('"uas"'))),null!==r?e=[e,t,r]:(e=null,a=o)):(e=null,a=o),null!==e&&(s=e[2],e=void(Gn.refresher=s.toLowerCase())),null===e&&(a=i),e}function kn(){var e,t;for(e=[],null===(t=k())&&null===(t=D())&&(t=A());null!==t;)e.push(t),null===(t=k())&&null===(t=D())&&(t=A());return e}function En(){var e,t,r,i,o,s,c,u,f,d,h;return d=a,h=a,null!==(e=In())?(45===n.charCodeAt(a)?(t="-",a++):(t=null,l('"-"')),null!==t&&null!==(r=Dn())?(45===n.charCodeAt(a)?(i="-",a++):(i=null,l('"-"')),null!==i&&null!==(o=Dn())?(45===n.charCodeAt(a)?(s="-",a++):(s=null,l('"-"')),null!==s&&null!==(c=Dn())?(45===n.charCodeAt(a)?(u="-",a++):(u=null,l('"-"')),null!==u&&null!==(f=Pn())?e=[e,t,r,i,o,s,c,u,f]:(e=null,a=h)):(e=null,a=h)):(e=null,a=h)):(e=null,a=h)):(e=null,a=h),null!==e&&(e=function(e,t){Gn=n.substring(a+5,e)}(d,e[0])),null===e&&(a=d),e}function Dn(){var e,t,n,r,i;return i=a,null!==(e=d())&&null!==(t=d())&&null!==(n=d())&&null!==(r=d())?e=[e,t,n,r]:(e=null,a=i),e}function In(){var e,t,n;return n=a,null!==(e=Dn())&&null!==(t=Dn())?e=[e,t]:(e=null,a=n),e}function Pn(){var e,t,n,r;return r=a,null!==(e=Dn())&&null!==(t=Dn())&&null!==(n=Dn())?e=[e,t,n]:(e=null,a=r),e}function Mn(){var e,t,r,i,o,s;return i=a,o=a,null!==(e=M())?(s=a,64===n.charCodeAt(a)?(t="@",a++):(t=null,l('"@"')),null!==t&&null!==(r=M())?t=[t,r]:(t=null,a=s),null!==(t=null!==t?t:"")?e=[e,t]:(e=null,a=o)):(e=null,a=o),null!==e&&(e=function(e){Gn.call_id=n.substring(a,e)}(i)),null===e&&(a=i),e}function $n(){var e;return null===(e=On())&&null===(e=Rn())&&null===(e=Nn())&&(e=Ct()),e}function On(){var e,t,r,i,o,s;return i=a,o=a,"to-tag"===n.substr(a,6)?(e="to-tag",a+=6):(e=null,l('"to-tag"')),null!==e&&null!==(t=R())&&null!==(r=I())?e=[e,t,r]:(e=null,a=o),null!==e&&(s=e[2],e=void(Gn.to_tag=s)),null===e&&(a=i),e}function Rn(){var e,t,r,i,o,s;return i=a,o=a,"from-tag"===n.substr(a,8)?(e="from-tag",a+=8):(e=null,l('"from-tag"')),null!==e&&null!==(t=R())&&null!==(r=I())?e=[e,t,r]:(e=null,a=o),null!==e&&(s=e[2],e=void(Gn.from_tag=s)),null===e&&(a=i),e}function Nn(){var e,t;return t=a,"early-only"===n.substr(a,10)?(e="early-only",a+=10):(e=null,l('"early-only"')),null!==e&&(e=void(Gn.early_only=!0)),null===e&&(a=t),e}var Ln=e("./URI"),Fn=e("./NameAddrHeader"),Gn={};if(null===i[r]()||a!==n.length){var jn=Math.max(a,o),Bn=jn<n.length?n.charAt(jn):null,Un=function(){for(var e=1,t=1,r=!1,i=0;i<Math.max(a,o);i++){var s=n.charAt(i);"\n"===s?(r||e++,t=1,r=!1):"\r"===s||"\u2028"===s||"\u2029"===s?(e++,t=1,r=!0):(t++,r=!1)}return{line:e,column:t}}();return new this.SyntaxError(function(e){e.sort();for(var t=null,n=[],r=0;r<e.length;r++)e[r]!==t&&(n.push(e[r]),t=e[r]);return n}(s),Bn,jn,Un.line,Un.column),-1}return Gn},toSource:function(){return this._source},SyntaxError:function(e,n,r,i,a){this.name="SyntaxError",this.expected=e,this.found=n,this.message=function(e,n){var r;switch(e.length){case 0:r="end of input";break;case 1:r=e[0];break;default:r=e.slice(0,e.length-1).join(", ")+" or "+e[e.length-1]}return"Expected "+r+" but "+(n?t(n):"end of input")+" found."}(e,n),this.offset=r,this.line=i,this.column=a}};return n.SyntaxError.prototype=Error.prototype,n}()},{"./NameAddrHeader":10,"./URI":25}],8:[function(e,t,n){"use strict";var r=e("webrtc-adapter"),i=e("../package.json"),a=e("./Constants"),o=e("./Exceptions"),s=e("./Utils"),l=e("./UA"),c=e("./URI"),u=e("./NameAddrHeader"),f=e("./Grammar"),d=e("./WebSocketInterface");e("debug")("JsSIP")("version %s",i.version),t.exports={C:a,Exceptions:o,Utils:s,UA:l,URI:c,NameAddrHeader:u,WebSocketInterface:d,Grammar:f,debug:e("debug"),adapter:r,get name(){return i.title},get version(){return i.version}}},{"../package.json":51,"./Constants":2,"./Exceptions":6,"./Grammar":7,"./NameAddrHeader":10,"./UA":24,"./URI":25,"./Utils":26,"./WebSocketInterface":27,debug:29,"webrtc-adapter":40}],9:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("events").EventEmitter,a=e("./Constants"),o=e("./SIPMessage"),s=e("./Utils"),l=e("./RequestSender"),c=e("./Exceptions"),u=e("debug")("JsSIP:Message");t.exports=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n._ua=e,n._request=null,n._closed=!1,n._direction=null,n._local_identity=null,n._remote_identity=null,n._is_replied=!1,n._data={},n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"send",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{},i=e;if(void 0===e||void 0===t)throw new TypeError("Not enough arguments");if(!(e=this._ua.normalizeTarget(e)))throw new TypeError("Invalid target: "+i);var c=s.cloneArray(r.extraHeaders),u=r.eventHandlers||{},f=r.contentType||"text/plain";for(var d in u)Object.prototype.hasOwnProperty.call(u,d)&&this.on(d,u[d]);c.push("Content-Type: "+f),this._request=new o.OutgoingRequest(a.MESSAGE,e,this._ua,null,c),t&&(this._request.body=t);var h=new l(this._ua,this._request,{onRequestTimeout:function(){n._onRequestTimeout()},onTransportError:function(){n._onTransportError()},onReceiveResponse:function(e){n._receiveResponse(e)}});this._newMessage("local",this._request),h.send()}},{key:"init_incoming",value:function(e){this._request=e,this._newMessage("remote",e),this._is_replied||(this._is_replied=!0,e.reply(200)),this._close()}},{key:"accept",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=s.cloneArray(e.extraHeaders),n=e.body;if("incoming"!==this._direction)throw new c.NotSupportedError('"accept" not supported for outgoing Message');if(this._is_replied)throw new Error("incoming Message already replied");this._is_replied=!0,this._request.reply(200,null,t,n)}},{key:"reject",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.status_code||480,n=e.reason_phrase,r=s.cloneArray(e.extraHeaders),i=e.body;if("incoming"!==this._direction)throw new c.NotSupportedError('"reject" not supported for outgoing Message');if(this._is_replied)throw new Error("incoming Message already replied");if(t<300||t>=700)throw new TypeError("Invalid status_code: "+t);this._is_replied=!0,this._request.reply(t,n,r,i)}},{key:"_receiveResponse",value:function(e){if(!this._closed)switch(!0){case/^1[0-9]{2}$/.test(e.status_code):break;case/^2[0-9]{2}$/.test(e.status_code):this._succeeded("remote",e);break;default:var t=s.sipErrorCause(e.status_code);this._failed("remote",e,t)}}},{key:"_onRequestTimeout",value:function(){this._closed||this._failed("system",null,a.causes.REQUEST_TIMEOUT)}},{key:"_onTransportError",value:function(){this._closed||this._failed("system",null,a.causes.CONNECTION_ERROR)}},{key:"_close",value:function(){this._closed=!0,this._ua.destroyMessage(this)}},{key:"_newMessage",value:function(e,t){"remote"===e?(this._direction="incoming",this._local_identity=t.to,this._remote_identity=t.from):"local"===e&&(this._direction="outgoing",this._local_identity=t.from,this._remote_identity=t.to),this._ua.newMessage(this,{originator:e,message:this,request:t})}},{key:"_failed",value:function(e,t,n){u("MESSAGE failed"),this._close(),u('emit "failed"'),this.emit("failed",{originator:e,response:t||null,cause:n})}},{key:"_succeeded",value:function(e,t){u("MESSAGE succeeded"),this._close(),u('emit "succeeded"'),this.emit("succeeded",{originator:e,response:t})}},{key:"direction",get:function(){return this._direction}},{key:"local_identity",get:function(){return this._local_identity}},{key:"remote_identity",get:function(){return this._remote_identity}}]),t}(i)},{"./Constants":2,"./Exceptions":6,"./RequestSender":18,"./SIPMessage":19,"./Utils":26,debug:29,events:31}],10:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("./URI"),a=e("./Grammar");t.exports=function(){function e(t,n,r){if(function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),!(t&&t instanceof i))throw new TypeError('missing or invalid "uri" parameter');for(var a in this._uri=t,this._parameters={},this._display_name=n,r)Object.prototype.hasOwnProperty.call(r,a)&&this.setParam(a,r[a])}return r(e,null,[{key:"parse",value:function(e){return-1!==(e=a.parse(e,"Name_Addr_Header"))?e:void 0}}]),r(e,[{key:"setParam",value:function(e,t){e&&(this._parameters[e.toLowerCase()]=null==t?null:t.toString())}},{key:"getParam",value:function(e){if(e)return this._parameters[e.toLowerCase()]}},{key:"hasParam",value:function(e){if(e)return!!this._parameters.hasOwnProperty(e.toLowerCase())}},{key:"deleteParam",value:function(e){if(e=e.toLowerCase(),this._parameters.hasOwnProperty(e)){var t=this._parameters[e];return delete this._parameters[e],t}}},{key:"clearParams",value:function(){this._parameters={}}},{key:"clone",value:function(){return new e(this._uri.clone(),this._display_name,JSON.parse(JSON.stringify(this._parameters)))}},{key:"toString",value:function(){var e=this._display_name||0===this._display_name?'"'+this._display_name+'" ':"";for(var t in e+="<"+this._uri.toString()+">",this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,t)&&(e+=";"+t,null!==this._parameters[t]&&(e+="="+this._parameters[t]));return e}},{key:"uri",get:function(){return this._uri}},{key:"display_name",get:function(){return this._display_name},set:function(e){this._display_name=0===e?"0":e}}]),e}()},{"./Grammar":7,"./URI":25}],11:[function(e,t,n){"use strict";var r=e("./Grammar"),i=e("./SIPMessage"),a=e("debug")("JsSIP:ERROR:Parser");function o(e,t){var n=t,r=0,i=0;if(e.substring(n,n+2).match(/(^\r\n)/))return-2;for(;0===r;){if(-1===(i=e.indexOf("\r\n",n)))return i;!e.substring(i+2,i+4).match(/(^\r\n)/)&&e.charAt(i+2).match(/(^\s+)/)?n=i+2:r=i}return r}function s(e,t,n,a){var o=void 0,s=t.indexOf(":",n),l=t.substring(n,s).trim(),c=t.substring(s+1,a).trim();switch(l.toLowerCase()){case"via":case"v":e.addHeader("via",c),1===e.getHeaders("via").length?(o=e.parseHeader("Via"))&&(e.via=o,e.via_branch=o.branch):o=0;break;case"from":case"f":e.setHeader("from",c),(o=e.parseHeader("from"))&&(e.from=o,e.from_tag=o.getParam("tag"));break;case"to":case"t":e.setHeader("to",c),(o=e.parseHeader("to"))&&(e.to=o,e.to_tag=o.getParam("tag"));break;case"record-route":if(-1===(o=r.parse(c,"Record_Route")))o=void 0;else{var u=!0,f=!1,d=void 0;try{for(var h,p=o[Symbol.iterator]();!(u=(h=p.next()).done);u=!0){var m=h.value;e.addHeader("record-route",c.substring(m.possition,m.offset)),e.headers["Record-Route"][e.getHeaders("record-route").length-1].parsed=m.parsed}}catch(e){f=!0,d=e}finally{try{!u&&p.return&&p.return()}finally{if(f)throw d}}}break;case"call-id":case"i":e.setHeader("call-id",c),(o=e.parseHeader("call-id"))&&(e.call_id=c);break;case"contact":case"m":if(-1===(o=r.parse(c,"Contact")))o=void 0;else{var g=!0,_=!1,b=void 0;try{for(var v,y=o[Symbol.iterator]();!(g=(v=y.next()).done);g=!0){var w=v.value;e.addHeader("contact",c.substring(w.possition,w.offset)),e.headers.Contact[e.getHeaders("contact").length-1].parsed=w.parsed}}catch(e){_=!0,b=e}finally{try{!g&&y.return&&y.return()}finally{if(_)throw b}}}break;case"content-length":case"l":e.setHeader("content-length",c),o=e.parseHeader("content-length");break;case"content-type":case"c":e.setHeader("content-type",c),o=e.parseHeader("content-type");break;case"cseq":e.setHeader("cseq",c),(o=e.parseHeader("cseq"))&&(e.cseq=o.value),e instanceof i.IncomingResponse&&(e.method=o.method);break;case"max-forwards":e.setHeader("max-forwards",c),o=e.parseHeader("max-forwards");break;case"www-authenticate":e.setHeader("www-authenticate",c),o=e.parseHeader("www-authenticate");break;case"proxy-authenticate":e.setHeader("proxy-authenticate",c),o=e.parseHeader("proxy-authenticate");break;case"session-expires":case"x":e.setHeader("session-expires",c),(o=e.parseHeader("session-expires"))&&(e.session_expires=o.expires,e.session_expires_refresher=o.refresher);break;case"refer-to":case"r":e.setHeader("refer-to",c),(o=e.parseHeader("refer-to"))&&(e.refer_to=o);break;case"replaces":e.setHeader("replaces",c),(o=e.parseHeader("replaces"))&&(e.replaces=o);break;case"event":case"o":e.setHeader("event",c),(o=e.parseHeader("event"))&&(e.event=o);break;default:e.addHeader(l,c),o=0}return void 0!==o||{error:'error parsing header "'+l+'"'}}a.log=console.warn.bind(console),n.parseMessage=function(e,t){var n=void 0,l=void 0,c=e.indexOf("\r\n");if(-1!==c){var u=e.substring(0,c),f=r.parse(u,"Request_Response");if(-1!==f){f.status_code?((n=new i.IncomingResponse).status_code=f.status_code,n.reason_phrase=f.reason_phrase):((n=new i.IncomingRequest(t)).method=f.method,n.ruri=f.uri),n.data=e;for(var d=c+2;;){if(-2===(c=o(e,d))){l=d+2;break}if(-1===c)return void a("parseMessage() | malformed message");if(!0!==(f=s(n,e,d,c)))return void a("parseMessage() |",f.error);d=c+2}if(n.hasHeader("content-length")){var h=n.getHeader("content-length");n.body=e.substr(l,h)}else n.body=e.substring(l);return n}a('parseMessage() | error parsing first line of SIP message: "'+u+'"')}else a("parseMessage() | no CRLF found, not a SIP message")}},{"./Grammar":7,"./SIPMessage":19,debug:29}],12:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var a=e("events").EventEmitter,o=e("sdp-transform"),s=e("./Constants"),l=e("./Exceptions"),c=e("./Transactions"),u=e("./Utils"),f=e("./Timers"),d=e("./SIPMessage"),h=e("./Dialog"),p=e("./RequestSender"),m=e("./RTCSession/DTMF"),g=e("./RTCSession/Info"),_=e("./RTCSession/ReferNotifier"),b=e("./RTCSession/ReferSubscriber"),v=e("debug")("JsSIP:RTCSession"),y=e("debug")("JsSIP:ERROR:RTCSession");y.log=console.warn.bind(console);var w={STATUS_NULL:0,STATUS_INVITE_SENT:1,STATUS_1XX_RECEIVED:2,STATUS_INVITE_RECEIVED:3,STATUS_WAITING_FOR_ANSWER:4,STATUS_ANSWERED:5,STATUS_WAITING_FOR_ACK:6,STATUS_CANCELED:7,STATUS_TERMINATED:8,STATUS_CONFIRMED:9},C=["audio","video"];t.exports=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),v("new");var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n._id=null,n._ua=e,n._status=w.STATUS_NULL,n._dialog=null,n._earlyDialogs={},n._contact=null,n._from_tag=null,n._to_tag=null,n._connection=null,n._connectionPromiseQueue=Promise.resolve(),n._request=null,n._is_canceled=!1,n._cancel_reason="",n._is_confirmed=!1,n._late_sdp=!1,n._rtcOfferConstraints=null,n._rtcAnswerConstraints=null,n._localMediaStream=null,n._localMediaStreamLocallyGenerated=!1,n._rtcReady=!0,n._timers={ackTimer:null,expiresTimer:null,invite2xxTimer:null,userNoAnswerTimer:null},n._direction=null,n._local_identity=null,n._remote_identity=null,n._start_time=null,n._end_time=null,n._tones=null,n._audioMuted=!1,n._videoMuted=!1,n._localHold=!1,n._remoteHold=!1,n._sessionTimers={enabled:n._ua.configuration.session_timers,refreshMethod:n._ua.configuration.session_timers_refresh_method,defaultExpires:s.SESSION_EXPIRES,currentExpires:null,running:!1,refresher:!1,timer:null},n._referSubscribers={},n._data={},n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),i(t,null,[{key:"C",get:function(){return w}}]),i(t,[{key:"isInProgress",value:function(){switch(this._status){case w.STATUS_NULL:case w.STATUS_INVITE_SENT:case w.STATUS_1XX_RECEIVED:case w.STATUS_INVITE_RECEIVED:case w.STATUS_WAITING_FOR_ANSWER:return!0;default:return!1}}},{key:"isEstablished",value:function(){switch(this._status){case w.STATUS_ANSWERED:case w.STATUS_WAITING_FOR_ACK:case w.STATUS_CONFIRMED:return!0;default:return!1}}},{key:"isEnded",value:function(){switch(this._status){case w.STATUS_CANCELED:case w.STATUS_TERMINATED:return!0;default:return!1}}},{key:"isMuted",value:function(){return{audio:this._audioMuted,video:this._videoMuted}}},{key:"isOnHold",value:function(){return{local:this._localHold,remote:this._remoteHold}}},{key:"connect",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{},n=arguments[2];v("connect()");var r=e,i=t.eventHandlers||{},a=u.cloneArray(t.extraHeaders),o=t.mediaConstraints||{audio:!0,video:!0},c=t.mediaStream||null,f=t.pcConfig||{iceServers:[]},h=t.rtcConstraints||null,p=t.rtcOfferConstraints||null;if(this._rtcOfferConstraints=p,this._rtcAnswerConstraints=t.rtcAnswerConstraints||null,this._data=t.data||this._data,void 0===e)throw new TypeError("Not enough arguments");if(this._status!==w.STATUS_NULL)throw new l.InvalidStateError(this._status);if(!window.RTCPeerConnection)throw new l.NotSupportedError("WebRTC not supported");if(!(e=this._ua.normalizeTarget(e)))throw new TypeError("Invalid target: "+r);for(var m in this._sessionTimers.enabled&&u.isDecimal(t.sessionTimersExpires)&&(t.sessionTimersExpires>=s.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=t.sessionTimersExpires:this._sessionTimers.defaultExpires=s.SESSION_EXPIRES),i)Object.prototype.hasOwnProperty.call(i,m)&&this.on(m,i[m]);this._from_tag=u.newTag();var g=t.anonymous||!1,_={from_tag:this._from_tag};this._contact=this._ua.contact.toString({anonymous:g,outbound:!0}),g&&(_.from_display_name="Anonymous",_.from_uri="sip:[email-masked]",a.push("P-Preferred-Identity: "+this._ua.configuration.uri.toString()),a.push("Privacy: id")),a.push("Contact: "+this._contact),a.push("Content-Type: application/sdp"),this._sessionTimers.enabled&&a.push("Session-Expires: "+this._sessionTimers.defaultExpires),this._request=new d.InitialOutgoingInviteRequest(e,this._ua,_,a),this._id=this._request.call_id+this._from_tag,this._createRTCConnection(f,h),this._direction="outgoing",this._local_identity=this._request.from,this._remote_identity=this._request.to,n&&n(this),this._newRTCSession("local",this._request),this._sendInitialRequest(o,p,c)}},{key:"init_incoming",value:function(e,t){var n=this;v("init_incoming()");var r=void 0,i=e.getHeader("Content-Type");e.body&&"application/sdp"!==i?e.reply(415):(this._status=w.STATUS_INVITE_RECEIVED,this._from_tag=e.from_tag,this._id=e.call_id+this._from_tag,this._request=e,this._contact=this._ua.contact.toString(),e.hasHeader("expires")&&(r=1e3*e.getHeader("expires")),e.to_tag=u.newTag(),this._createDialog(e,"UAS",!0)?(e.body?this._late_sdp=!1:this._late_sdp=!0,this._status=w.STATUS_WAITING_FOR_ANSWER,this._timers.userNoAnswerTimer=setTimeout((function(){e.reply(408),n._failed("local",null,s.causes.NO_ANSWER)}),this._ua.configuration.no_answer_timeout),r&&(this._timers.expiresTimer=setTimeout((function(){n._status===w.STATUS_WAITING_FOR_ANSWER&&(e.reply(487),n._failed("system",null,s.causes.EXPIRES))}),r)),this._direction="incoming",this._local_identity=e.to,this._remote_identity=e.from,t&&t(this),this._newRTCSession("remote",e),this._status!==w.STATUS_TERMINATED&&(e.reply(180,null,["Contact: "+this._contact]),this._progress("local",null))):e.reply(500,"Missing Contact header field"))}},{key:"answer",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};v("answer()");var n=this._request,r=u.cloneArray(t.extraHeaders),i=t.mediaConstraints||{},a=t.mediaStream||null,o=t.pcConfig||{iceServers:[]},c=t.rtcConstraints||null,f=t.rtcAnswerConstraints||null,d=void 0,h=!1,p=!1,m=!1,g=!1;if(this._rtcAnswerConstraints=f,this._rtcOfferConstraints=t.rtcOfferConstraints||null,this._data=t.data||this._data,"incoming"!==this._direction)throw new l.NotSupportedError('"answer" not supported for outgoing RTCSession');if(this._status!==w.STATUS_WAITING_FOR_ANSWER)throw new l.InvalidStateError(this._status);if(this._sessionTimers.enabled&&u.isDecimal(t.sessionTimersExpires)&&(t.sessionTimersExpires>=s.MIN_SESSION_EXPIRES?this._sessionTimers.defaultExpires=t.sessionTimersExpires:this._sessionTimers.defaultExpires=s.SESSION_EXPIRES),this._status=w.STATUS_ANSWERED,this._createDialog(n,"UAS")){clearTimeout(this._timers.userNoAnswerTimer),r.unshift("Contact: "+this._contact);var _=n.parseSDP();Array.isArray(_.media)||(_.media=[_.media]);var b=!0,C=!1,A=void 0;try{for(var S,x=_.media[Symbol.iterator]();!(b=(S=x.next()).done);b=!0){var T=S.value;"audio"===T.type&&(h=!0,T.direction&&"sendrecv"!==T.direction||(m=!0)),"video"===T.type&&(p=!0,T.direction&&"sendrecv"!==T.direction||(g=!0))}}catch(e){C=!0,A=e}finally{try{!b&&x.return&&x.return()}finally{if(C)throw A}}if(a&&!1===i.audio){d=a.getAudioTracks();var k=!0,E=!1,D=void 0;try{for(var I,P=d[Symbol.iterator]();!(k=(I=P.next()).done);k=!0){var M=I.value;a.removeTrack(M)}}catch(e){E=!0,D=e}finally{try{!k&&P.return&&P.return()}finally{if(E)throw D}}}if(a&&!1===i.video){d=a.getVideoTracks();var $=!0,O=!1,R=void 0;try{for(var N,L=d[Symbol.iterator]();!($=(N=L.next()).done);$=!0){var F=N.value;a.removeTrack(F)}}catch(e){O=!0,R=e}finally{try{!$&&L.return&&L.return()}finally{if(O)throw R}}}a||void 0!==i.audio||(i.audio=m),a||void 0!==i.video||(i.video=g),a||h||(i.audio=!1),a||p||(i.video=!1),this._createRTCConnection(o,c),Promise.resolve().then((function(){return a||(i.audio||i.video?(e._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(i).catch((function(t){if(e._status===w.STATUS_TERMINATED)throw new Error("terminated");throw n.reply(480),e._failed("local",null,s.causes.USER_DENIED_MEDIA_ACCESS),y('emit "getusermediafailed" [error:%o]',t),e.emit("getusermediafailed",t),new Error("getUserMedia() failed")}))):void 0)})).then((function(t){if(e._status===w.STATUS_TERMINATED)throw new Error("terminated");e._localMediaStream=t,t&&e._connection.addStream(t)})).then((function(){if(!e._late_sdp){var t={originator:"remote",type:"offer",sdp:n.body};v('emit "sdp"'),e.emit("sdp",t);var r=new RTCSessionDescription({type:"offer",sdp:t.sdp});return e._connectionPromiseQueue=e._connectionPromiseQueue.then((function(){return e._connection.setRemoteDescription(r)})).catch((function(t){throw n.reply(488),e._failed("system",null,s.causes.WEBRTC_ERROR),y('emit "peerconnection:setremotedescriptionfailed" [error:%o]',t),e.emit("peerconnection:setremotedescriptionfailed",t),new Error("peerconnection.setRemoteDescription() failed")})),e._connectionPromiseQueue}})).then((function(){if(e._status===w.STATUS_TERMINATED)throw new Error("terminated");return e._connecting(n),e._late_sdp?e._createLocalDescription("offer",e._rtcOfferConstraints).catch((function(){throw n.reply(500),new Error("_createLocalDescription() failed")})):e._createLocalDescription("answer",f).catch((function(){throw n.reply(500),new Error("_createLocalDescription() failed")}))})).then((function(t){if(e._status===w.STATUS_TERMINATED)throw new Error("terminated");e._handleSessionTimersInIncomingRequest(n,r),n.reply(200,null,r,t,(function(){e._status=w.STATUS_WAITING_FOR_ACK,e._setInvite2xxTimer(n,t),e._setACKTimer(),e._accepted("local")}),(function(){e._failed("system",null,s.causes.CONNECTION_ERROR)}))})).catch((function(t){e._status!==w.STATUS_TERMINATED&&y(t)}))}else n.reply(500,"Error creating dialog")}},{key:"terminate",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};v("terminate()");var n=t.cause||s.causes.BYE,r=u.cloneArray(t.extraHeaders),i=t.body,a=void 0,o=t.status_code,f=t.reason_phrase;if(this._status===w.STATUS_TERMINATED)throw new l.InvalidStateError(this._status);switch(this._status){case w.STATUS_NULL:case w.STATUS_INVITE_SENT:case w.STATUS_1XX_RECEIVED:if(v("canceling session"),o&&(o<200||o>=700))throw new TypeError("Invalid status_code: "+o);o&&(a="SIP ;cause="+o+' ;text="'+(f=f||s.REASON_PHRASE[o]||"")+'"'),this._status===w.STATUS_NULL||this._status===w.STATUS_INVITE_SENT?(this._is_canceled=!0,this._cancel_reason=a):this._status===w.STATUS_1XX_RECEIVED&&this._request.cancel(a),this._status=w.STATUS_CANCELED,this._failed("local",null,s.causes.CANCELED);break;case w.STATUS_WAITING_FOR_ANSWER:case w.STATUS_ANSWERED:if(v("rejecting session"),(o=o||480)<300||o>=700)throw new TypeError("Invalid status_code: "+o);this._request.reply(o,f,r,i),this._failed("local",null,s.causes.REJECTED);break;case w.STATUS_WAITING_FOR_ACK:case w.STATUS_CONFIRMED:if(v("terminating session"),f=t.reason_phrase||s.REASON_PHRASE[o]||"",o&&(o<200||o>=700))throw new TypeError("Invalid status_code: "+o);if(o&&r.push("Reason: SIP ;cause="+o+'; text="'+f+'"'),this._status===w.STATUS_WAITING_FOR_ACK&&"incoming"===this._direction&&this._request.server_transaction.state!==c.C.STATUS_TERMINATED){var d=this._dialog;this.receiveRequest=function(t){t.method===s.ACK&&(e.sendRequest(s.BYE,{extraHeaders:r,body:i}),d.terminate())},this._request.server_transaction.on("stateChanged",(function(){e._request.server_transaction.state===c.C.STATUS_TERMINATED&&(e.sendRequest(s.BYE,{extraHeaders:r,body:i}),d.terminate())})),this._ended("local",null,n),this._dialog=d,this._ua.newDialog(d)}else this.sendRequest(s.BYE,{extraHeaders:r,body:i}),this._ended("local",null,n)}}},{key:"sendDTMF",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};v("sendDTMF() | tones: %s",e);var n=0,r=t.duration||null,i=t.interToneGap||null;if(void 0===e)throw new TypeError("Not enough arguments");if(this._status!==w.STATUS_CONFIRMED&&this._status!==w.STATUS_WAITING_FOR_ACK)throw new l.InvalidStateError(this._status);if("number"==typeof e&&(e=e.toString()),!e||"string"!=typeof e||!e.match(/^[0-9A-DR#*,]+$/i))throw new TypeError("Invalid tones: "+e);if(r&&!u.isDecimal(r))throw new TypeError("Invalid tone duration: "+r);if(r?r<m.C.MIN_DURATION?(v('"duration" value is lower than the minimum allowed, setting it to '+m.C.MIN_DURATION+" milliseconds"),r=m.C.MIN_DURATION):r>m.C.MAX_DURATION?(v('"duration" value is greater than the maximum allowed, setting it to '+m.C.MAX_DURATION+" milliseconds"),r=m.C.MAX_DURATION):r=Math.abs(r):r=m.C.DEFAULT_DURATION,t.duration=r,i&&!u.isDecimal(i))throw new TypeError("Invalid interToneGap: "+i);function a(){var e=this,o=void 0;if(this._status===w.STATUS_TERMINATED||!this._tones||n>=this._tones.length)this._tones=null;else{var s=this._tones[n];if(n+=1,","===s)o=2e3;else{var l=new m(this);t.eventHandlers={onFailed:function(){e._tones=null}},l.send(s,t),o=r+i}setTimeout(a.bind(this),o)}}i?i<m.C.MIN_INTER_TONE_GAP?(v('"interToneGap" value is lower than the minimum allowed, setting it to '+m.C.MIN_INTER_TONE_GAP+" milliseconds"),i=m.C.MIN_INTER_TONE_GAP):i=Math.abs(i):i=m.C.DEFAULT_INTER_TONE_GAP,this._tones?this._tones+=e:(this._tones=e,a.call(this))}},{key:"sendInfo",value:function(e,t){var n=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(v("sendInfo()"),this._status!==w.STATUS_CONFIRMED&&this._status!==w.STATUS_WAITING_FOR_ACK)throw new l.InvalidStateError(this._status);var r=new g(this);r.send(e,t,n)}},{key:"mute",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{audio:!0,video:!1};v("mute()");var t=!1,n=!1;!1===this._audioMuted&&e.audio&&(t=!0,this._audioMuted=!0,this._toogleMuteAudio(!0)),!1===this._videoMuted&&e.video&&(n=!0,this._videoMuted=!0,this._toogleMuteVideo(!0)),!0!==t&&!0!==n||this._onmute({audio:t,video:n})}},{key:"unmute",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{audio:!0,video:!0};v("unmute()");var t=!1,n=!1;!0===this._audioMuted&&e.audio&&(t=!0,this._audioMuted=!1,!1===this._localHold&&this._toogleMuteAudio(!1)),!0===this._videoMuted&&e.video&&(n=!0,this._videoMuted=!1,!1===this._localHold&&this._toogleMuteVideo(!1)),!0!==t&&!0!==n||this._onunmute({audio:t,video:n})}},{key:"hold",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments[1];if(v("hold()"),this._status!==w.STATUS_WAITING_FOR_ACK&&this._status!==w.STATUS_CONFIRMED)return!1;if(!0===this._localHold)return!1;if(!this._isReadyToReOffer())return!1;this._localHold=!0,this._onhold("local");var r={succeeded:function(){n&&n()},failed:function(){e.terminate({cause:s.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Hold Failed"})}};return t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:r,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:r,extraHeaders:t.extraHeaders}),!0}},{key:"unhold",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments[1];if(v("unhold()"),this._status!==w.STATUS_WAITING_FOR_ACK&&this._status!==w.STATUS_CONFIRMED)return!1;if(!1===this._localHold)return!1;if(!this._isReadyToReOffer())return!1;this._localHold=!1,this._onunhold("local");var r={succeeded:function(){n&&n()},failed:function(){e.terminate({cause:s.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Unhold Failed"})}};return t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:r,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:r,extraHeaders:t.extraHeaders}),!0}},{key:"renegotiate",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},n=arguments[1];v("renegotiate()");var r=t.rtcOfferConstraints||null;if(this._status!==w.STATUS_WAITING_FOR_ACK&&this._status!==w.STATUS_CONFIRMED)return!1;if(!this._isReadyToReOffer())return!1;var i={succeeded:function(){n&&n()},failed:function(){e.terminate({cause:s.causes.WEBRTC_ERROR,status_code:500,reason_phrase:"Media Renegotiation Failed"})}};return this._setLocalMediaStatus(),t.useUpdate?this._sendUpdate({sdpOffer:!0,eventHandlers:i,rtcOfferConstraints:r,extraHeaders:t.extraHeaders}):this._sendReinvite({eventHandlers:i,rtcOfferConstraints:r,extraHeaders:t.extraHeaders}),!0}},{key:"refer",value:function(e,t){var n=this;v("refer()");var r=e;if(this._status!==w.STATUS_WAITING_FOR_ACK&&this._status!==w.STATUS_CONFIRMED)return!1;if(!(e=this._ua.normalizeTarget(e)))throw new TypeError("Invalid target: "+r);var i=new b(this);i.sendRefer(e,t);var a=i.id;return this._referSubscribers[a]=i,i.on("requestFailed",(function(){delete n._referSubscribers[a]})),i.on("accepted",(function(){delete n._referSubscribers[a]})),i.on("failed",(function(){delete n._referSubscribers[a]})),i}},{key:"sendRequest",value:function(e,t){return v("sendRequest()"),this._dialog.sendRequest(e,t)}},{key:"receiveRequest",value:function(e){var t=this;if(v("receiveRequest()"),e.method===s.CANCEL)this._status!==w.STATUS_WAITING_FOR_ANSWER&&this._status!==w.STATUS_ANSWERED||(this._status=w.STATUS_CANCELED,this._request.reply(487),this._failed("remote",e,s.causes.CANCELED));else switch(e.method){case s.ACK:if(this._status!==w.STATUS_WAITING_FOR_ACK)return;if(this._status=w.STATUS_CONFIRMED,clearTimeout(this._timers.ackTimer),clearTimeout(this._timers.invite2xxTimer),this._late_sdp){if(!e.body){this.terminate({cause:s.causes.MISSING_SDP,status_code:400});break}var n={originator:"remote",type:"answer",sdp:e.body};v('emit "sdp"'),this.emit("sdp",n);var r=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then((function(){return t._connection.setRemoteDescription(r)})).then((function(){t._is_confirmed||t._confirmed("remote",e)})).catch((function(e){t.terminate({cause:s.causes.BAD_MEDIA_DESCRIPTION,status_code:488}),y('emit "peerconnection:setremotedescriptionfailed" [error:%o]',e),t.emit("peerconnection:setremotedescriptionfailed",e)}))}else this._is_confirmed||this._confirmed("remote",e);break;case s.BYE:this._status===w.STATUS_CONFIRMED?(e.reply(200),this._ended("remote",e,s.causes.BYE)):this._status===w.STATUS_INVITE_RECEIVED?(e.reply(200),this._request.reply(487,"BYE Received"),this._ended("remote",e,s.causes.BYE)):e.reply(403,"Wrong Status");break;case s.INVITE:this._status===w.STATUS_CONFIRMED?e.hasHeader("replaces")?this._receiveReplaces(e):this._receiveReinvite(e):e.reply(403,"Wrong Status");break;case s.INFO:if(this._status===w.STATUS_1XX_RECEIVED||this._status===w.STATUS_WAITING_FOR_ANSWER||this._status===w.STATUS_ANSWERED||this._status===w.STATUS_WAITING_FOR_ACK||this._status===w.STATUS_CONFIRMED){var i=e.getHeader("content-type");i&&i.match(/^application\/dtmf-relay/i)?new m(this).init_incoming(e):void 0!==i?new g(this).init_incoming(e):e.reply(415)}else e.reply(403,"Wrong Status");break;case s.UPDATE:this._status===w.STATUS_CONFIRMED?this._receiveUpdate(e):e.reply(403,"Wrong Status");break;case s.REFER:this._status===w.STATUS_CONFIRMED?this._receiveRefer(e):e.reply(403,"Wrong Status");break;case s.NOTIFY:this._status===w.STATUS_CONFIRMED?this._receiveNotify(e):e.reply(403,"Wrong Status");break;default:e.reply(501)}}},{key:"onTransportError",value:function(){y("onTransportError()"),this._status!==w.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:s.causes.CONNECTION_ERROR,cause:s.causes.CONNECTION_ERROR})}},{key:"onRequestTimeout",value:function(){y("onRequestTimeout()"),this._status!==w.STATUS_TERMINATED&&this.terminate({status_code:408,reason_phrase:s.causes.REQUEST_TIMEOUT,cause:s.causes.REQUEST_TIMEOUT})}},{key:"onDialogError",value:function(){y("onDialogError()"),this._status!==w.STATUS_TERMINATED&&this.terminate({status_code:500,reason_phrase:s.causes.DIALOG_ERROR,cause:s.causes.DIALOG_ERROR})}},{key:"newDTMF",value:function(e){v("newDTMF()"),this.emit("newDTMF",e)}},{key:"newInfo",value:function(e){v("newInfo()"),this.emit("newInfo",e)}},{key:"_isReadyToReOffer",value:function(){return this._rtcReady?this._dialog?!0!==this._dialog.uac_pending_reply&&!0!==this._dialog.uas_pending_reply||(v("_isReadyToReOffer() | there is another INVITE/UPDATE transaction in progress"),!1):(v("_isReadyToReOffer() | session not established yet"),!1):(v("_isReadyToReOffer() | internal WebRTC status not ready"),!1)}},{key:"_close",value:function(){if(v("close()"),this._status!==w.STATUS_TERMINATED){if(this._status=w.STATUS_TERMINATED,this._connection)try{this._connection.close()}catch(e){y("close() | error closing the RTCPeerConnection: %o",e)}for(var e in this._localMediaStream&&this._localMediaStreamLocallyGenerated&&(v("close() | closing local MediaStream"),u.closeMediaStream(this._localMediaStream)),this._timers)Object.prototype.hasOwnProperty.call(this._timers,e)&&clearTimeout(this._timers[e]);for(var t in clearTimeout(this._sessionTimers.timer),this._dialog&&(this._dialog.terminate(),delete this._dialog),this._earlyDialogs)Object.prototype.hasOwnProperty.call(this._earlyDialogs,t)&&(this._earlyDialogs[t].terminate(),delete this._earlyDialogs[t]);for(var n in this._referSubscribers)Object.prototype.hasOwnProperty.call(this._referSubscribers,n)&&delete this._referSubscribers[n];this._ua.destroyRTCSession(this)}}},{key:"_setInvite2xxTimer",value:function(e,t){var n=f.T1;this._timers.invite2xxTimer=setTimeout(function r(){this._status===w.STATUS_WAITING_FOR_ACK&&(e.reply(200,null,["Contact: "+this._contact],t),n<f.T2&&(n*=2)>f.T2&&(n=f.T2),this._timers.invite2xxTimer=setTimeout(r.bind(this),n))}.bind(this),n)}},{key:"_setACKTimer",value:function(){var e=this;this._timers.ackTimer=setTimeout((function(){e._status===w.STATUS_WAITING_FOR_ACK&&(v("no ACK received, terminating the session"),clearTimeout(e._timers.invite2xxTimer),e.sendRequest(s.BYE),e._ended("remote",null,s.causes.NO_ACK))}),f.TIMER_H)}},{key:"_createRTCConnection",value:function(e,t){var n=this;this._connection=new RTCPeerConnection(e,t),this._connection.addEventListener("iceconnectionstatechange",(function(){"failed"===n._connection.iceConnectionState&&n.terminate({cause:s.causes.RTP_TIMEOUT,status_code:408,reason_phrase:s.causes.RTP_TIMEOUT})})),v('emit "peerconnection"'),this.emit("peerconnection",{peerconnection:this._connection})}},{key:"_createLocalDescription",value:function(e,t){var n=this;if(v("createLocalDescription()"),"offer"!==e&&"answer"!==e)throw new Error('createLocalDescription() | invalid type "'+e+'"');var r=this._connection;return this._rtcReady=!1,Promise.resolve().then((function(){return"offer"===e?r.createOffer(t).catch((function(e){return y('emit "peerconnection:createofferfailed" [error:%o]',e),n.emit("peerconnection:createofferfailed",e),Promise.reject(e)})):r.createAnswer(t).catch((function(e){return y('emit "peerconnection:createanswerfailed" [error:%o]',e),n.emit("peerconnection:createanswerfailed",e),Promise.reject(e)}))})).then((function(e){return r.setLocalDescription(e).catch((function(e){return n._rtcReady=!0,y('emit "peerconnection:setlocaldescriptionfailed" [error:%o]',e),n.emit("peerconnection:setlocaldescriptionfailed",e),Promise.reject(e)}))})).then((function(){if("complete"===r.iceGatheringState){n._rtcReady=!0;var t={originator:"local",type:e,sdp:r.localDescription.sdp};return v('emit "sdp"'),n.emit("sdp",t),Promise.resolve(t.sdp)}return new Promise((function(t){var i=!1,a=void 0,o=function(){r.removeEventListener("icecandidate",a),i=!0,n._rtcReady=!0;var o={originator:"local",type:e,sdp:r.localDescription.sdp};v('emit "sdp"'),n.emit("sdp",o),t(o.sdp)};r.addEventListener("icecandidate",a=function(e){var t=e.candidate;t?n.emit("icecandidate",{candidate:t,ready:o}):i||o()})}))}))}},{key:"_createDialog",value:function(e,t,n){var r="UAS"===t?e.to_tag:e.from_tag,i="UAS"===t?e.from_tag:e.to_tag,a=e.call_id+r+i,o=this._earlyDialogs[a];if(n)return!!o||((o=new h(this,e,t,h.C.STATUS_EARLY)).error?(v(o.error),this._failed("remote",e,s.causes.INTERNAL_ERROR),!1):(this._earlyDialogs[a]=o,!0));if(this._from_tag=e.from_tag,this._to_tag=e.to_tag,o)return o.update(e,t),this._dialog=o,delete this._earlyDialogs[a],!0;var l=new h(this,e,t);return l.error?(v(l.error),this._failed("remote",e,s.causes.INTERNAL_ERROR),!1):(this._dialog=l,!0)}},{key:"_receiveReinvite",value:function(e){var t=this;v("receiveReinvite()");var n=e.getHeader("Content-Type"),r={request:e,callback:void 0,reject:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i=!0;var n=t.status_code||403,r=t.reason_phrase||"",a=u.cloneArray(t.extraHeaders);if(this._status!==w.STATUS_CONFIRMED)return!1;if(n<300||n>=700)throw new TypeError("Invalid status_code: "+n);e.reply(n,r,a)}.bind(this)},i=!1;if(this.emit("reinvite",r),!i){if(this._late_sdp=!1,!e.body)return this._late_sdp=!0,void(this._connectionPromiseQueue=this._connectionPromiseQueue.then((function(){return t._createLocalDescription("offer",t._rtcOfferConstraints)})).then((function(e){a.call(t,e)})).catch((function(){e.reply(500)})));if("application/sdp"!==n)return v("invalid Content-Type"),void e.reply(415);this._processInDialogSdpOffer(e).then((function(e){t._status!==w.STATUS_TERMINATED&&a.call(t,e)})).catch((function(e){y(e)}))}function a(t){var n=this,i=["Contact: "+this._contact];this._handleSessionTimersInIncomingRequest(e,i),this._late_sdp&&(t=this._mangleOffer(t)),e.reply(200,null,i,t,(function(){n._status=w.STATUS_WAITING_FOR_ACK,n._setInvite2xxTimer(e,t),n._setACKTimer()})),"function"==typeof r.callback&&r.callback()}}},{key:"_receiveUpdate",value:function(e){var t=this;v("receiveUpdate()");var n=e.getHeader("Content-Type"),r={request:e,callback:void 0,reject:function(){var t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};i=!0;var n=t.status_code||403,r=t.reason_phrase||"",a=u.cloneArray(t.extraHeaders);if(this._status!==w.STATUS_CONFIRMED)return!1;if(n<300||n>=700)throw new TypeError("Invalid status_code: "+n);e.reply(n,r,a)}.bind(this)},i=!1;if(this.emit("update",r),!i)if(e.body){if("application/sdp"!==n)return v("invalid Content-Type"),void e.reply(415);this._processInDialogSdpOffer(e).then((function(e){t._status!==w.STATUS_TERMINATED&&a.call(t,e)})).catch((function(e){y(e)}))}else a.call(this,null);function a(t){var n=["Contact: "+this._contact];this._handleSessionTimersInIncomingRequest(e,n),e.reply(200,null,n,t),"function"==typeof r.callback&&r.callback()}}},{key:"_processInDialogSdpOffer",value:function(e){var t=this;v("_processInDialogSdpOffer()");var n=e.parseSDP(),r=!1,i=!0,a=!1,o=void 0;try{for(var s,l=n.media[Symbol.iterator]();!(i=(s=l.next()).done);i=!0){var c=s.value;if(-1!==C.indexOf(c.type)){var u=c.direction||n.direction||"sendrecv";if("sendonly"!==u&&"inactive"!==u){r=!1;break}r=!0}}}catch(e){a=!0,o=e}finally{try{!i&&l.return&&l.return()}finally{if(a)throw o}}var f={originator:"remote",type:"offer",sdp:e.body};v('emit "sdp"'),this.emit("sdp",f);var d=new RTCSessionDescription({type:"offer",sdp:f.sdp});return this._connectionPromiseQueue=this._connectionPromiseQueue.then((function(){if(t._status===w.STATUS_TERMINATED)throw new Error("terminated");return t._connection.setRemoteDescription(d).catch((function(n){throw e.reply(488),y('emit "peerconnection:setremotedescriptionfailed" [error:%o]',n),t.emit("peerconnection:setremotedescriptionfailed",n),new Error("peerconnection.setRemoteDescription() failed")}))})).then((function(){if(t._status===w.STATUS_TERMINATED)throw new Error("terminated");!0===t._remoteHold&&!1===r?(t._remoteHold=!1,t._onunhold("remote")):!1===t._remoteHold&&!0===r&&(t._remoteHold=!0,t._onhold("remote"))})).then((function(){if(t._status===w.STATUS_TERMINATED)throw new Error("terminated");return t._createLocalDescription("answer",t._rtcAnswerConstraints).catch((function(){throw e.reply(500),new Error("_createLocalDescription() failed")}))})),this._connectionPromiseQueue}},{key:"_receiveRefer",value:function(e){var n=this;if(v("receiveRefer()"),void 0===r(e.refer_to))return v("no Refer-To header field present in REFER"),void e.reply(400);if(e.refer_to.uri.scheme!==s.SIP)return v("Refer-To header field points to a non-SIP URI scheme"),void e.reply(416);e.reply(202);var i=new _(this,e.cseq);function a(n){var r=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(n="function"==typeof n?n:null,this._status!==w.STATUS_WAITING_FOR_ACK&&this._status!==w.STATUS_CONFIRMED)return!1;var a=new t(this._ua);if(a.on("progress",(function(e){var t=e.response;i.notify(t.status_code,t.reason_phrase)})),a.on("accepted",(function(e){var t=e.response;i.notify(t.status_code,t.reason_phrase)})),a.on("failed",(function(e){var t=e.message,n=e.cause;t?i.notify(t.status_code,t.reason_phrase):i.notify(487,n)})),e.refer_to.uri.hasHeader("replaces")){var o=decodeURIComponent(e.refer_to.uri.getHeader("replaces"));r.extraHeaders=u.cloneArray(r.extraHeaders),r.extraHeaders.push("Replaces: "+o)}a.connect(e.refer_to.uri.toAor(),r,n)}function o(){i.notify(603)}v('emit "refer"'),this.emit("refer",{request:e,accept:function(e,t){a.call(n,e,t)},reject:function(){o.call(n)}})}},{key:"_receiveNotify",value:function(e){switch(v("receiveNotify()"),void 0===r(e.event)&&e.reply(400),e.event.event){case"refer":var t=void 0,n=void 0;if(e.event.params&&e.event.params.id)t=e.event.params.id,n=this._referSubscribers[t];else{if(1!==Object.keys(this._referSubscribers).length)return void e.reply(400,"Missing event id parameter");n=this._referSubscribers[Object.keys(this._referSubscribers)[0]]}if(!n)return void e.reply(481,"Subscription does not exist");n.receiveNotify(e),e.reply(200);break;default:e.reply(489)}}},{key:"_receiveReplaces",value:function(e){var n=this;function r(n){var r=this;if(this._status!==w.STATUS_WAITING_FOR_ACK&&this._status!==w.STATUS_CONFIRMED)return!1;var i=new t(this._ua);i.on("confirmed",(function(){r.terminate()})),i.init_incoming(e,n)}function i(){v("Replaced INVITE rejected by the user"),e.reply(486)}v("receiveReplaces()"),this.emit("replaces",{request:e,accept:function(e){r.call(n,e)},reject:function(){i.call(n)}})}},{key:"_sendInitialRequest",value:function(e,t,n){var r=this,i=new p(this._ua,this._request,{onRequestTimeout:function(){r.onRequestTimeout()},onTransportError:function(){r.onTransportError()},onAuthenticated:function(e){r._request=e},onReceiveResponse:function(e){r._receiveInviteResponse(e)}});Promise.resolve().then((function(){return n||(e.audio||e.video?(r._localMediaStreamLocallyGenerated=!0,navigator.mediaDevices.getUserMedia(e).catch((function(e){if(r._status===w.STATUS_TERMINATED)throw new Error("terminated");throw r._failed("local",null,s.causes.USER_DENIED_MEDIA_ACCESS),y('emit "getusermediafailed" [error:%o]',e),r.emit("getusermediafailed"),e}))):void 0)})).then((function(e){if(r._status===w.STATUS_TERMINATED)throw new Error("terminated");return r._localMediaStream=e,e&&r._connection.addStream(e),r._connecting(r._request),r._createLocalDescription("offer",t).catch((function(e){throw r._failed("local",null,s.causes.WEBRTC_ERROR),e}))})).then((function(e){if(r._is_canceled||r._status===w.STATUS_TERMINATED)throw new Error("terminated");r._request.body=e,r._status=w.STATUS_INVITE_SENT,v('emit "sending" [request:%o]',r._request),r.emit("sending",{request:r._request}),i.send()})).catch((function(e){r._status!==w.STATUS_TERMINATED&&y(e)}))}},{key:"_receiveInviteResponse",value:function(e){var t=this;if(v("receiveInviteResponse()"),this._dialog&&e.status_code>=200&&e.status_code<=299){if(this._dialog.id.call_id===e.call_id&&this._dialog.id.local_tag===e.from_tag&&this._dialog.id.remote_tag===e.to_tag)return void this.sendRequest(s.ACK);var n=new h(this,e,"UAC");return void 0!==n.error?void v(n.error):(this.sendRequest(s.ACK),void this.sendRequest(s.BYE))}if(this._is_canceled)e.status_code>=100&&e.status_code<200?this._request.cancel(this._cancel_reason):e.status_code>=200&&e.status_code<299&&this._acceptAndTerminate(e);else if(this._status===w.STATUS_INVITE_SENT||this._status===w.STATUS_1XX_RECEIVED)switch(!0){case/^100$/.test(e.status_code):this._status=w.STATUS_1XX_RECEIVED;break;case/^1[0-9]{2}$/.test(e.status_code):if(!e.to_tag){v("1xx response received without to tag");break}if(e.hasHeader("contact")&&!this._createDialog(e,"UAC",!0))break;if(this._status=w.STATUS_1XX_RECEIVED,this._progress("remote",e),!e.body)break;var r={originator:"remote",type:"answer",sdp:e.body};v('emit "sdp"'),this.emit("sdp",r);var i=new RTCSessionDescription({type:"answer",sdp:r.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then((function(){return t._connection.setRemoteDescription(i)})).catch((function(e){y('emit "peerconnection:setremotedescriptionfailed" [error:%o]',e),t.emit("peerconnection:setremotedescriptionfailed",e)}));break;case/^2[0-9]{2}$/.test(e.status_code):if(this._status=w.STATUS_CONFIRMED,!e.body){this._acceptAndTerminate(e,400,s.causes.MISSING_SDP),this._failed("remote",e,s.causes.BAD_MEDIA_DESCRIPTION);break}if(!this._createDialog(e,"UAC"))break;var a={originator:"remote",type:"answer",sdp:e.body};v('emit "sdp"'),this.emit("sdp",a);var o=new RTCSessionDescription({type:"answer",sdp:a.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then((function(){if("stable"===t._connection.signalingState)return t._connection.createOffer().then((function(e){return t._connection.setLocalDescription(e)})).catch((function(n){t._acceptAndTerminate(e,500,n.toString()),t._failed("local",e,s.causes.WEBRTC_ERROR)}))})).then((function(){t._connection.setRemoteDescription(o).then((function(){t._handleSessionTimersInIncomingResponse(e),t._accepted("remote",e),t.sendRequest(s.ACK),t._confirmed("local",null)})).catch((function(n){t._acceptAndTerminate(e,488,"Not Acceptable Here"),t._failed("remote",e,s.causes.BAD_MEDIA_DESCRIPTION),y('emit "peerconnection:setremotedescriptionfailed" [error:%o]',n),t.emit("peerconnection:setremotedescriptionfailed",n)}))}));break;default:var l=u.sipErrorCause(e.status_code);this._failed("remote",e,l)}}},{key:"_sendReinvite",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};v("sendReinvite()");var n=u.cloneArray(t.extraHeaders),r=t.eventHandlers||{},i=t.rtcOfferConstraints||this._rtcOfferConstraints||null,a=!1;function o(e){var t=this;if(this._status!==w.STATUS_TERMINATED&&(this.sendRequest(s.ACK),!a))if(this._handleSessionTimersInIncomingResponse(e),e.body)if("application/sdp"===e.getHeader("Content-Type")){var n={originator:"remote",type:"answer",sdp:e.body};v('emit "sdp"'),this.emit("sdp",n);var i=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then((function(){return t._connection.setRemoteDescription(i)})).then((function(){r.succeeded&&r.succeeded(e)})).catch((function(e){l.call(t),y('emit "peerconnection:setremotedescriptionfailed" [error:%o]',e),t.emit("peerconnection:setremotedescriptionfailed",e)}))}else l.call(this);else l.call(this)}function l(e){r.failed&&r.failed(e)}n.push("Contact: "+this._contact),n.push("Content-Type: application/sdp"),this._sessionTimers.running&&n.push("Session-Expires: "+this._sessionTimers.currentExpires+";refresher="+(this._sessionTimers.refresher?"uac":"uas")),this._connectionPromiseQueue=this._connectionPromiseQueue.then((function(){return e._createLocalDescription("offer",i)})).then((function(t){t=e._mangleOffer(t),e.sendRequest(s.INVITE,{extraHeaders:n,body:t,eventHandlers:{onSuccessResponse:function(t){o.call(e,t),a=!0},onErrorResponse:function(t){l.call(e,t)},onTransportError:function(){e.onTransportError()},onRequestTimeout:function(){e.onRequestTimeout()},onDialogError:function(){e.onDialogError()}}})})).catch((function(){l()}))}},{key:"_sendUpdate",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};v("sendUpdate()");var n=u.cloneArray(t.extraHeaders),r=t.eventHandlers||{},i=t.rtcOfferConstraints||this._rtcOfferConstraints||null,a=t.sdpOffer||!1,o=!1;function l(e){var t=this;if(this._status!==w.STATUS_TERMINATED&&!o)if(this._handleSessionTimersInIncomingResponse(e),a){if(!e.body)return void c.call(this);if("application/sdp"!==e.getHeader("Content-Type"))return void c.call(this);var n={originator:"remote",type:"answer",sdp:e.body};v('emit "sdp"'),this.emit("sdp",n);var i=new RTCSessionDescription({type:"answer",sdp:n.sdp});this._connectionPromiseQueue=this._connectionPromiseQueue.then((function(){return t._connection.setRemoteDescription(i)})).then((function(){r.succeeded&&r.succeeded(e)})).catch((function(e){c.call(t),y('emit "peerconnection:setremotedescriptionfailed" [error:%o]',e),t.emit("peerconnection:setremotedescriptionfailed",e)}))}else r.succeeded&&r.succeeded(e)}function c(e){r.failed&&r.failed(e)}n.push("Contact: "+this._contact),this._sessionTimers.running&&n.push("Session-Expires: "+this._sessionTimers.currentExpires+";refresher="+(this._sessionTimers.refresher?"uac":"uas")),a?(n.push("Content-Type: application/sdp"),this._connectionPromiseQueue=this._connectionPromiseQueue.then((function(){return e._createLocalDescription("offer",i)})).then((function(t){t=e._mangleOffer(t),e.sendRequest(s.UPDATE,{extraHeaders:n,body:t,eventHandlers:{onSuccessResponse:function(t){l.call(e,t),o=!0},onErrorResponse:function(t){c.call(e,t)},onTransportError:function(){e.onTransportError()},onRequestTimeout:function(){e.onRequestTimeout()},onDialogError:function(){e.onDialogError()}}})})).catch((function(){c.call(e)}))):this.sendRequest(s.UPDATE,{extraHeaders:n,eventHandlers:{onSuccessResponse:function(t){l.call(e,t)},onErrorResponse:function(t){c.call(e,t)},onTransportError:function(){e.onTransportError()},onRequestTimeout:function(){e.onRequestTimeout()},onDialogError:function(){e.onDialogError()}}})}},{key:"_acceptAndTerminate",value:function(e,t,n){v("acceptAndTerminate()");var r=[];t&&(n=n||s.REASON_PHRASE[t]||"",r.push("Reason: SIP ;cause="+t+'; text="'+n+'"')),(this._dialog||this._createDialog(e,"UAC"))&&(this.sendRequest(s.ACK),this.sendRequest(s.BYE,{extraHeaders:r})),this._status=w.STATUS_TERMINATED}},{key:"_mangleOffer",value:function(e){if(!this._localHold&&!this._remoteHold)return e;if(e=o.parse(e),this._localHold&&!this._remoteHold){v("mangleOffer() | me on hold, mangling offer");var t=!0,n=!1,r=void 0;try{for(var i,a=e.media[Symbol.iterator]();!(t=(i=a.next()).done);t=!0){var s=i.value;-1!==C.indexOf(s.type)&&(s.direction?"sendrecv"===s.direction?s.direction="sendonly":"recvonly"===s.direction&&(s.direction="inactive"):s.direction="sendonly")}}catch(e){n=!0,r=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw r}}}else if(this._localHold&&this._remoteHold){v("mangleOffer() | both on hold, mangling offer");var l=!0,c=!1,u=void 0;try{for(var f,d=e.media[Symbol.iterator]();!(l=(f=d.next()).done);l=!0){var h=f.value;-1!==C.indexOf(h.type)&&(h.direction="inactive")}}catch(e){c=!0,u=e}finally{try{!l&&d.return&&d.return()}finally{if(c)throw u}}}else if(this._remoteHold){v("mangleOffer() | remote on hold, mangling offer");var p=!0,m=!1,g=void 0;try{for(var _,b=e.media[Symbol.iterator]();!(p=(_=b.next()).done);p=!0){var y=_.value;-1!==C.indexOf(y.type)&&(y.direction?"sendrecv"===y.direction?y.direction="recvonly":"recvonly"===y.direction&&(y.direction="inactive"):y.direction="recvonly")}}catch(e){m=!0,g=e}finally{try{!p&&b.return&&b.return()}finally{if(m)throw g}}}return o.write(e)}},{key:"_setLocalMediaStatus",value:function(){var e=!0,t=!0;(this._localHold||this._remoteHold)&&(e=!1,t=!1),this._audioMuted&&(e=!1),this._videoMuted&&(t=!1),this._toogleMuteAudio(!e),this._toogleMuteVideo(!t)}},{key:"_handleSessionTimersInIncomingRequest",value:function(e,t){if(this._sessionTimers.enabled){var n=void 0;e.session_expires&&e.session_expires>=s.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=e.session_expires,n=e.session_expires_refresher||"uas"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,n="uas"),t.push("Session-Expires: "+this._sessionTimers.currentExpires+";refresher="+n),this._sessionTimers.refresher="uas"===n,this._runSessionTimer()}}},{key:"_handleSessionTimersInIncomingResponse",value:function(e){if(this._sessionTimers.enabled){var t=void 0;e.session_expires&&e.session_expires>=s.MIN_SESSION_EXPIRES?(this._sessionTimers.currentExpires=e.session_expires,t=e.session_expires_refresher||"uac"):(this._sessionTimers.currentExpires=this._sessionTimers.defaultExpires,t="uac"),this._sessionTimers.refresher="uac"===t,this._runSessionTimer()}}},{key:"_runSessionTimer",value:function(){var e=this,t=this._sessionTimers.currentExpires;this._sessionTimers.running=!0,clearTimeout(this._sessionTimers.timer),this._sessionTimers.refresher?this._sessionTimers.timer=setTimeout((function(){e._status!==w.STATUS_TERMINATED&&(v("runSessionTimer() | sending session refresh request"),e._sessionTimers.refreshMethod===s.UPDATE?e._sendUpdate():e._sendReinvite())}),500*t):this._sessionTimers.timer=setTimeout((function(){e._status!==w.STATUS_TERMINATED&&(y("runSessionTimer() | timer expired, terminating the session"),e.terminate({cause:s.causes.REQUEST_TIMEOUT,status_code:408,reason_phrase:"Session Timer Expired"}))}),1100*t)}},{key:"_toogleMuteAudio",value:function(e){var t=this._connection.getLocalStreams(),n=!0,r=!1,i=void 0;try{for(var a,o=t[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var s=a.value.getAudioTracks(),l=!0,c=!1,u=void 0;try{for(var f,d=s[Symbol.iterator]();!(l=(f=d.next()).done);l=!0){f.value.enabled=!e}}catch(e){c=!0,u=e}finally{try{!l&&d.return&&d.return()}finally{if(c)throw u}}}}catch(e){r=!0,i=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw i}}}},{key:"_toogleMuteVideo",value:function(e){var t=this._connection.getLocalStreams(),n=!0,r=!1,i=void 0;try{for(var a,o=t[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var s=a.value.getVideoTracks(),l=!0,c=!1,u=void 0;try{for(var f,d=s[Symbol.iterator]();!(l=(f=d.next()).done);l=!0){f.value.enabled=!e}}catch(e){c=!0,u=e}finally{try{!l&&d.return&&d.return()}finally{if(c)throw u}}}}catch(e){r=!0,i=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw i}}}},{key:"_newRTCSession",value:function(e,t){v("newRTCSession()"),this._ua.newRTCSession(this,{originator:e,session:this,request:t})}},{key:"_connecting",value:function(e){v("session connecting"),v('emit "connecting"'),this.emit("connecting",{request:e})}},{key:"_progress",value:function(e,t){v("session progress"),v('emit "progress"'),this.emit("progress",{originator:e,response:t||null})}},{key:"_accepted",value:function(e,t){v("session accepted"),this._start_time=new Date,v('emit "accepted"'),this.emit("accepted",{originator:e,response:t||null})}},{key:"_confirmed",value:function(e,t){v("session confirmed"),this._is_confirmed=!0,v('emit "confirmed"'),this.emit("confirmed",{originator:e,ack:t||null})}},{key:"_ended",value:function(e,t,n){v("session ended"),this._end_time=new Date,this._close(),v('emit "ended"'),this.emit("ended",{originator:e,message:t||null,cause:n})}},{key:"_failed",value:function(e,t,n){v("session failed"),this._close(),v('emit "failed"'),this.emit("failed",{originator:e,message:t||null,cause:n})}},{key:"_onhold",value:function(e){v("session onhold"),this._setLocalMediaStatus(),v('emit "hold"'),this.emit("hold",{originator:e})}},{key:"_onunhold",value:function(e){v("session onunhold"),this._setLocalMediaStatus(),v('emit "unhold"'),this.emit("unhold",{originator:e})}},{key:"_onmute",value:function(e){var t=e.audio,n=e.video;v("session onmute"),this._setLocalMediaStatus(),v('emit "muted"'),this.emit("muted",{audio:t,video:n})}},{key:"_onunmute",value:function(e){var t=e.audio,n=e.video;v("session onunmute"),this._setLocalMediaStatus(),v('emit "unmuted"'),this.emit("unmuted",{audio:t,video:n})}},{key:"C",get:function(){return w}},{key:"causes",get:function(){return s.causes}},{key:"id",get:function(){return this._id}},{key:"connection",get:function(){return this._connection}},{key:"contact",get:function(){return this._contact}},{key:"direction",get:function(){return this._direction}},{key:"local_identity",get:function(){return this._local_identity}},{key:"remote_identity",get:function(){return this._remote_identity}},{key:"start_time",get:function(){return this._start_time}},{key:"end_time",get:function(){return this._end_time}},{key:"data",get:function(){return this._data},set:function(e){this._data=e}},{key:"status",get:function(){return this._status}}]),t}(a)},{"./Constants":2,"./Dialog":3,"./Exceptions":6,"./RTCSession/DTMF":13,"./RTCSession/Info":14,"./RTCSession/ReferNotifier":15,"./RTCSession/ReferSubscriber":16,"./RequestSender":18,"./SIPMessage":19,"./Timers":21,"./Transactions":22,"./Utils":26,debug:29,events:31,"sdp-transform":36}],13:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("events").EventEmitter,a=e("../Constants"),o=e("../Exceptions"),s=e("../Utils"),l=e("debug")("JsSIP:RTCSession:DTMF");e("debug")("JsSIP:ERROR:RTCSession:DTMF").log=console.warn.bind(console);var c={MIN_DURATION:70,MAX_DURATION:6e3,DEFAULT_DURATION:100,MIN_INTER_TONE_GAP:50,DEFAULT_INTER_TONE_GAP:500};t.exports=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n._session=e,n._direction=null,n._tone=null,n._duration=null,n._request=null,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"send",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};if(void 0===e)throw new TypeError("Not enough arguments");if(this._direction="outgoing",this._session.status!==this._session.C.STATUS_CONFIRMED&&this._session.status!==this._session.C.STATUS_WAITING_FOR_ACK)throw new o.InvalidStateError(this._session.status);var r=s.cloneArray(n.extraHeaders);if(this.eventHandlers=n.eventHandlers||{},"string"==typeof e)e=e.toUpperCase();else{if("number"!=typeof e)throw new TypeError("Invalid tone: "+e);e=e.toString()}if(!e.match(/^[0-9A-DR#*]$/))throw new TypeError("Invalid tone: "+e);this._tone=e,this._duration=n.duration,r.push("Content-Type: application/dtmf-relay");var i="Signal="+this._tone+"\r\n";i+="Duration="+this._duration,this._session.newDTMF({originator:"local",dtmf:this,request:this._request}),this._session.sendRequest(a.INFO,{extraHeaders:r,eventHandlers:{onSuccessResponse:function(e){t.emit("succeeded",{originator:"remote",response:e})},onErrorResponse:function(e){t.eventHandlers.onFailed&&t.eventHandlers.onFailed(),t.emit("failed",{originator:"remote",response:e})},onRequestTimeout:function(){t._session.onRequestTimeout()},onTransportError:function(){t._session.onTransportError()},onDialogError:function(){t._session.onDialogError()}},body:i})}},{key:"init_incoming",value:function(e){var t=/^(Signal\s*?=\s*?)([0-9A-D#*]{1})(\s)?.*/,n=/^(Duration\s?=\s?)([0-9]{1,4})(\s)?.*/;if(this._direction="incoming",this._request=e,e.reply(200),e.body){var r=e.body.split("\n");r.length>=1&&t.test(r[0])&&(this._tone=r[0].replace(t,"$2")),r.length>=2&&n.test(r[1])&&(this._duration=parseInt(r[1].replace(n,"$2"),10))}this._duration||(this._duration=c.DEFAULT_DURATION),this._tone?this._session.newDTMF({originator:"remote",dtmf:this,request:e}):l("invalid INFO DTMF received, discarded")}},{key:"tone",get:function(){return this._tone}},{key:"duration",get:function(){return this._duration}}]),t}(i),t.exports.C=c},{"../Constants":2,"../Exceptions":6,"../Utils":26,debug:29,events:31}],14:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("events").EventEmitter;e("debug")("JsSIP:ERROR:RTCSession:Info").log=console.warn.bind(console);var a=e("../Constants"),o=e("../Exceptions"),s=e("../Utils");t.exports=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n._session=e,n._direction=null,n._contentType=null,n._body=null,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"send",value:function(e,t){var n=this,r=arguments.length>2&&void 0!==arguments[2]?arguments[2]:{};if(this._direction="outgoing",void 0===e)throw new TypeError("Not enough arguments");if(this._session.status!==this._session.C.STATUS_CONFIRMED&&this._session.status!==this._session.C.STATUS_WAITING_FOR_ACK)throw new o.InvalidStateError(this._session.status);this._contentType=e,this._body=t;var i=s.cloneArray(r.extraHeaders);i.push("Content-Type: "+e),this._session.newInfo({originator:"local",info:this,request:this.request}),this._session.sendRequest(a.INFO,{extraHeaders:i,eventHandlers:{onSuccessResponse:function(e){n.emit("succeeded",{originator:"remote",response:e})},onErrorResponse:function(e){n.emit("failed",{originator:"remote",response:e})},onTransportError:function(){n._session.onTransportError()},onRequestTimeout:function(){n._session.onRequestTimeout()},onDialogError:function(){n._session.onDialogError()}},body:t})}},{key:"init_incoming",value:function(e){this._direction="incoming",this.request=e,e.reply(200),this._contentType=e.getHeader("content-type"),this._body=e.body,this._session.newInfo({originator:"remote",info:this,request:e})}},{key:"contentType",get:function(){return this._contentType}},{key:"body",get:function(){return this._body}}]),t}(i)},{"../Constants":2,"../Exceptions":6,"../Utils":26,debug:29,events:31}],15:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("../Constants"),a=e("debug")("JsSIP:RTCSession:ReferNotifier"),o="refer",s="message/sipfrag;version=2.0",l=300;t.exports=function(){function e(t,n,r){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._session=t,this._id=n,this._expires=r||l,this._active=!0,this.notify(100)}return r(e,[{key:"notify",value:function(e,t){if(a("notify()"),!1!==this._active){t=t||i.REASON_PHRASE[e]||"";var n=void 0;n=e>=200?"terminated;reason=noresource":"active;expires="+this._expires,this._session.sendRequest(i.NOTIFY,{extraHeaders:["Event: "+o+";id="+this._id,"Subscription-State: "+n,"Content-Type: "+s],body:"SIP/2.0 "+e+" "+t,eventHandlers:{onErrorResponse:function(){this._active=!1}}})}}}]),e}()},{"../Constants":2,debug:29}],16:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("events").EventEmitter,a=e("../Constants"),o=e("../Grammar"),s=e("../Utils"),l=e("debug")("JsSIP:RTCSession:ReferSubscriber");t.exports=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n._id=null,n._session=e,n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,[{key:"sendRefer",value:function(e){var t=this,n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:{};l("sendRefer()");var r=s.cloneArray(n.extraHeaders),i=n.eventHandlers||{};for(var o in i)Object.prototype.hasOwnProperty.call(i,o)&&this.on(o,i[o]);var c=null;n.replaces&&(c=n.replaces._request.call_id,c+=";to-tag="+n.replaces._to_tag,c+=";from-tag="+n.replaces._from_tag,c=encodeURIComponent(c));var u="Refer-To: <"+e+(c?"?Replaces="+c:"")+">";r.push(u),r.push("Contact: "+this._session.contact);var f=this._session.sendRequest(a.REFER,{extraHeaders:r,eventHandlers:{onSuccessResponse:function(e){t._requestSucceeded(e)},onErrorResponse:function(e){t._requestFailed(e,a.causes.REJECTED)},onTransportError:function(){t._requestFailed(null,a.causes.CONNECTION_ERROR)},onRequestTimeout:function(){t._requestFailed(null,a.causes.REQUEST_TIMEOUT)},onDialogError:function(){t._requestFailed(null,a.causes.DIALOG_ERROR)}}});this._id=f.cseq}},{key:"receiveNotify",value:function(e){if(l("receiveNotify()"),e.body){var t=o.parse(e.body.trim(),"Status_Line");if(-1!==t)switch(!0){case/^100$/.test(t.status_code):this.emit("trying",{request:e,status_line:t});break;case/^1[0-9]{2}$/.test(t.status_code):this.emit("progress",{request:e,status_line:t});break;case/^2[0-9]{2}$/.test(t.status_code):this.emit("accepted",{request:e,status_line:t});break;default:this.emit("failed",{request:e,status_line:t})}else l('receiveNotify() | error parsing NOTIFY body: "'+e.body+'"')}}},{key:"_requestSucceeded",value:function(e){l("REFER succeeded"),l('emit "requestSucceeded"'),this.emit("requestSucceeded",{response:e})}},{key:"_requestFailed",value:function(e,t){l("REFER failed"),l('emit "requestFailed"'),this.emit("requestFailed",{response:e||null,cause:t})}},{key:"id",get:function(){return this._id}}]),t}(i)},{"../Constants":2,"../Grammar":7,"../Utils":26,debug:29,events:31}],17:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("./Utils"),a=e("./Constants"),o=e("./SIPMessage"),s=e("./RequestSender"),l=e("debug")("JsSIP:Registrator");t.exports=function(){function e(t,n){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e);this._ua=t,this._transport=n,this._registrar=t.configuration.registrar_server,this._expires=t.configuration.register_expires,this._call_id=i.createRandomToken(22),this._cseq=0,this._to_uri=t.configuration.uri,this._registrationTimer=null,this._registering=!1,this._registered=!1,this._contact=this._ua.contact.toString(),this._contact+=";+sip.ice",this._extraHeaders=[],this._extraContactParams="",this._contact+=";reg-id=1",this._contact+=';+sip.instance="<urn:uuid:'+this._ua.configuration.instance_id+'>"'}return r(e,[{key:"setExtraHeaders",value:function(e){Array.isArray(e)||(e=[]),this._extraHeaders=e.slice()}},{key:"setExtraContactParams",value:function(e){for(var t in e instanceof Object||(e={}),this._extraContactParams="",e)if(Object.prototype.hasOwnProperty.call(e,t)){var n=e[t];this._extraContactParams+=";"+t,n&&(this._extraContactParams+="="+n)}}},{key:"register",value:function(){var e=this;if(this._registering)l("Register request in progress...");else{var t=this._extraHeaders.slice();t.push("Contact: "+this._contact+";expires="+this._expires+this._extraContactParams),t.push("Expires: "+this._expires);var n=new o.OutgoingRequest(a.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},t),r=new s(this._ua,n,{onRequestTimeout:function(){e._registrationFailure(null,a.causes.REQUEST_TIMEOUT)},onTransportError:function(){e._registrationFailure(null,a.causes.CONNECTION_ERROR)},onAuthenticated:function(){e._cseq+=1},onReceiveResponse:function(t){var n=void 0,r=void 0,o=t.getHeaders("contact").length;if(t.cseq===e._cseq)switch(null!==e._registrationTimer&&(clearTimeout(e._registrationTimer),e._registrationTimer=null),!0){case/^1[0-9]{2}$/.test(t.status_code):break;case/^2[0-9]{2}$/.test(t.status_code):if(e._registering=!1,!o){l("no Contact header in response to REGISTER, response ignored");break}for(;o--;){if((n=t.parseHeader("contact",o)).uri.user===e._ua.contact.uri.user){r=n.getParam("expires");break}n=null}if(!n){l("no Contact header pointing to us, response ignored");break}!r&&t.hasHeader("expires")&&(r=t.getHeader("expires")),r||(r=e._expires),(r=Number(r))<10&&(r=10),e._registrationTimer=setTimeout((function(){e._registrationTimer=null,0===e._ua.listeners("registrationExpiring").length?e.register():e._ua.emit("registrationExpiring")}),1e3*r-5e3),n.hasParam("temp-gruu")&&(e._ua.contact.temp_gruu=n.getParam("temp-gruu").replace(/"/g,"")),n.hasParam("pub-gruu")&&(e._ua.contact.pub_gruu=n.getParam("pub-gruu").replace(/"/g,"")),e._registered||(e._registered=!0,e._ua.registered({response:t}));break;case/^423$/.test(t.status_code):t.hasHeader("min-expires")?(e._expires=Number(t.getHeader("min-expires")),e._expires<10&&(e._expires=10),e.register()):(l("423 response received for REGISTER without Min-Expires"),e._registrationFailure(t,a.causes.SIP_FAILURE_CODE));break;default:var s=i.sipErrorCause(t.status_code);e._registrationFailure(t,s)}}});this._registering=!0,r.send()}}},{key:"unregister",value:function(){var e=this,t=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{};if(this._registered){this._registered=!1,null!==this._registrationTimer&&(clearTimeout(this._registrationTimer),this._registrationTimer=null);var n=this._extraHeaders.slice();t.all?n.push("Contact: *"+this._extraContactParams):n.push("Contact: "+this._contact+";expires=0"+this._extraContactParams),n.push("Expires: 0");var r=new o.OutgoingRequest(a.REGISTER,this._registrar,this._ua,{to_uri:this._to_uri,call_id:this._call_id,cseq:this._cseq+=1},n),c=new s(this._ua,r,{onRequestTimeout:function(){e._unregistered(null,a.causes.REQUEST_TIMEOUT)},onTransportError:function(){e._unregistered(null,a.causes.CONNECTION_ERROR)},onAuthenticated:function(){e._cseq+=1},onReceiveResponse:function(t){switch(!0){case/^1[0-9]{2}$/.test(t.status_code):break;case/^2[0-9]{2}$/.test(t.status_code):e._unregistered(t);break;default:var n=i.sipErrorCause(t.status_code);e._unregistered(t,n)}}});c.send()}else l("already unregistered")}},{key:"close",value:function(){this._registered&&this.unregister()}},{key:"onTransportClosed",value:function(){this._registering=!1,null!==this._registrationTimer&&(clearTimeout(this._registrationTimer),this._registrationTimer=null),this._registered&&(this._registered=!1,this._ua.unregistered({}))}},{key:"_registrationFailure",value:function(e,t){this._registering=!1,this._ua.registrationFailed({response:e||null,cause:t}),this._registered&&(this._registered=!1,this._ua.unregistered({response:e||null,cause:t}))}},{key:"_unregistered",value:function(e,t){this._registering=!1,this._registered=!1,this._ua.unregistered({response:e||null,cause:t||null})}},{key:"registered",get:function(){return this._registered}}]),e}()},{"./Constants":2,"./RequestSender":18,"./SIPMessage":19,"./Utils":26,debug:29}],18:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("./Constants"),a=e("./DigestAuthentication"),o=e("./Transactions"),s=e("debug")("JsSIP:RequestSender"),l={onRequestTimeout:function(){},onTransportError:function(){},onReceiveResponse:function(){},onAuthenticated:function(){}};t.exports=function(){function e(t,n,r){for(var a in function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),this._ua=t,this._eventHandlers=r,this._method=n.method,this._request=n,this._auth=null,this._challenged=!1,this._staled=!1,l)Object.prototype.hasOwnProperty.call(l,a)&&(this._eventHandlers[a]||(this._eventHandlers[a]=l[a]));t.status!==t.C.STATUS_USER_CLOSED||this._method===i.BYE&&this._method===i.ACK||this._eventHandlers.onTransportError()}return r(e,[{key:"send",value:function(){var e=this,t={onRequestTimeout:function(){e._eventHandlers.onRequestTimeout()},onTransportError:function(){e._eventHandlers.onTransportError()},onReceiveResponse:function(t){e._receiveResponse(t)}};switch(this._method){case"INVITE":this.clientTransaction=new o.InviteClientTransaction(this._ua,this._ua.transport,this._request,t);break;case"ACK":this.clientTransaction=new o.AckClientTransaction(this._ua,this._ua.transport,this._request,t);break;default:this.clientTransaction=new o.NonInviteClientTransaction(this._ua,this._ua.transport,this._request,t)}this.clientTransaction.send()}},{key:"_receiveResponse",value:function(e){var t=void 0,n=void 0,r=e.status_code;if(401!==r&&407!==r||null===this._ua.configuration.password&&null===this._ua.configuration.ha1)this._eventHandlers.onReceiveResponse(e);else{if(401===e.status_code?(t=e.parseHeader("www-authenticate"),n="authorization"):(t=e.parseHeader("proxy-authenticate"),n="proxy-authorization"),!t)return s(e.status_code+" with wrong or missing challenge, cannot authenticate"),void this._eventHandlers.onReceiveResponse(e);if(!this._challenged||!this._staled&&!0===t.stale){if(this._auth||(this._auth=new a({username:this._ua.configuration.authorization_user,password:this._ua.configuration.password,realm:this._ua.configuration.realm,ha1:this._ua.configuration.ha1})),!this._auth.authenticate(this._request,t))return void this._eventHandlers.onReceiveResponse(e);this._challenged=!0,this._ua.set("realm",this._auth.get("realm")),this._ua.set("ha1",this._auth.get("ha1")),t.stale&&(this._staled=!0),this._request=this._request.clone(),this._request.cseq+=1,this._request.setHeader("cseq",this._request.cseq+" "+this._method),this._request.setHeader(n,this._auth.toString()),this._eventHandlers.onAuthenticated(this._request),this.send()}else this._eventHandlers.onReceiveResponse(e)}}}]),e}()},{"./Constants":2,"./DigestAuthentication":5,"./Transactions":22,debug:29}],19:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function i(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function a(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}function o(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var s=e("sdp-transform"),l=e("./Constants"),c=e("./Utils"),u=e("./NameAddrHeader"),f=e("./Grammar"),d=e("debug")("JsSIP:SIPMessage"),h=function(){function e(t,n,r,i,a,s){if(o(this,e),!t||!n||!r)return null;i=i||{},this.ua=r,this.headers={},this.method=t,this.ruri=n,this.body=s,this.extraHeaders=c.cloneArray(a),i.route_set?this.setHeader("route",i.route_set):r.configuration.use_preloaded_route&&this.setHeader("route","<"+r.transport.sip_uri+";lr>"),this.setHeader("via",""),this.setHeader("max-forwards",l.MAX_FORWARDS);var f=i.to_display_name||0===i.to_display_name?'"'+i.to_display_name+'" ':"";f+="<"+(i.to_uri||n)+">",f+=i.to_tag?";tag="+i.to_tag:"",this.to=u.parse(f),this.setHeader("to",f);var d=void 0;d=i.from_display_name||0===i.from_display_name?'"'+i.from_display_name+'" ':r.configuration.display_name?'"'+r.configuration.display_name+'" ':"",d+="<"+(i.from_uri||r.configuration.uri)+">;tag=",d+=i.from_tag||c.newTag(),this.from=u.parse(d),this.setHeader("from",d);var h=i.call_id||r.configuration.jssip_id+c.createRandomToken(15);this.call_id=h,this.setHeader("call-id",h);var p=i.cseq||Math.floor(1e4*Math.random());this.cseq=p,this.setHeader("cseq",p+" "+t)}return r(e,[{key:"setHeader",value:function(e,t){for(var n=new RegExp("^\\s*"+e+"\\s*:","i"),r=0;r<this.extraHeaders.length;r++)n.test(this.extraHeaders[r])&&this.extraHeaders.splice(r,1);this.headers[c.headerize(e)]=Array.isArray(t)?t:[t]}},{key:"getHeader",value:function(e){var t=this.headers[c.headerize(e)];if(t){if(t[0])return t[0]}else{var n=new RegExp("^\\s*"+e+"\\s*:","i"),r=!0,i=!1,a=void 0;try{for(var o,s=this.extraHeaders[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var l=o.value;if(n.test(l))return l.substring(l.indexOf(":")+1).trim()}}catch(e){i=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(i)throw a}}}}},{key:"getHeaders",value:function(e){var t=this.headers[c.headerize(e)],n=[];if(t){var r=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var l=o.value;n.push(l)}}catch(e){i=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(i)throw a}}return n}var u=new RegExp("^\\s*"+e+"\\s*:","i"),f=!0,d=!1,h=void 0;try{for(var p,m=this.extraHeaders[Symbol.iterator]();!(f=(p=m.next()).done);f=!0){var g=p.value;u.test(g)&&n.push(g.substring(g.indexOf(":")+1).trim())}}catch(e){d=!0,h=e}finally{try{!f&&m.return&&m.return()}finally{if(d)throw h}}return n}},{key:"hasHeader",value:function(e){if(this.headers[c.headerize(e)])return!0;var t=new RegExp("^\\s*"+e+"\\s*:","i"),n=!0,r=!1,i=void 0;try{for(var a,o=this.extraHeaders[Symbol.iterator]();!(n=(a=o.next()).done);n=!0){var s=a.value;if(t.test(s))return!0}}catch(e){r=!0,i=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw i}}return!1}},{key:"parseSDP",value:function(e){return!e&&this.sdp||(this.sdp=s.parse(this.body||"")),this.sdp}},{key:"toString",value:function(){var e=this.method+" "+this.ruri+" SIP/2.0\r\n";for(var t in this.headers)if(Object.prototype.hasOwnProperty.call(this.headers,t)){var n=!0,r=!1,i=void 0;try{for(var a,o=this.headers[t][Symbol.iterator]();!(n=(a=o.next()).done);n=!0){e+=t+": "+a.value+"\r\n"}}catch(e){r=!0,i=e}finally{try{!n&&o.return&&o.return()}finally{if(r)throw i}}}var s=!0,u=!1,f=void 0;try{for(var d,h=this.extraHeaders[Symbol.iterator]();!(s=(d=h.next()).done);s=!0){e+=d.value.trim()+"\r\n"}}catch(e){u=!0,f=e}finally{try{!s&&h.return&&h.return()}finally{if(u)throw f}}var p=[];switch(this.method){case l.REGISTER:p.push("path","gruu");break;case l.INVITE:this.ua.configuration.session_timers&&p.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&p.push("gruu"),p.push("ice","replaces");break;case l.UPDATE:this.ua.configuration.session_timers&&p.push("timer"),p.push("ice")}p.push("outbound");var m=this.ua.configuration.user_agent||l.USER_AGENT;(e+="Allow: "+l.ALLOWED_METHODS+"\r\n",e+="Supported: "+p+"\r\n",e+="User-Agent: "+m+"\r\n",this.body)?(e+="Content-Length: "+c.str_utf8_length(this.body)+"\r\n\r\n",e+=this.body):e+="Content-Length: 0\r\n\r\n";return e}},{key:"clone",value:function(){var t=new e(this.method,this.ruri,this.ua);return Object.keys(this.headers).forEach((function(e){t.headers[e]=this.headers[e].slice()}),this),t.body=this.body,t.extraHeaders=c.cloneArray(this.extraHeaders),t.to=this.to,t.from=this.from,t.call_id=this.call_id,t.cseq=this.cseq,t}}]),e}(),p=function(e){function t(e,n,r,a,s){o(this,t);var c=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this,l.INVITE,e,n,r,a,s));return c.transaction=null,c}return a(t,e),r(t,[{key:"cancel",value:function(e){this.transaction.cancel(e)}},{key:"clone",value:function(){var e=new t(this.ruri,this.ua);return Object.keys(this.headers).forEach((function(t){e.headers[t]=this.headers[t].slice()}),this),e.body=this.body,e.extraHeaders=c.cloneArray(this.extraHeaders),e.to=this.to,e.from=this.from,e.call_id=this.call_id,e.cseq=this.cseq,e.transaction=this.transaction,e}}]),t}(h),m=function(){function e(){o(this,e),this.data=null,this.headers=null,this.method=null,this.via=null,this.via_branch=null,this.call_id=null,this.cseq=null,this.from=null,this.from_tag=null,this.to=null,this.to_tag=null,this.body=null,this.sdp=null}return r(e,[{key:"addHeader",value:function(e,t){var n={raw:t};e=c.headerize(e),this.headers[e]?this.headers[e].push(n):this.headers[e]=[n]}},{key:"getHeader",value:function(e){var t=this.headers[c.headerize(e)];if(t)return t[0]?t[0].raw:void 0}},{key:"getHeaders",value:function(e){var t=this.headers[c.headerize(e)],n=[];if(!t)return[];var r=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(r=(o=s.next()).done);r=!0){var l=o.value;n.push(l.raw)}}catch(e){i=!0,a=e}finally{try{!r&&s.return&&s.return()}finally{if(i)throw a}}return n}},{key:"hasHeader",value:function(e){return!!this.headers[c.headerize(e)]}},{key:"parseHeader",value:function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:0;if(e=c.headerize(e),this.headers[e]){if(!(t>=this.headers[e].length)){var n=this.headers[e][t],r=n.raw;if(n.parsed)return n.parsed;var i=f.parse(r,e.replace(/-/g,"_"));return-1===i?(this.headers[e].splice(t,1),void d('error parsing "'+e+'" header field with value "'+r+'"')):(n.parsed=i,i)}d('not so many "'+e+'" headers present')}else d('header "'+e+'" not present')}},{key:"s",value:function(e,t){return this.parseHeader(e,t)}},{key:"setHeader",value:function(e,t){var n={raw:t};this.headers[c.headerize(e)]=[n]}},{key:"parseSDP",value:function(e){return!e&&this.sdp||(this.sdp=s.parse(this.body||"")),this.sdp}},{key:"toString",value:function(){return this.data}}]),e}(),g=function(e){function t(e){o(this,t);var n=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return n.ua=e,n.headers={},n.ruri=null,n.transport=null,n.server_transaction=null,n}return a(t,e),r(t,[{key:"reply",value:function(e,t,n,r,i,a){var o=[],s=this.getHeader("To");if(t=t||null,!(e=e||null)||e<100||e>699)throw new TypeError("Invalid status_code: "+e);if(t&&"string"!=typeof t&&!(t instanceof String))throw new TypeError("Invalid reason_phrase: "+t);t=t||l.REASON_PHRASE[e]||"",n=c.cloneArray(n);var u="SIP/2.0 "+e+" "+t+"\r\n";if(this.method===l.INVITE&&e>100&&e<=200){var f=this.getHeaders("record-route"),d=!0,h=!1,p=void 0;try{for(var m,g=f[Symbol.iterator]();!(d=(m=g.next()).done);d=!0){u+="Record-Route: "+m.value+"\r\n"}}catch(e){h=!0,p=e}finally{try{!d&&g.return&&g.return()}finally{if(h)throw p}}}var _=this.getHeaders("via"),b=!0,v=!1,y=void 0;try{for(var w,C=_[Symbol.iterator]();!(b=(w=C.next()).done);b=!0){u+="Via: "+w.value+"\r\n"}}catch(e){v=!0,y=e}finally{try{!b&&C.return&&C.return()}finally{if(v)throw y}}!this.to_tag&&e>100?s+=";tag="+c.newTag():this.to_tag&&!this.s("to").hasParam("tag")&&(s+=";tag="+this.to_tag),u+="To: "+s+"\r\n",u+="From: "+this.getHeader("From")+"\r\n",u+="Call-ID: "+this.call_id+"\r\n",u+="CSeq: "+this.cseq+" "+this.method+"\r\n";var A=!0,S=!1,x=void 0;try{for(var T,k=n[Symbol.iterator]();!(A=(T=k.next()).done);A=!0){u+=T.value.trim()+"\r\n"}}catch(e){S=!0,x=e}finally{try{!A&&k.return&&k.return()}finally{if(S)throw x}}switch(this.method){case l.INVITE:this.ua.configuration.session_timers&&o.push("timer"),(this.ua.contact.pub_gruu||this.ua.contact.temp_gruu)&&o.push("gruu"),o.push("ice","replaces");break;case l.UPDATE:this.ua.configuration.session_timers&&o.push("timer"),r&&o.push("ice"),o.push("replaces")}(o.push("outbound"),this.method===l.OPTIONS?(u+="Allow: "+l.ALLOWED_METHODS+"\r\n",u+="Accept: "+l.ACCEPTED_BODY_TYPES+"\r\n"):405===e?u+="Allow: "+l.ALLOWED_METHODS+"\r\n":415===e&&(u+="Accept: "+l.ACCEPTED_BODY_TYPES+"\r\n"),u+="Supported: "+o+"\r\n",r)?(u+="Content-Type: application/sdp\r\n",u+="Content-Length: "+c.str_utf8_length(r)+"\r\n\r\n",u+=r):u+="Content-Length: 0\r\n\r\n";this.server_transaction.receiveResponse(e,u,i,a)}},{key:"reply_sl",value:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:null,t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:null,n=this.getHeaders("via");if(!e||e<100||e>699)throw new TypeError("Invalid status_code: "+e);if(t&&"string"!=typeof t&&!(t instanceof String))throw new TypeError("Invalid reason_phrase: "+t);var r="SIP/2.0 "+e+" "+(t=t||l.REASON_PHRASE[e]||"")+"\r\n",i=!0,a=!1,o=void 0;try{for(var s,u=n[Symbol.iterator]();!(i=(s=u.next()).done);i=!0){var f=s.value;r+="Via: "+f+"\r\n"}}catch(e){a=!0,o=e}finally{try{!i&&u.return&&u.return()}finally{if(a)throw o}}var d=this.getHeader("To");!this.to_tag&&e>100?d+=";tag="+c.newTag():this.to_tag&&!this.s("to").hasParam("tag")&&(d+=";tag="+this.to_tag),r+="To: "+d+"\r\n",r+="From: "+this.getHeader("From")+"\r\n",r+="Call-ID: "+this.call_id+"\r\n",r+="CSeq: "+this.cseq+" "+this.method+"\r\n",r+="Content-Length: 0\r\n\r\n",this.transport.send(r)}}]),t}(m),_=function(e){function t(){o(this,t);var e=i(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return e.headers={},e.status_code=null,e.reason_phrase=null,e}return a(t,e),t}(m);t.exports={OutgoingRequest:h,InitialOutgoingInviteRequest:p,IncomingRequest:g,IncomingResponse:_}},{"./Constants":2,"./Grammar":7,"./NameAddrHeader":10,"./Utils":26,debug:29,"sdp-transform":36}],20:[function(e,t,n){"use strict";var r=e("./Utils"),i=e("./Grammar"),a=e("debug")("JsSIP:ERROR:Socket");a.log=console.warn.bind(console),n.isSocket=function(e){if(Array.isArray(e))return!1;if(void 0===e)return a("undefined JsSIP.Socket instance"),!1;try{if(!r.isString(e.url))throw a("missing or invalid JsSIP.Socket url property"),new Error;if(!r.isString(e.via_transport))throw a("missing or invalid JsSIP.Socket via_transport property"),new Error;if(-1===i.parse(e.sip_uri,"SIP_URI"))throw a("missing or invalid JsSIP.Socket sip_uri property"),new Error}catch(e){return!1}try{["connect","disconnect","send"].forEach((function(t){if(!r.isFunction(e[t]))throw a("missing or invalid JsSIP.Socket method: "+t),new Error}))}catch(e){return!1}return!0}},{"./Grammar":7,"./Utils":26,debug:29}],21:[function(e,t,n){"use strict";var r=500;t.exports={T1:r,T2:4e3,T4:5e3,TIMER_B:32e3,TIMER_D:0,TIMER_F:32e3,TIMER_H:32e3,TIMER_I:0,TIMER_J:0,TIMER_K:0,TIMER_L:32e3,TIMER_M:32e3,PROVISIONAL_RESPONSE_INTERVAL:6e4}},{}],22:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}function a(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}function o(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}var s=e("events").EventEmitter,l=e("./Constants"),c=e("./SIPMessage"),u=e("./Timers"),f=e("debug")("JsSIP:NonInviteClientTransaction"),d=e("debug")("JsSIP:InviteClientTransaction"),h=e("debug")("JsSIP:AckClientTransaction"),p=e("debug")("JsSIP:NonInviteServerTransaction"),m=e("debug")("JsSIP:InviteServerTransaction"),g={STATUS_TRYING:1,STATUS_PROCEEDING:2,STATUS_CALLING:3,STATUS_ACCEPTED:4,STATUS_COMPLETED:5,STATUS_TERMINATED:6,STATUS_CONFIRMED:7,NON_INVITE_CLIENT:"nict",NON_INVITE_SERVER:"nist",INVITE_CLIENT:"ict",INVITE_SERVER:"ist"},_=function(e){function t(e,n,r,o){i(this,t);var s=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));s.type=g.NON_INVITE_CLIENT,s.id="z9hG4bK"+Math.floor(1e7*Math.random()),s.ua=e,s.transport=n,s.request=r,s.eventHandlers=o;var l="SIP/2.0/"+n.via_transport;return l+=" "+e.configuration.via_host+";branch="+s.id,s.request.setHeader("via",l),s.ua.newTransaction(s),s}return o(t,e),r(t,[{key:"stateChanged",value:function(e){this.state=e,this.emit("stateChanged")}},{key:"send",value:function(){var e=this;this.stateChanged(g.STATUS_TRYING),this.F=setTimeout((function(){e.timer_F()}),u.TIMER_F),this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){f("transport error occurred, deleting transaction "+this.id),clearTimeout(this.F),clearTimeout(this.K),this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onTransportError()}},{key:"timer_F",value:function(){f("Timer F expired for transaction "+this.id),this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onRequestTimeout()}},{key:"timer_K",value:function(){this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"receiveResponse",value:function(e){var t=this,n=e.status_code;if(n<200)switch(this.state){case g.STATUS_TRYING:case g.STATUS_PROCEEDING:this.stateChanged(g.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(e)}else switch(this.state){case g.STATUS_TRYING:case g.STATUS_PROCEEDING:this.stateChanged(g.STATUS_COMPLETED),clearTimeout(this.F),408===n?this.eventHandlers.onRequestTimeout():this.eventHandlers.onReceiveResponse(e),this.K=setTimeout((function(){t.timer_K()}),u.TIMER_K)}}},{key:"C",get:function(){return g}}]),t}(s),b=function(e){function t(e,n,r,o){i(this,t);var s=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));s.type=g.INVITE_CLIENT,s.id="z9hG4bK"+Math.floor(1e7*Math.random()),s.ua=e,s.transport=n,s.request=r,s.eventHandlers=o,r.transaction=s;var l="SIP/2.0/"+n.via_transport;return l+=" "+e.configuration.via_host+";branch="+s.id,s.request.setHeader("via",l),s.ua.newTransaction(s),s}return o(t,e),r(t,[{key:"stateChanged",value:function(e){this.state=e,this.emit("stateChanged")}},{key:"send",value:function(){var e=this;this.stateChanged(g.STATUS_CALLING),this.B=setTimeout((function(){e.timer_B()}),u.TIMER_B),this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){clearTimeout(this.B),clearTimeout(this.D),clearTimeout(this.M),this.state!==g.STATUS_ACCEPTED&&(d("transport error occurred, deleting transaction "+this.id),this.eventHandlers.onTransportError()),this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"timer_M",value:function(){d("Timer M expired for transaction "+this.id),this.state===g.STATUS_ACCEPTED&&(clearTimeout(this.B),this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"timer_B",value:function(){d("Timer B expired for transaction "+this.id),this.state===g.STATUS_CALLING&&(this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this),this.eventHandlers.onRequestTimeout())}},{key:"timer_D",value:function(){d("Timer D expired for transaction "+this.id),clearTimeout(this.B),this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"sendACK",value:function(e){var t=this,n=new c.OutgoingRequest(l.ACK,this.request.ruri,this.ua,{route_set:this.request.getHeader("route"),call_id:this.request.getHeader("call-id"),cseq:this.request.cseq});n.setHeader("from",this.request.getHeader("from")),n.setHeader("via",this.request.getHeader("via")),n.setHeader("to",e.getHeader("to")),this.D=setTimeout((function(){t.timer_D()}),u.TIMER_D),this.transport.send(n)}},{key:"cancel",value:function(e){if(this.state===g.STATUS_PROCEEDING){var t=new c.OutgoingRequest(l.CANCEL,this.request.ruri,this.ua,{route_set:this.request.getHeader("route"),call_id:this.request.getHeader("call-id"),cseq:this.request.cseq});t.setHeader("from",this.request.getHeader("from")),t.setHeader("via",this.request.getHeader("via")),t.setHeader("to",this.request.getHeader("to")),e&&t.setHeader("reason",e),this.transport.send(t)}}},{key:"receiveResponse",value:function(e){var t=this,n=e.status_code;if(n>=100&&n<=199)switch(this.state){case g.STATUS_CALLING:this.stateChanged(g.STATUS_PROCEEDING),this.eventHandlers.onReceiveResponse(e);break;case g.STATUS_PROCEEDING:this.eventHandlers.onReceiveResponse(e)}else if(n>=200&&n<=299)switch(this.state){case g.STATUS_CALLING:case g.STATUS_PROCEEDING:this.stateChanged(g.STATUS_ACCEPTED),this.M=setTimeout((function(){t.timer_M()}),u.TIMER_M),this.eventHandlers.onReceiveResponse(e);break;case g.STATUS_ACCEPTED:this.eventHandlers.onReceiveResponse(e)}else if(n>=300&&n<=699)switch(this.state){case g.STATUS_CALLING:case g.STATUS_PROCEEDING:this.stateChanged(g.STATUS_COMPLETED),this.sendACK(e),this.eventHandlers.onReceiveResponse(e);break;case g.STATUS_COMPLETED:this.sendACK(e)}}},{key:"C",get:function(){return g}}]),t}(s),v=function(e){function t(e,n,r,o){i(this,t);var s=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));s.id="z9hG4bK"+Math.floor(1e7*Math.random()),s.transport=n,s.request=r,s.eventHandlers=o;var l="SIP/2.0/"+n.via_transport;return l+=" "+e.configuration.via_host+";branch="+s.id,s.request.setHeader("via",l),s}return o(t,e),r(t,[{key:"send",value:function(){this.transport.send(this.request)||this.onTransportError()}},{key:"onTransportError",value:function(){h("transport error occurred for transaction "+this.id),this.eventHandlers.onTransportError()}},{key:"C",get:function(){return g}}]),t}(s),y=function(e){function t(e,n,r){i(this,t);var o=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type=g.NON_INVITE_SERVER,o.id=r.via_branch,o.ua=e,o.transport=n,o.request=r,o.last_response="",r.server_transaction=o,o.state=g.STATUS_TRYING,e.newTransaction(o),o}return o(t,e),r(t,[{key:"stateChanged",value:function(e){this.state=e,this.emit("stateChanged")}},{key:"timer_J",value:function(){p("Timer J expired for transaction "+this.id),this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"onTransportError",value:function(){this.transportError||(this.transportError=!0,p("transport error occurred, deleting transaction "+this.id),clearTimeout(this.J),this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"receiveResponse",value:function(e,t,n,r){var i=this;if(100===e)switch(this.state){case g.STATUS_TRYING:this.stateChanged(g.STATUS_PROCEEDING),this.transport.send(t)||this.onTransportError();break;case g.STATUS_PROCEEDING:this.last_response=t,this.transport.send(t)?n&&n():(this.onTransportError(),r&&r())}else if(e>=200&&e<=699)switch(this.state){case g.STATUS_TRYING:case g.STATUS_PROCEEDING:this.stateChanged(g.STATUS_COMPLETED),this.last_response=t,this.J=setTimeout((function(){i.timer_J()}),u.TIMER_J),this.transport.send(t)?n&&n():(this.onTransportError(),r&&r())}}},{key:"C",get:function(){return g}}]),t}(s),w=function(e){function t(e,n,r){i(this,t);var o=a(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));return o.type=g.INVITE_SERVER,o.id=r.via_branch,o.ua=e,o.transport=n,o.request=r,o.last_response="",r.server_transaction=o,o.state=g.STATUS_PROCEEDING,e.newTransaction(o),o.resendProvisionalTimer=null,r.reply(100),o}return o(t,e),r(t,[{key:"stateChanged",value:function(e){this.state=e,this.emit("stateChanged")}},{key:"timer_H",value:function(){m("Timer H expired for transaction "+this.id),this.state===g.STATUS_COMPLETED&&m("ACK not received, dialog will be terminated"),this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this)}},{key:"timer_I",value:function(){this.stateChanged(g.STATUS_TERMINATED)}},{key:"timer_L",value:function(){m("Timer L expired for transaction "+this.id),this.state===g.STATUS_ACCEPTED&&(this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"onTransportError",value:function(){this.transportError||(this.transportError=!0,m("transport error occurred, deleting transaction "+this.id),null!==this.resendProvisionalTimer&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),clearTimeout(this.L),clearTimeout(this.H),clearTimeout(this.I),this.stateChanged(g.STATUS_TERMINATED),this.ua.destroyTransaction(this))}},{key:"resend_provisional",value:function(){this.transport.send(this.last_response)||this.onTransportError()}},{key:"receiveResponse",value:function(e,t,n,r){var i=this;if(e>=100&&e<=199)switch(this.state){case g.STATUS_PROCEEDING:this.transport.send(t)||this.onTransportError(),this.last_response=t}if(e>100&&e<=199&&this.state===g.STATUS_PROCEEDING)null===this.resendProvisionalTimer&&(this.resendProvisionalTimer=setInterval((function(){i.resend_provisional()}),u.PROVISIONAL_RESPONSE_INTERVAL));else if(e>=200&&e<=299)switch(this.state){case g.STATUS_PROCEEDING:this.stateChanged(g.STATUS_ACCEPTED),this.last_response=t,this.L=setTimeout((function(){i.timer_L()}),u.TIMER_L),null!==this.resendProvisionalTimer&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null);case g.STATUS_ACCEPTED:this.transport.send(t)?n&&n():(this.onTransportError(),r&&r())}else if(e>=300&&e<=699)switch(this.state){case g.STATUS_PROCEEDING:null!==this.resendProvisionalTimer&&(clearInterval(this.resendProvisionalTimer),this.resendProvisionalTimer=null),this.transport.send(t)?(this.stateChanged(g.STATUS_COMPLETED),this.H=setTimeout((function(){i.timer_H()}),u.TIMER_H),n&&n()):(this.onTransportError(),r&&r())}}},{key:"C",get:function(){return g}}]),t}(s);t.exports={C:g,NonInviteClientTransaction:_,InviteClientTransaction:b,AckClientTransaction:v,NonInviteServerTransaction:y,InviteServerTransaction:w,checkTransaction:function(e,t){var n=e._transactions,r=void 0;switch(t.method){case l.INVITE:if(r=n.ist[t.via_branch]){switch(r.state){case g.STATUS_PROCEEDING:r.transport.send(r.last_response)}return!0}break;case l.ACK:if(!(r=n.ist[t.via_branch]))return!1;if(r.state===g.STATUS_ACCEPTED)return!1;if(r.state===g.STATUS_COMPLETED)return r.state=g.STATUS_CONFIRMED,r.I=setTimeout((function(){r.timer_I()}),u.TIMER_I),!0;break;case l.CANCEL:return(r=n.ist[t.via_branch])?(t.reply_sl(200),r.state!==g.STATUS_PROCEEDING):(t.reply_sl(481),!0);default:if(r=n.nist[t.via_branch]){switch(r.state){case g.STATUS_TRYING:break;case g.STATUS_PROCEEDING:case g.STATUS_COMPLETED:r.transport.send(r.last_response)}return!0}}}}},{"./Constants":2,"./SIPMessage":19,"./Timers":21,debug:29,events:31}],23:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=e("./Socket"),o=e("debug")("JsSIP:Transport"),s=e("debug")("JsSIP:ERROR:Transport");s.log=console.warn.bind(console);var l={STATUS_CONNECTED:0,STATUS_CONNECTING:1,STATUS_DISCONNECTED:2,SOCKET_STATUS_READY:0,SOCKET_STATUS_ERROR:1,recovery_options:{min_interval:2,max_interval:30}};t.exports=function(){function e(t){var n=arguments.length>1&&void 0!==arguments[1]?arguments[1]:l.recovery_options;if(i(this,e),o("new()"),this.status=l.STATUS_DISCONNECTED,this.socket=null,this.sockets=[],this.recovery_options=n,this.recover_attempts=0,this.recovery_timer=null,this.close_requested=!1,void 0===t)throw new TypeError("Invalid argument. undefined 'sockets' argument");t instanceof Array||(t=[t]),t.forEach((function(e){if(!a.isSocket(e.socket))throw new TypeError("Invalid argument. invalid 'JsSIP.Socket' instance");if(e.weight&&!Number(e.weight))throw new TypeError("Invalid argument. 'weight' attribute is not a number");this.sockets.push({socket:e.socket,weight:e.weight||0,status:l.SOCKET_STATUS_READY})}),this),this._getSocket()}return r(e,[{key:"connect",value:function(){o("connect()"),this.isConnected()?o("Transport is already connected"):this.isConnecting()?o("Transport is connecting"):(this.close_requested=!1,this.status=l.STATUS_CONNECTING,this.onconnecting({socket:this.socket,attempts:this.recover_attempts}),this.close_requested||(this.socket.onconnect=this._onConnect.bind(this),this.socket.ondisconnect=this._onDisconnect.bind(this),this.socket.ondata=this._onData.bind(this),this.socket.connect()))}},{key:"disconnect",value:function(){o("close()"),this.close_requested=!0,this.recover_attempts=0,this.status=l.STATUS_DISCONNECTED,null!==this.recovery_timer&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.socket.onconnect=function(){},this.socket.ondisconnect=function(){},this.socket.ondata=function(){},this.socket.disconnect(),this.ondisconnect({socket:this.socket,error:!1})}},{key:"send",value:function(e){if(o("send()"),!this.isConnected())return s("unable to send message, transport is not connected"),!1;var t=e.toString();return o("sending message:\n\n"+t+"\n"),this.socket.send(t)}},{key:"isConnected",value:function(){return this.status===l.STATUS_CONNECTED}},{key:"isConnecting",value:function(){return this.status===l.STATUS_CONNECTING}},{key:"_reconnect",value:function(){var e=this;this.recover_attempts+=1;var t=Math.floor(Math.random()*Math.pow(2,this.recover_attempts)+1);t<this.recovery_options.min_interval?t=this.recovery_options.min_interval:t>this.recovery_options.max_interval&&(t=this.recovery_options.max_interval),o("reconnection attempt: "+this.recover_attempts+". next connection attempt in "+t+" seconds"),this.recovery_timer=setTimeout((function(){e.close_requested||e.isConnected()||e.isConnecting()||(e._getSocket(),e.connect())}),1e3*t)}},{key:"_getSocket",value:function(){var e=[];if(this.sockets.forEach((function(t){t.status!==l.SOCKET_STATUS_ERROR&&(0===e.length?e.push(t):t.weight>e[0].weight?e=[t]:t.weight===e[0].weight&&e.push(t))})),0===e.length)return this.sockets.forEach((function(e){e.status=l.SOCKET_STATUS_READY})),void this._getSocket();var t=Math.floor(Math.random()*e.length);this.socket=e[t].socket}},{key:"_onConnect",value:function(){this.recover_attempts=0,this.status=l.STATUS_CONNECTED,null!==this.recovery_timer&&(clearTimeout(this.recovery_timer),this.recovery_timer=null),this.onconnect({socket:this})}},{key:"_onDisconnect",value:function(e,t,n){this.status=l.STATUS_DISCONNECTED,this.ondisconnect({socket:this.socket,error:e,code:t,reason:n}),this.close_requested||(this.sockets.forEach((function(e){this.socket===e.socket&&(e.status=l.SOCKET_STATUS_ERROR)}),this),this._reconnect(e))}},{key:"_onData",value:function(e){if("\r\n"!==e){if("string"!=typeof e){try{e=String.fromCharCode.apply(null,new Uint8Array(e))}catch(e){return void o("received binary message failed to be converted into string, message discarded")}o("received binary message:\n\n"+e+"\n")}else o("received text message:\n\n"+e+"\n");this.ondata({transport:this,message:e})}else o("received message with CRLF Keep Alive response")}},{key:"via_transport",get:function(){return this.socket.via_transport}},{key:"url",get:function(){return this.socket.url}},{key:"sip_uri",get:function(){return this.socket.sip_uri}}]),e}()},{"./Socket":20,debug:29}],24:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("events").EventEmitter,a=e("./Constants"),o=e("./Registrator"),s=e("./RTCSession"),l=e("./Message"),c=e("./Transactions"),u=e("./Transport"),f=e("./Utils"),d=e("./Exceptions"),h=e("./URI"),p=e("./Grammar"),m=e("./Parser"),g=e("./SIPMessage"),_=e("./sanityCheck"),b=e("./Config"),v=e("debug")("JsSIP:UA"),y=e("debug")("JsSIP:ERROR:UA");y.log=console.warn.bind(console);var w={STATUS_INIT:0,STATUS_READY:1,STATUS_USER_CLOSED:2,STATUS_NOT_READY:3,CONFIGURATION_ERROR:1,NETWORK_ERROR:2};function C(e){this.emit("connecting",e)}function A(e){this._status!==w.STATUS_USER_CLOSED&&(this._status=w.STATUS_READY,this._error=null,this.emit("connected",e),this._dynConfiguration.register&&this._registrator.register())}function S(e){var t=!0,n=!1,r=void 0;try{for(var i,a=["nict","ict","nist","ist"][Symbol.iterator]();!(t=(i=a.next()).done);t=!0){var o=i.value;for(var s in this._transactions[o])Object.prototype.hasOwnProperty.call(this._transactions[o],s)&&this._transactions[o][s].onTransportError()}}catch(e){n=!0,r=e}finally{try{!t&&a.return&&a.return()}finally{if(n)throw r}}this.emit("disconnected",e),this._registrator.onTransportClosed(),this._status!==w.STATUS_USER_CLOSED&&(this._status=w.STATUS_NOT_READY,this._error=w.NETWORK_ERROR)}function x(e){var t=e.transport,n=e.message;if((n=m.parseMessage(n,this))&&!(this._status===w.STATUS_USER_CLOSED&&n instanceof g.IncomingRequest)&&_(n,this,t))if(n instanceof g.IncomingRequest)n.transport=t,this.receiveRequest(n);else if(n instanceof g.IncomingResponse){var r=void 0;switch(n.method){case a.INVITE:(r=this._transactions.ict[n.via_branch])&&r.receiveResponse(n);break;case a.ACK:break;default:(r=this._transactions.nict[n.via_branch])&&r.receiveResponse(n)}}}t.exports=function(e){function t(e){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,t),v("new() [configuration:%o]",e);var n=function(e,t){if(!e)throw new ReferenceError("this hasn't been initialised - super() hasn't been called");return!t||"object"!=typeof t&&"function"!=typeof t?e:t}(this,(t.__proto__||Object.getPrototypeOf(t)).call(this));if(n._cache={credentials:{}},n._configuration=Object.assign({},b.settings),n._dynConfiguration={},n._dialogs={},n._applicants={},n._sessions={},n._transport=null,n._contact=null,n._status=w.STATUS_INIT,n._error=null,n._transactions={nist:{},nict:{},ist:{},ict:{}},n._data={},n._closeTimer=null,void 0===e)throw new TypeError("Not enough arguments");try{n._loadConfig(e)}catch(e){throw n._status=w.STATUS_NOT_READY,n._error=w.CONFIGURATION_ERROR,e}return n._registrator=new o(n),n}return function(e,t){if("function"!=typeof t&&null!==t)throw new TypeError("Super expression must either be null or a function, not "+typeof t);e.prototype=Object.create(t&&t.prototype,{constructor:{value:e,enumerable:!1,writable:!0,configurable:!0}}),t&&(Object.setPrototypeOf?Object.setPrototypeOf(e,t):e.__proto__=t)}(t,e),r(t,null,[{key:"C",get:function(){return w}}]),r(t,[{key:"start",value:function(){v("start()"),this._status===w.STATUS_INIT?this._transport.connect():this._status===w.STATUS_USER_CLOSED?(v("restarting UA"),null!==this._closeTimer&&(clearTimeout(this._closeTimer),this._closeTimer=null,this._transport.disconnect()),this._status=w.STATUS_INIT,this._transport.connect()):this._status===w.STATUS_READY?v("UA is in READY status, not restarted"):v("ERROR: connection is down, Auto-Recovery system is trying to reconnect"),this._dynConfiguration.register=this._configuration.register}},{key:"register",value:function(){v("register()"),this._dynConfiguration.register=!0,this._registrator.register()}},{key:"unregister",value:function(e){v("unregister()"),this._dynConfiguration.register=!1,this._registrator.unregister(e)}},{key:"registrator",value:function(){return this._registrator}},{key:"isRegistered",value:function(){return this._registrator.registered}},{key:"isConnected",value:function(){return this._transport.isConnected()}},{key:"call",value:function(e,t){v("call()");var n=new s(this);return n.connect(e,t),n}},{key:"sendMessage",value:function(e,t,n){v("sendMessage()");var r=new l(this);return r.send(e,t,n),r}},{key:"terminateSessions",value:function(e){for(var t in v("terminateSessions()"),this._sessions)this._sessions[t].isEnded()||this._sessions[t].terminate(e)}},{key:"stop",value:function(){var e=this;if(v("stop()"),this._dynConfiguration={},this._status!==w.STATUS_USER_CLOSED){this._registrator.close();var t=Object.keys(this._sessions).length;for(var n in this._sessions)if(Object.prototype.hasOwnProperty.call(this._sessions,n)){v("closing session "+n);try{this._sessions[n].terminate()}catch(e){}}for(var r in this._applicants)if(Object.prototype.hasOwnProperty.call(this._applicants,r))try{this._applicants[r].close()}catch(e){}this._status=w.STATUS_USER_CLOSED,0===Object.keys(this._transactions.nict).length+Object.keys(this._transactions.nist).length+Object.keys(this._transactions.ict).length+Object.keys(this._transactions.ist).length&&0===t?this._transport.disconnect():this._closeTimer=setTimeout((function(){e._closeTimer=null,e._transport.disconnect()}),2e3)}else v("UA already closed")}},{key:"normalizeTarget",value:function(e){return f.normalizeTarget(e,this._configuration.hostport_params)}},{key:"get",value:function(e){switch(e){case"realm":return this._configuration.realm;case"ha1":return this._configuration.ha1;default:return void y('get() | cannot get "%s" parameter in runtime',e)}}},{key:"set",value:function(e,t){switch(e){case"password":this._configuration.password=String(t);break;case"realm":this._configuration.realm=String(t);break;case"ha1":this._configuration.ha1=String(t),this._configuration.password=null;break;case"display_name":if(-1===p.parse('"'+t+'"',"display_name"))return y('set() | wrong "display_name"'),!1;this._configuration.display_name=t;break;default:return y('set() | cannot set "%s" parameter in runtime',e),!1}return!0}},{key:"newTransaction",value:function(e){this._transactions[e.type][e.id]=e,this.emit("newTransaction",{transaction:e})}},{key:"destroyTransaction",value:function(e){delete this._transactions[e.type][e.id],this.emit("transactionDestroyed",{transaction:e})}},{key:"newDialog",value:function(e){this._dialogs[e.id]=e}},{key:"destroyDialog",value:function(e){delete this._dialogs[e.id]}},{key:"newMessage",value:function(e,t){this._applicants[e]=e,this.emit("newMessage",t)}},{key:"destroyMessage",value:function(e){delete this._applicants[e]}},{key:"newRTCSession",value:function(e,t){this._sessions[e.id]=e,this.emit("newRTCSession",t)}},{key:"destroyRTCSession",value:function(e){delete this._sessions[e.id]}},{key:"registered",value:function(e){this.emit("registered",e)}},{key:"unregistered",value:function(e){this.emit("unregistered",e)}},{key:"registrationFailed",value:function(e){this.emit("registrationFailed",e)}},{key:"receiveRequest",value:function(e){var t=e.method;if(e.ruri.user!==this._configuration.uri.user&&e.ruri.user!==this._contact.uri.user)return v("Request-URI does not point to us"),void(e.method!==a.ACK&&e.reply_sl(404));if(e.ruri.scheme!==a.SIPS){if(!c.checkTransaction(this,e)){if(t===a.INVITE?new c.InviteServerTransaction(this,this._transport,e):t!==a.ACK&&t!==a.CANCEL&&new c.NonInviteServerTransaction(this,this._transport,e),t===a.OPTIONS)e.reply(200);else if(t===a.MESSAGE){if(0===this.listeners("newMessage").length)return void e.reply(405);new l(this).init_incoming(e)}else if(t===a.INVITE&&!e.to_tag&&0===this.listeners("newRTCSession").length)return void e.reply(405);var n=void 0,r=void 0;if(e.to_tag)(n=this._findDialog(e.call_id,e.from_tag,e.to_tag))?n.receiveRequest(e):t===a.NOTIFY?(r=this._findSession(e))?r.receiveRequest(e):(v("received NOTIFY request for a non existent subscription"),e.reply(481,"Subscription does not exist")):t!==a.ACK&&e.reply(481);else switch(t){case a.INVITE:if(window.RTCPeerConnection)if(e.hasHeader("replaces")){var i=e.replaces;(n=this._findDialog(i.call_id,i.from_tag,i.to_tag))?(r=n.owner).isEnded()?e.reply(603):r.receiveRequest(e):e.reply(481)}else(r=new s(this)).init_incoming(e);else y("INVITE received but WebRTC is not supported"),e.reply(488);break;case a.BYE:e.reply(481);break;case a.CANCEL:(r=this._findSession(e))?r.receiveRequest(e):v("received CANCEL request for a non existent session");break;case a.ACK:break;default:e.reply(405)}}}else e.reply_sl(416)}},{key:"_findSession",value:function(e){var t=e.call_id,n=e.from_tag,r=e.to_tag,i=t+n,a=this._sessions[i],o=t+r,s=this._sessions[o];return a||(s||null)}},{key:"_findDialog",value:function(e,t,n){var r=e+t+n,i=this._dialogs[r];return i||(r=e+n+t,(i=this._dialogs[r])||null)}},{key:"_loadConfig",value:function(e){try{b.load(this._configuration,e)}catch(e){throw e}0===this._configuration.display_name&&(this._configuration.display_name="0"),this._configuration.instance_id||(this._configuration.instance_id=f.newUUID()),this._configuration.jssip_id=f.createRandomToken(5);var t=this._configuration.uri.clone();t.user=null,this._configuration.hostport_params=t.toString().replace(/^sip:/i,"");try{this._transport=new u(this._configuration.sockets,{max_interval:this._configuration.connection_recovery_max_interval,min_interval:this._configuration.connection_recovery_min_interval}),this._transport.onconnecting=C.bind(this),this._transport.onconnect=A.bind(this),this._transport.ondisconnect=S.bind(this),this._transport.ondata=x.bind(this)}catch(e){throw y(e),new d.ConfigurationError("sockets",this._configuration.sockets)}if(delete this._configuration.sockets,this._configuration.authorization_user||(this._configuration.authorization_user=this._configuration.uri.user),!this._configuration.registrar_server){var n=this._configuration.uri.clone();n.user=null,n.clearParams(),n.clearHeaders(),this._configuration.registrar_server=n}this._configuration.no_answer_timeout*=1e3,this._configuration.contact_uri?this._configuration.via_host=this._configuration.contact_uri.host:this._configuration.contact_uri=new h("sip",f.createRandomToken(8),this._configuration.via_host,null,{transport:"ws"}),this._contact={pub_gruu:null,temp_gruu:null,uri:this._configuration.contact_uri,toString:function(){var e=arguments.length>0&&void 0!==arguments[0]?arguments[0]:{},t=e.anonymous||null,n=e.outbound||null,r="<";return r+=t?this.temp_gruu||"sip:[email-masked];transport=ws":this.pub_gruu||this.uri.toString(),!n||(t?this.temp_gruu:this.pub_gruu)||(r+=";ob"),r+=">"}};var r=["password","realm","ha1","display_name","register"];for(var i in this._configuration)Object.prototype.hasOwnProperty.call(this._configuration,i)&&(-1!==r.indexOf(i)?Object.defineProperty(this._configuration,i,{writable:!0,configurable:!1}):Object.defineProperty(this._configuration,i,{writable:!1,configurable:!1}));for(var a in v("configuration parameters after validation:"),this._configuration)if(Object.prototype.hasOwnProperty.call(b.settings,a))switch(a){case"uri":case"registrar_server":v("- "+a+": "+this._configuration[a]);break;case"password":case"ha1":v("- "+a+": NOT SHOWN");break;default:v("- "+a+": "+JSON.stringify(this._configuration[a]))}}},{key:"C",get:function(){return w}},{key:"status",get:function(){return this._status}},{key:"contact",get:function(){return this._contact}},{key:"configuration",get:function(){return this._configuration}},{key:"transport",get:function(){return this._transport}}]),t}(i)},{"./Config":1,"./Constants":2,"./Exceptions":6,"./Grammar":7,"./Message":9,"./Parser":11,"./RTCSession":12,"./Registrator":17,"./SIPMessage":19,"./Transactions":22,"./Transport":23,"./URI":25,"./Utils":26,"./sanityCheck":28,debug:29,events:31}],25:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();function i(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}var a=e("./Constants"),o=e("./Utils"),s=e("./Grammar");t.exports=function(){function e(t,n,r,o){var s=arguments.length>4&&void 0!==arguments[4]?arguments[4]:{},l=arguments.length>5&&void 0!==arguments[5]?arguments[5]:{};if(i(this,e),!r)throw new TypeError('missing or invalid "host" parameter');for(var c in this._parameters={},this._headers={},this._scheme=t||a.SIP,this._user=n,this._host=r,this._port=o,s)Object.prototype.hasOwnProperty.call(s,c)&&this.setParam(c,s[c]);for(var u in l)Object.prototype.hasOwnProperty.call(l,u)&&this.setHeader(u,l[u])}return r(e,null,[{key:"parse",value:function(e){return-1!==(e=s.parse(e,"SIP_URI"))?e:void 0}}]),r(e,[{key:"setParam",value:function(e,t){e&&(this._parameters[e.toLowerCase()]=null==t?null:t.toString())}},{key:"getParam",value:function(e){if(e)return this._parameters[e.toLowerCase()]}},{key:"hasParam",value:function(e){if(e)return!!this._parameters.hasOwnProperty(e.toLowerCase())}},{key:"deleteParam",value:function(e){if(e=e.toLowerCase(),this._parameters.hasOwnProperty(e)){var t=this._parameters[e];return delete this._parameters[e],t}}},{key:"clearParams",value:function(){this._parameters={}}},{key:"setHeader",value:function(e,t){this._headers[o.headerize(e)]=Array.isArray(t)?t:[t]}},{key:"getHeader",value:function(e){if(e)return this._headers[o.headerize(e)]}},{key:"hasHeader",value:function(e){if(e)return!!this._headers.hasOwnProperty(o.headerize(e))}},{key:"deleteHeader",value:function(e){if(e=o.headerize(e),this._headers.hasOwnProperty(e)){var t=this._headers[e];return delete this._headers[e],t}}},{key:"clearHeaders",value:function(){this._headers={}}},{key:"clone",value:function(){return new e(this._scheme,this._user,this._host,this._port,JSON.parse(JSON.stringify(this._parameters)),JSON.parse(JSON.stringify(this._headers)))}},{key:"toString",value:function(){var e=[],t=this._scheme+":";for(var n in this._user&&(t+=o.escapeUser(this._user)+"@"),t+=this._host,(this._port||0===this._port)&&(t+=":"+this._port),this._parameters)Object.prototype.hasOwnProperty.call(this._parameters,n)&&(t+=";"+n,null!==this._parameters[n]&&(t+="="+this._parameters[n]));for(var r in this._headers)if(Object.prototype.hasOwnProperty.call(this._headers,r)){var i=!0,a=!1,s=void 0;try{for(var l,c=this._headers[r][Symbol.iterator]();!(i=(l=c.next()).done);i=!0){var u=l.value;e.push(r+"="+u)}}catch(e){a=!0,s=e}finally{try{!i&&c.return&&c.return()}finally{if(a)throw s}}}return e.length>0&&(t+="?"+e.join("&")),t}},{key:"toAor",value:function(e){var t=this._scheme+":";return this._user&&(t+=o.escapeUser(this._user)+"@"),t+=this._host,e&&(this._port||0===this._port)&&(t+=":"+this._port),t}},{key:"scheme",get:function(){return this._scheme},set:function(e){this._scheme=e.toLowerCase()}},{key:"user",get:function(){return this._user},set:function(e){this._user=e}},{key:"host",get:function(){return this._host},set:function(e){this._host=e.toLowerCase()}},{key:"port",get:function(){return this._port},set:function(e){this._port=0===e?e:parseInt(e,10)||null}}]),e}()},{"./Constants":2,"./Grammar":7,"./Utils":26}],26:[function(e,t,n){"use strict";var r="function"==typeof Symbol&&"symbol"==typeof Symbol.iterator?function(e){return typeof e}:function(e){return e&&"function"==typeof Symbol&&e.constructor===Symbol&&e!==Symbol.prototype?"symbol":typeof e},i=e("./Constants"),a=e("./URI"),o=e("./Grammar");n.str_utf8_length=function(e){return unescape(encodeURIComponent(e)).length};var s=n.isFunction=function(e){return void 0!==e&&"[object Function]"===Object.prototype.toString.call(e)};n.isString=function(e){return void 0!==e&&"[object String]"===Object.prototype.toString.call(e)},n.isDecimal=function(e){return!isNaN(e)&&parseFloat(e)===parseInt(e,10)},n.isEmpty=function(e){return null===e||""===e||void 0===e||Array.isArray(e)&&0===e.length||"number"==typeof e&&isNaN(e)},n.hasMethods=function(e){for(var t=arguments.length,n=Array(t>1?t-1:0),r=1;r<t;r++)n[r-1]=arguments[r];var i=!0,a=!1,o=void 0;try{for(var l,c=n[Symbol.iterator]();!(i=(l=c.next()).done);i=!0){var u=l.value;if(s(e[u]))return!1}}catch(e){a=!0,o=e}finally{try{!i&&c.return&&c.return()}finally{if(a)throw o}}return!0};var l=n.createRandomToken=function(e){var t=arguments.length>1&&void 0!==arguments[1]?arguments[1]:32,n=void 0,r="";for(n=0;n<e;n++)r+=(Math.random()*t|0).toString(t);return r};n.newTag=function(){return l(10)},n.newUUID=function(){return"xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx".replace(/[xy]/g,(function(e){var t=16*Math.random()|0;return("x"===e?t:3&t|8).toString(16)}))},n.hostType=function(e){if(e)return-1!==(e=o.parse(e,"host"))?e.host_type:void 0};var c=n.escapeUser=function(e){return encodeURIComponent(decodeURIComponent(e)).replace(/%3A/gi,":").replace(/%2B/gi,"+").replace(/%3F/gi,"?").replace(/%2F/gi,"/")};n.normalizeTarget=function(e,t){if(e){if(e instanceof a)return e;if("string"==typeof e){var n=e.split("@"),r=void 0,o=void 0;switch(n.length){case 1:if(!t)return;r=e,o=t;break;case 2:r=n[0],o=n[1];break;default:r=n.slice(0,n.length-1).join("@"),o=n[n.length-1]}r=r.replace(/^(sips?|tel):/i,""),/^[-.()]*\+?[0-9\-.()]+$/.test(r)&&(r=r.replace(/[-.()]/g,"")),e=i.SIP+":"+c(r)+"@"+o;var s;return(s=a.parse(e))?s:void 0}}else;},n.headerize=function(e){var t={"Call-Id":"Call-ID",Cseq:"CSeq","Www-Authenticate":"WWW-Authenticate"},n=e.toLowerCase().replace(/_/g,"-").split("-"),r="",i=n.length,a=void 0;for(a=0;a<i;a++)0!==a&&(r+="-"),r+=n[a].charAt(0).toUpperCase()+n[a].substring(1);return t[r]&&(r=t[r]),r},n.sipErrorCause=function(e){for(var t in i.SIP_ERROR_CAUSES)if(-1!==i.SIP_ERROR_CAUSES[t].indexOf(e))return i.causes[t];return i.causes.SIP_FAILURE_CODE},n.getRandomTestNetIP=function(){return"192.0.2."+(e=1,t=254,Math.floor(Math.random()*(t-e+1)+e));var e,t},n.calculateMD5=function(e){function t(e,t){return e<<t|e>>>32-t}function n(e,t){var n=2147483648&e,r=2147483648&t,i=1073741824&e,a=1073741824&t,o=(1073741823&e)+(1073741823&t);return i&a?2147483648^o^n^r:i|a?1073741824&o?3221225472^o^n^r:1073741824^o^n^r:o^n^r}function r(e,r,i,a,o,s,l){return e=n(e,n(n(function(e,t,n){return e&t|~e&n}(r,i,a),o),l)),n(t(e,s),r)}function i(e,r,i,a,o,s,l){return e=n(e,n(n(function(e,t,n){return e&n|t&~n}(r,i,a),o),l)),n(t(e,s),r)}function a(e,r,i,a,o,s,l){return e=n(e,n(n(function(e,t,n){return e^t^n}(r,i,a),o),l)),n(t(e,s),r)}function o(e,r,i,a,o,s,l){return e=n(e,n(n(function(e,t,n){return t^(e|~n)}(r,i,a),o),l)),n(t(e,s),r)}function s(e){var t="",n="",r=void 0;for(r=0;r<=3;r++)t+=(n="0"+(e>>>8*r&255).toString(16)).substr(n.length-2,2);return t}var l,c=void 0,u=void 0,f=void 0,d=void 0,h=void 0,p=void 0,m=void 0,g=void 0,_=void 0;for(l=function(e){for(var t=void 0,n=e.length,r=n+8,i=16*((r-r%64)/64+1),a=new Array(i-1),o=0,s=0;s<n;)o=s%4*8,a[t=(s-s%4)/4]=a[t]|e.charCodeAt(s)<<o,s++;return o=s%4*8,a[t=(s-s%4)/4]=a[t]|128<<o,a[i-2]=n<<3,a[i-1]=n>>>29,a}(e=function(e){e=e.replace(/\r\n/g,"\n");for(var t="",n=0;n<e.length;n++){var r=e.charCodeAt(n);r<128?t+=String.fromCharCode(r):r>127&&r<2048?(t+=String.fromCharCode(r>>6|192),t+=String.fromCharCode(63&r|128)):(t+=String.fromCharCode(r>>12|224),t+=String.fromCharCode(r>>6&63|128),t+=String.fromCharCode(63&r|128))}return t}(e)),p=1732584193,m=4023233417,g=2562383102,_=271733878,c=0;c<l.length;c+=16)u=p,f=m,d=g,h=_,p=r(p,m,g,_,l[c+0],7,3614090360),_=r(_,p,m,g,l[c+1],12,3905402710),g=r(g,_,p,m,l[c+2],17,606105819),m=r(m,g,_,p,l[c+3],22,3250441966),p=r(p,m,g,_,l[c+4],7,4118548399),_=r(_,p,m,g,l[c+5],12,1200080426),g=r(g,_,p,m,l[c+6],17,2821735955),m=r(m,g,_,p,l[c+7],22,4249261313),p=r(p,m,g,_,l[c+8],7,1770035416),_=r(_,p,m,g,l[c+9],12,2336552879),g=r(g,_,p,m,l[c+10],17,4294925233),m=r(m,g,_,p,l[c+11],22,2304563134),p=r(p,m,g,_,l[c+12],7,1804603682),_=r(_,p,m,g,l[c+13],12,4254626195),g=r(g,_,p,m,l[c+14],17,2792965006),p=i(p,m=r(m,g,_,p,l[c+15],22,1236535329),g,_,l[c+1],5,4129170786),_=i(_,p,m,g,l[c+6],9,3225465664),g=i(g,_,p,m,l[c+11],14,643717713),m=i(m,g,_,p,l[c+0],20,3921069994),p=i(p,m,g,_,l[c+5],5,3593408605),_=i(_,p,m,g,l[c+10],9,38016083),g=i(g,_,p,m,l[c+15],14,3634488961),m=i(m,g,_,p,l[c+4],20,3889429448),p=i(p,m,g,_,l[c+9],5,568446438),_=i(_,p,m,g,l[c+14],9,3275163606),g=i(g,_,p,m,l[c+3],14,4107603335),m=i(m,g,_,p,l[c+8],20,1163531501),p=i(p,m,g,_,l[c+13],5,2850285829),_=i(_,p,m,g,l[c+2],9,4243563512),g=i(g,_,p,m,l[c+7],14,1735328473),p=a(p,m=i(m,g,_,p,l[c+12],20,2368359562),g,_,l[c+5],4,4294588738),_=a(_,p,m,g,l[c+8],11,2272392833),g=a(g,_,p,m,l[c+11],16,1839030562),m=a(m,g,_,p,l[c+14],23,4259657740),p=a(p,m,g,_,l[c+1],4,2763975236),_=a(_,p,m,g,l[c+4],11,1272893353),g=a(g,_,p,m,l[c+7],16,4139469664),m=a(m,g,_,p,l[c+10],23,3200236656),p=a(p,m,g,_,l[c+13],4,681279174),_=a(_,p,m,g,l[c+0],11,3936430074),g=a(g,_,p,m,l[c+3],16,3572445317),m=a(m,g,_,p,l[c+6],23,76029189),p=a(p,m,g,_,l[c+9],4,3654602809),_=a(_,p,m,g,l[c+12],11,3873151461),g=a(g,_,p,m,l[c+15],16,530742520),p=o(p,m=a(m,g,_,p,l[c+2],23,3299628645),g,_,l[c+0],6,4096336452),_=o(_,p,m,g,l[c+7],10,1126891415),g=o(g,_,p,m,l[c+14],15,2878612391),m=o(m,g,_,p,l[c+5],21,4237533241),p=o(p,m,g,_,l[c+12],6,1700485571),_=o(_,p,m,g,l[c+3],10,2399980690),g=o(g,_,p,m,l[c+10],15,4293915773),m=o(m,g,_,p,l[c+1],21,2240044497),p=o(p,m,g,_,l[c+8],6,1873313359),_=o(_,p,m,g,l[c+15],10,4264355552),g=o(g,_,p,m,l[c+6],15,2734768916),m=o(m,g,_,p,l[c+13],21,1309151649),p=o(p,m,g,_,l[c+4],6,4149444226),_=o(_,p,m,g,l[c+11],10,3174756917),g=o(g,_,p,m,l[c+2],15,718787259),m=o(m,g,_,p,l[c+9],21,3951481745),p=n(p,u),m=n(m,f),g=n(g,d),_=n(_,h);return(s(p)+s(m)+s(g)+s(_)).toLowerCase()},n.closeMediaStream=function(e){if(e)try{var t=void 0;if(e.getTracks){t=e.getTracks();var n=!0,i=!1,a=void 0;try{for(var o,s=t[Symbol.iterator]();!(n=(o=s.next()).done);n=!0){o.value.stop()}}catch(e){i=!0,a=e}finally{try{!n&&s.return&&s.return()}finally{if(i)throw a}}}else{t=e.getAudioTracks();var l=!0,c=!1,u=void 0;try{for(var f,d=t[Symbol.iterator]();!(l=(f=d.next()).done);l=!0){f.value.stop()}}catch(e){c=!0,u=e}finally{try{!l&&d.return&&d.return()}finally{if(c)throw u}}t=e.getVideoTracks();var h=!0,p=!1,m=void 0;try{for(var g,_=t[Symbol.iterator]();!(h=(g=_.next()).done);h=!0){g.value.stop()}}catch(e){p=!0,m=e}finally{try{!h&&_.return&&_.return()}finally{if(p)throw m}}}}catch(t){"function"!=typeof e.stop&&"object"!==r(e.stop)||e.stop()}},n.cloneArray=function(e){return e&&e.slice()||[]}},{"./Constants":2,"./Grammar":7,"./URI":25}],27:[function(e,t,n){"use strict";var r=function(){function e(e,t){for(var n=0;n<t.length;n++){var r=t[n];r.enumerable=r.enumerable||!1,r.configurable=!0,"value"in r&&(r.writable=!0),Object.defineProperty(e,r.key,r)}}return function(t,n,r){return n&&e(t.prototype,n),r&&e(t,r),t}}();var i=e("./Grammar"),a=e("debug")("JsSIP:WebSocketInterface"),o=e("debug")("JsSIP:ERROR:WebSocketInterface");o.log=console.warn.bind(console),t.exports=function(){function e(t){!function(e,t){if(!(e instanceof t))throw new TypeError("Cannot call a class as a function")}(this,e),a('new() [url:"%s"]',t),this._url=t,this._sip_uri=null,this._via_transport=null,this._ws=null;var n=i.parse(t,"absoluteURI");if(-1===n)throw o("invalid WebSocket URI: "+t),new TypeError("Invalid argument: "+t);if("wss"!==n.scheme&&"ws"!==n.scheme)throw o("invalid WebSocket URI scheme: "+n.scheme),new TypeError("Invalid argument: "+t);this._sip_uri="sip:"+n.host+(n.port?":"+n.port:"")+";transport=ws",this._via_transport=n.scheme.toUpperCase()}return r(e,[{key:"connect",value:function(){if(a("connect()"),this.isConnected())a("WebSocket "+this._url+" is already connected");else if(this.isConnecting())a("WebSocket "+this._url+" is connecting");else{this._ws&&this.disconnect(),a("connecting to WebSocket "+this._url);try{this._ws=new WebSocket(this._url,"sip"),this._ws.binaryType="arraybuffer",this._ws.onopen=this._onOpen.bind(this),this._ws.onclose=this._onClose.bind(this),this._ws.onmessage=this._onMessage.bind(this),this._ws.onerror=this._onError.bind(this)}catch(e){this._onError(e)}}}},{key:"disconnect",value:function(){a("disconnect()"),this._ws&&(this._ws.onopen=function(){},this._ws.onclose=function(){},this._ws.onmessage=function(){},this._ws.onerror=function(){},this._ws.close(),this._ws=null)}},{key:"send",value:function(e){return a("send()"),this.isConnected()?(this._ws.send(e),!0):(o("unable to send message, WebSocket is not open"),!1)}},{key:"isConnected",value:function(){return this._ws&&this._ws.readyState===this._ws.OPEN}},{key:"isConnecting",value:function(){return this._ws&&this._ws.readyState===this._ws.CONNECTING}},{key:"_onOpen",value:function(){a("WebSocket "+this._url+" connected"),this.onconnect()}},{key:"_onClose",value:function(e){var t=e.wasClean,n=e.code,r=e.reason;a("WebSocket "+this._url+" closed"),!1===t&&a("WebSocket abrupt disconnection");var i={socket:this,error:!t,code:n,reason:r};this.ondisconnect(i)}},{key:"_onMessage",value:function(e){var t=e.data;a("received WebSocket message"),this.ondata(t)}},{key:"_onError",value:function(e){o("WebSocket "+this._url+" error: "+e)}},{key:"via_transport",get:function(){return this._via_transport},set:function(e){this._via_transport=e.toUpperCase()}},{key:"sip_uri",get:function(){return this._sip_uri}},{key:"url",get:function(){return this._url}}]),e}()},{"./Grammar":7,debug:29}],28:[function(e,t,n){"use strict";var r=e("./Constants"),i=e("./SIPMessage"),a=e("./Utils"),o=e("debug")("JsSIP:sanityCheck"),s=[function(){var e=!0,t=!1,n=void 0;try{for(var r,i=["from","to","call_id","cseq","via"][Symbol.iterator]();!(e=(r=i.next()).done);e=!0){var a=r.value;if(!u.hasHeader(a))return o("missing mandatory header field : "+a+", dropping the response"),!1}}catch(e){t=!0,n=e}finally{try{!e&&i.return&&i.return()}finally{if(t)throw n}}}],l=[function(){if("sip"!==u.s("to").uri.scheme)return h(416),!1},function(){if(!u.to_tag&&u.call_id.substr(0,5)===f.configuration.jssip_id)return h(482),!1},function(){var e=a.str_utf8_length(u.body),t=u.getHeader("content-length");if(e<t)return h(400),!1},function(){var e=u.from_tag,t=u.call_id,n=u.cseq,i=void 0;if(u.to_tag)return;if(u.method===r.INVITE){if(f._transactions.ist[u.via_branch])return!1;for(var a in f._transactions.ist)if(Object.prototype.hasOwnProperty.call(f._transactions.ist,a)&&(i=f._transactions.ist[a]).request.from_tag===e&&i.request.call_id===t&&i.request.cseq===n)return h(482),!1}else{if(f._transactions.nist[u.via_branch])return!1;for(var o in f._transactions.nist)if(Object.prototype.hasOwnProperty.call(f._transactions.nist,o)&&(i=f._transactions.nist[o]).request.from_tag===e&&i.request.call_id===t&&i.request.cseq===n)return h(482),!1}}],c=[function(){if(u.getHeaders("via").length>1)return o("more than one Via header field present in the response, dropping the response"),!1},function(){var e=a.str_utf8_length(u.body),t=u.getHeader("content-length");if(e<t)return o("message body length is lower than the value in Content-Length header field, dropping the response"),!1}],u=void 0,f=void 0,d=void 0;function h(e){var t=u.getHeaders("via"),n=void 0,i="SIP/2.0 "+e+" "+r.REASON_PHRASE[e]+"\r\n",o=!0,s=!1,l=void 0;try{for(var c,f=t[Symbol.iterator]();!(o=(c=f.next()).done);o=!0){i+="Via: "+c.value+"\r\n"}}catch(e){s=!0,l=e}finally{try{!o&&f.return&&f.return()}finally{if(s)throw l}}n=u.getHeader("To"),u.to_tag||(n+=";tag="+a.newTag()),i+="To: "+n+"\r\n",i+="From: "+u.getHeader("From")+"\r\n",i+="Call-ID: "+u.call_id+"\r\n",i+="CSeq: "+u.cseq+" "+u.method+"\r\n",i+="\r\n",d.send(i)}t.exports=function(e,t,n){u=e,f=t,d=n;var r=!0,a=!1,o=void 0;try{for(var h,p=s[Symbol.iterator]();!(r=(h=p.next()).done);r=!0){if(!1===(0,h.value)())return!1}}catch(e){a=!0,o=e}finally{try{!r&&p.return&&p.return()}finally{if(a)throw o}}if(u instanceof i.IncomingRequest){var m=!0,g=!1,_=void 0;try{for(var b,v=l[Symbol.iterator]();!(m=(b=v.next()).done);m=!0){if(!1===(0,b.value)())return!1}}catch(e){g=!0,_=e}finally{try{!m&&v.return&&v.return()}finally{if(g)throw _}}}else if(u instanceof i.IncomingResponse){var y=!0,w=!1,C=void 0;try{for(var A,S=c[Symbol.iterator]();!(y=(A=S.next()).done);y=!0){if(!1===(0,A.value)())return!1}}catch(e){w=!0,C=e}finally{try{!y&&S.return&&S.return()}finally{if(w)throw C}}}return!0}},{"./Constants":2,"./SIPMessage":19,"./Utils":26,debug:29}],29:[function(e,t,n){(function(r){function i(){var e;try{e=n.storage.debug}catch(e){}return!e&&void 0!==r&&"env"in r&&(e=r.env.DEBUG),e}(n=t.exports=e("./debug")).log=function(){return"object"==typeof console&&console.log&&Function.prototype.apply.call(console.log,console,arguments)},n.formatArgs=function(e){var t=this.useColors;if(e[0]=(t?"%c":"")+this.namespace+(t?" %c":" ")+e[0]+(t?"%c ":" ")+"+"+n.humanize(this.diff),!t)return;var r="color: "+this.color;e.splice(1,0,r,"color: inherit");var i=0,a=0;e[0].replace(/%[a-zA-Z%]/g,(function(e){"%%"!==e&&(i++,"%c"===e&&(a=i))})),e.splice(a,0,r)},n.save=function(e){try{null==e?n.storage.removeItem("debug"):n.storage.debug=e}catch(e){}},n.load=i,n.useColors=function(){if("undefined"!=typeof window&&window.process&&"renderer"===window.process.type)return!0;if("undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/(edge|trident)\/(\d+)/))return!1;return"undefined"!=typeof document&&document.documentElement&&document.documentElement.style&&document.documentElement.style.WebkitAppearance||"undefined"!=typeof window&&window.console&&(window.console.firebug||window.console.exception&&window.console.table)||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/firefox\/(\d+)/)&&parseInt(RegExp.$1,10)>=31||"undefined"!=typeof navigator&&navigator.userAgent&&navigator.userAgent.toLowerCase().match(/applewebkit\/(\d+)/)},n.storage="undefined"!=typeof chrome&&void 0!==chrome.storage?chrome.storage.local:function(){try{return window.localStorage}catch(e){}}(),n.colors=["#0000CC","#0000FF","#0033CC","#0033FF","#0066CC","#0066FF","#0099CC","#0099FF","#00CC00","#00CC33","#00CC66","#00CC99","#00CCCC","#00CCFF","#3300CC","#3300FF","#3333CC","#3333FF","#3366CC","#3366FF","#3399CC","#3399FF","#33CC00","#33CC33","#33CC66","#33CC99","#33CCCC","#33CCFF","#6600CC","#6600FF","#6633CC","#6633FF","#66CC00","#66CC33","#9900CC","#9900FF","#9933CC","#9933FF","#99CC00","#99CC33","#CC0000","#CC0033","#CC0066","#CC0099","#CC00CC","#CC00FF","#CC3300","#CC3333","#CC3366","#CC3399","#CC33CC","#CC33FF","#CC6600","#CC6633","#CC9900","#CC9933","#CCCC00","#CCCC33","#FF0000","#FF0033","#FF0066","#FF0099","#FF00CC","#FF00FF","#FF3300","#FF3333","#FF3366","#FF3399","#FF33CC","#FF33FF","#FF6600","#FF6633","#FF9900","#FF9933","#FFCC00","#FFCC33"],n.formatters.j=function(e){try{return JSON.stringify(e)}catch(e){return"[UnexpectedJSONParseError]: "+e.message}},n.enable(i())}).call(this,e("_process"))},{"./debug":30,_process:33}],30:[function(e,t,n){function r(e){var t;function r(){if(r.enabled){var e=r,i=+new Date,a=i-(t||i);e.diff=a,e.prev=t,e.curr=i,t=i;for(var o=new Array(arguments.length),s=0;s<o.length;s++)o[s]=arguments[s];o[0]=n.coerce(o[0]),"string"!=typeof o[0]&&o.unshift("%O");var l=0;o[0]=o[0].replace(/%([a-zA-Z%])/g,(function(t,r){if("%%"===t)return t;l++;var i=n.formatters[r];if("function"==typeof i){var a=o[l];t=i.call(e,a),o.splice(l,1),l--}return t})),n.formatArgs.call(e,o);var c=r.log||n.log||console.log.bind(console);c.apply(e,o)}}return r.namespace=e,r.enabled=n.enabled(e),r.useColors=n.useColors(),r.color=function(e){var t,r=0;for(t in e)r=(r<<5)-r+e.charCodeAt(t),r|=0;return n.colors[Math.abs(r)%n.colors.length]}(e),r.destroy=i,"function"==typeof n.init&&n.init(r),n.instances.push(r),r}function i(){var e=n.instances.indexOf(this);return-1!==e&&(n.instances.splice(e,1),!0)}(n=t.exports=r.debug=r.default=r).coerce=function(e){return e instanceof Error?e.stack||e.message:e},n.disable=function(){n.enable("")},n.enable=function(e){var t;n.save(e),n.names=[],n.skips=[];var r=("string"==typeof e?e:"").split(/[\s,]+/),i=r.length;for(t=0;t<i;t++)r[t]&&("-"===(e=r[t].replace(/\*/g,".*?"))[0]?n.skips.push(new RegExp("^"+e.substr(1)+"$")):n.names.push(new RegExp("^"+e+"$")));for(t=0;t<n.instances.length;t++){var a=n.instances[t];a.enabled=n.enabled(a.namespace)}},n.enabled=function(e){if("*"===e[e.length-1])return!0;var t,r;for(t=0,r=n.skips.length;t<r;t++)if(n.skips[t].test(e))return!1;for(t=0,r=n.names.length;t<r;t++)if(n.names[t].test(e))return!0;return!1},n.humanize=e("ms"),n.instances=[],n.names=[],n.skips=[],n.formatters={}},{ms:32}],31:[function(e,t,n){function r(){this._events=this._events||{},this._maxListeners=this._maxListeners||void 0}function i(e){return"function"==typeof e}function a(e){return"object"==typeof e&&null!==e}function o(e){return void 0===e}t.exports=r,r.EventEmitter=r,r.prototype._events=void 0,r.prototype._maxListeners=void 0,r.defaultMaxListeners=10,r.prototype.setMaxListeners=function(e){if("number"!=typeof e||e<0||isNaN(e))throw TypeError("n must be a positive number");return this._maxListeners=e,this},r.prototype.emit=function(e){var t,n,r,s,l,c;if(this._events||(this._events={}),"error"===e&&(!this._events.error||a(this._events.error)&&!this._events.error.length)){if((t=arguments[1])instanceof Error)throw t;var u=new Error('Uncaught, unspecified "error" event. ('+t+")");throw u.context=t,u}if(o(n=this._events[e]))return!1;if(i(n))switch(arguments.length){case 1:n.call(this);break;case 2:n.call(this,arguments[1]);break;case 3:n.call(this,arguments[1],arguments[2]);break;default:s=Array.prototype.slice.call(arguments,1),n.apply(this,s)}else if(a(n))for(s=Array.prototype.slice.call(arguments,1),r=(c=n.slice()).length,l=0;l<r;l++)c[l].apply(this,s);return!0},r.prototype.addListener=function(e,t){var n;if(!i(t))throw TypeError("listener must be a function");return this._events||(this._events={}),this._events.newListener&&this.emit("newListener",e,i(t.listener)?t.listener:t),this._events[e]?a(this._events[e])?this._events[e].push(t):this._events[e]=[this._events[e],t]:this._events[e]=t,a(this._events[e])&&!this._events[e].warned&&(n=o(this._maxListeners)?r.defaultMaxListeners:this._maxListeners)&&n>0&&this._events[e].length>n&&(this._events[e].warned=!0,console.error("(node) warning: possible EventEmitter memory leak detected. %d listeners added. Use emitter.setMaxListeners() to increase limit.",this._events[e].length),"function"==typeof console.trace&&console.trace()),this},r.prototype.on=r.prototype.addListener,r.prototype.once=function(e,t){if(!i(t))throw TypeError("listener must be a function");var n=!1;function r(){this.removeListener(e,r),n||(n=!0,t.apply(this,arguments))}return r.listener=t,this.on(e,r),this},r.prototype.removeListener=function(e,t){var n,r,o,s;if(!i(t))throw TypeError("listener must be a function");if(!this._events||!this._events[e])return this;if(o=(n=this._events[e]).length,r=-1,n===t||i(n.listener)&&n.listener===t)delete this._events[e],this._events.removeListener&&this.emit("removeListener",e,t);else if(a(n)){for(s=o;s-- >0;)if(n[s]===t||n[s].listener&&n[s].listener===t){r=s;break}if(r<0)return this;1===n.length?(n.length=0,delete this._events[e]):n.splice(r,1),this._events.removeListener&&this.emit("removeListener",e,t)}return this},r.prototype.removeAllListeners=function(e){var t,n;if(!this._events)return this;if(!this._events.removeListener)return 0===arguments.length?this._events={}:this._events[e]&&delete this._events[e],this;if(0===arguments.length){for(t in this._events)"removeListener"!==t&&this.removeAllListeners(t);return this.removeAllListeners("removeListener"),this._events={},this}if(i(n=this._events[e]))this.removeListener(e,n);else if(n)for(;n.length;)this.removeListener(e,n[n.length-1]);return delete this._events[e],this},r.prototype.listeners=function(e){return this._events&&this._events[e]?i(this._events[e])?[this._events[e]]:this._events[e].slice():[]},r.prototype.listenerCount=function(e){if(this._events){var t=this._events[e];if(i(t))return 1;if(t)return t.length}return 0},r.listenerCount=function(e,t){return e.listenerCount(t)}},{}],32:[function(e,t,n){var r=1e3,i=6e4,a=60*i,o=24*a;function s(e,t,n){if(!(e<t))return e<1.5*t?Math.floor(e/t)+" "+n:Math.ceil(e/t)+" "+n+"s"}t.exports=function(e,t){t=t||{};var n,l=typeof e;if("string"===l&&e.length>0)return function(e){if((e=String(e)).length>100)return;var t=/^((?:\d+)?\.?\d+) *(milliseconds?|msecs?|ms|seconds?|secs?|s|minutes?|mins?|m|hours?|hrs?|h|days?|d|years?|yrs?|y)?$/i.exec(e);if(!t)return;var n=parseFloat(t[1]);switch((t[2]||"ms").toLowerCase()){case"years":case"year":case"yrs":case"yr":case"y":return 315576e5*n;case"days":case"day":case"d":return n*o;case"hours":case"hour":case"hrs":case"hr":case"h":return n*a;case"minutes":case"minute":case"mins":case"min":case"m":return n*i;case"seconds":case"second":case"secs":case"sec":case"s":return n*r;case"milliseconds":case"millisecond":case"msecs":case"msec":case"ms":return n;default:return}}(e);if("number"===l&&!1===isNaN(e))return t.long?s(n=e,o,"day")||s(n,a,"hour")||s(n,i,"minute")||s(n,r,"second")||n+" ms":function(e){if(e>=o)return Math.round(e/o)+"d";if(e>=a)return Math.round(e/a)+"h";if(e>=i)return Math.round(e/i)+"m";if(e>=r)return Math.round(e/r)+"s";return e+"ms"}(e);throw new Error("val is not a non-empty string or a valid number. val="+JSON.stringify(e))}},{}],33:[function(e,t,n){var r,i,a=t.exports={};function o(){throw new Error("setTimeout has not been defined")}function s(){throw new Error("clearTimeout has not been defined")}function l(e){if(r===setTimeout)return setTimeout(e,0);if((r===o||!r)&&setTimeout)return r=setTimeout,setTimeout(e,0);try{return r(e,0)}catch(t){try{return r.call(null,e,0)}catch(t){return r.call(this,e,0)}}}!function(){try{r="function"==typeof setTimeout?setTimeout:o}catch(e){r=o}try{i="function"==typeof clearTimeout?clearTimeout:s}catch(e){i=s}}();var c,u=[],f=!1,d=-1;function h(){f&&c&&(f=!1,c.length?u=c.concat(u):d=-1,u.length&&p())}function p(){if(!f){var e=l(h);f=!0;for(var t=u.length;t;){for(c=u,u=[];++d<t;)c&&c[d].run();d=-1,t=u.length}c=null,f=!1,function(e){if(i===clearTimeout)return clearTimeout(e);if((i===s||!i)&&clearTimeout)return i=clearTimeout,clearTimeout(e);try{i(e)}catch(t){try{return i.call(null,e)}catch(t){return i.call(this,e)}}}(e)}}function m(e,t){this.fun=e,this.array=t}function g(){}a.nextTick=function(e){var t=new Array(arguments.length-1);if(arguments.length>1)for(var n=1;n<arguments.length;n++)t[n-1]=arguments[n];u.push(new m(e,t)),1!==u.length||f||l(p)},m.prototype.run=function(){this.fun.apply(null,this.array)},a.title="browser",a.browser=!0,a.env={},a.argv=[],a.version="",a.versions={},a.on=g,a.addListener=g,a.once=g,a.off=g,a.removeListener=g,a.removeAllListeners=g,a.emit=g,a.prependListener=g,a.prependOnceListener=g,a.listeners=function(e){return[]},a.binding=function(e){throw new Error("process.binding is not supported")},a.cwd=function(){return"/"},a.chdir=function(e){throw new Error("process.chdir is not supported")},a.umask=function(){return 0}},{}],34:[function(e,t,n){"use strict";var r=e("sdp");function i(e,t,n,i,a){var o=r.writeRtpDescription(e.kind,t);if(o+=r.writeIceParameters(e.iceGatherer.getLocalParameters()),o+=r.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":a||"active"),o+="a=mid:"+e.mid+"\r\n",e.rtpSender&&e.rtpReceiver?o+="a=sendrecv\r\n":e.rtpSender?o+="a=sendonly\r\n":e.rtpReceiver?o+="a=recvonly\r\n":o+="a=inactive\r\n",e.rtpSender){var s="msid:"+(i?i.id:"-")+" "+e.rtpSender.track.id+"\r\n";o+="a="+s,o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+s,e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+s,o+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return o+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(o+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+r.localCName+"\r\n"),o}function a(e,t){var n={codecs:[],headerExtensions:[],fecMechanisms:[]},r=function(e,t){e=parseInt(e,10);for(var n=0;n<t.length;n++)if(t[n].payloadType===e||t[n].preferredPayloadType===e)return t[n]},i=function(e,t,n,i){var a=r(e.parameters.apt,n),o=r(t.parameters.apt,i);return a&&o&&a.name.toLowerCase()===o.name.toLowerCase()};return e.codecs.forEach((function(r){for(var a=0;a<t.codecs.length;a++){var o=t.codecs[a];if(r.name.toLowerCase()===o.name.toLowerCase()&&r.clockRate===o.clockRate){if("rtx"===r.name.toLowerCase()&&r.parameters&&o.parameters.apt&&!i(r,o,e.codecs,t.codecs))continue;(o=JSON.parse(JSON.stringify(o))).numChannels=Math.min(r.numChannels,o.numChannels),n.codecs.push(o),o.rtcpFeedback=o.rtcpFeedback.filter((function(e){for(var t=0;t<r.rtcpFeedback.length;t++)if(r.rtcpFeedback[t].type===e.type&&r.rtcpFeedback[t].parameter===e.parameter)return!0;return!1}));break}}})),e.headerExtensions.forEach((function(e){for(var r=0;r<t.headerExtensions.length;r++){var i=t.headerExtensions[r];if(e.uri===i.uri){n.headerExtensions.push(i);break}}})),n}function o(e,t,n){return-1!=={offer:{setLocalDescription:["stable","have-local-offer"],setRemoteDescription:["stable","have-remote-offer"]},answer:{setLocalDescription:["have-remote-offer","have-local-pranswer"],setRemoteDescription:["have-local-offer","have-remote-pranswer"]}}[t][e].indexOf(n)}function s(e,t){var n=e.getRemoteCandidates().find((function(e){return t.foundation===e.foundation&&t.ip===e.ip&&t.port===e.port&&t.priority===e.priority&&t.protocol===e.protocol&&t.type===e.type}));return n||e.addRemoteCandidate(t),!n}function l(e,t){var n=new Error(t);return n.name=e,n}t.exports=function(e,t){function n(t,n){n.addTrack(t),n.dispatchEvent(new e.MediaStreamTrackEvent("addtrack",{track:t}))}function c(t,n,r,i){var a=new Event("track");a.track=n,a.receiver=r,a.transceiver={receiver:r},a.streams=i,e.setTimeout((function(){t._dispatchEvent("track",a)}))}var u=function(n){var i=this,a=document.createDocumentFragment();if(["addEventListener","removeEventListener","dispatchEvent"].forEach((function(e){i[e]=a[e].bind(a)})),this.canTrickleIceCandidates=null,this.needNegotiation=!1,this.localStreams=[],this.remoteStreams=[],this.localDescription=null,this.remoteDescription=null,this.signalingState="stable",this.iceConnectionState="new",this.iceGatheringState="new",n=JSON.parse(JSON.stringify(n||{})),this.usingBundle="max-bundle"===n.bundlePolicy,"negotiate"===n.rtcpMuxPolicy)throw l("NotSupportedError","rtcpMuxPolicy 'negotiate' is not supported");switch(n.rtcpMuxPolicy||(n.rtcpMuxPolicy="require"),n.iceTransportPolicy){case"all":case"relay":break;default:n.iceTransportPolicy="all"}switch(n.bundlePolicy){case"balanced":case"max-compat":case"max-bundle":break;default:n.bundlePolicy="balanced"}if(n.iceServers=function(e,t){var n=!1;return(e=JSON.parse(JSON.stringify(e))).filter((function(e){if(e&&(e.urls||e.url)){var r=e.urls||e.url;e.url&&!e.urls&&console.warn("RTCIceServer.url is deprecated! Use urls instead.");var i="string"==typeof r;return i&&(r=[r]),r=r.filter((function(e){return 0===e.indexOf("turn:")&&-1!==e.indexOf("transport=udp")&&-1===e.indexOf("turn:[")&&!n?(n=!0,!0):0===e.indexOf("stun:")&&t>=14393&&-1===e.indexOf("?transport=udp")})),delete e.url,e.urls=i?r[0]:r,!!r.length}}))}(n.iceServers||[],t),this._iceGatherers=[],n.iceCandidatePoolSize)for(var o=n.iceCandidatePoolSize;o>0;o--)this._iceGatherers.push(new e.RTCIceGatherer({iceServers:n.iceServers,gatherPolicy:n.iceTransportPolicy}));else n.iceCandidatePoolSize=0;this._config=n,this.transceivers=[],this._sdpSessionId=r.generateSessionId(),this._sdpSessionVersion=0,this._dtlsRole=void 0,this._isClosed=!1};u.prototype.onicecandidate=null,u.prototype.onaddstream=null,u.prototype.ontrack=null,u.prototype.onremovestream=null,u.prototype.onsignalingstatechange=null,u.prototype.oniceconnectionstatechange=null,u.prototype.onicegatheringstatechange=null,u.prototype.onnegotiationneeded=null,u.prototype.ondatachannel=null,u.prototype._dispatchEvent=function(e,t){this._isClosed||(this.dispatchEvent(t),"function"==typeof this["on"+e]&&this["on"+e](t))},u.prototype._emitGatheringStateChange=function(){var e=new Event("icegatheringstatechange");this._dispatchEvent("icegatheringstatechange",e)},u.prototype.getConfiguration=function(){return this._config},u.prototype.getLocalStreams=function(){return this.localStreams},u.prototype.getRemoteStreams=function(){return this.remoteStreams},u.prototype._createTransceiver=function(e){var t=this.transceivers.length>0,n={track:null,iceGatherer:null,iceTransport:null,dtlsTransport:null,localCapabilities:null,remoteCapabilities:null,rtpSender:null,rtpReceiver:null,kind:e,mid:null,sendEncodingParameters:null,recvEncodingParameters:null,stream:null,associatedRemoteMediaStreams:[],wantReceive:!0};if(this.usingBundle&&t)n.iceTransport=this.transceivers[0].iceTransport,n.dtlsTransport=this.transceivers[0].dtlsTransport;else{var r=this._createIceAndDtlsTransports();n.iceTransport=r.iceTransport,n.dtlsTransport=r.dtlsTransport}return this.transceivers.push(n),n},u.prototype.addTrack=function(t,n){if(this._isClosed)throw l("InvalidStateError","Attempted to call addTrack on a closed peerconnection.");var r;if(this.transceivers.find((function(e){return e.track===t})))throw l("InvalidAccessError","Track already exists.");for(var i=0;i<this.transceivers.length;i++)this.transceivers[i].track||this.transceivers[i].kind!==t.kind||(r=this.transceivers[i]);return r||(r=this._createTransceiver(t.kind)),this._maybeFireNegotiationNeeded(),-1===this.localStreams.indexOf(n)&&this.localStreams.push(n),r.track=t,r.stream=n,r.rtpSender=new e.RTCRtpSender(t,r.dtlsTransport),r.rtpSender},u.prototype.addStream=function(e){var n=this;if(t>=15025)e.getTracks().forEach((function(t){n.addTrack(t,e)}));else{var r=e.clone();e.getTracks().forEach((function(e,t){var n=r.getTracks()[t];e.addEventListener("enabled",(function(e){n.enabled=e.enabled}))})),r.getTracks().forEach((function(e){n.addTrack(e,r)}))}},u.prototype.removeTrack=function(t){if(this._isClosed)throw l("InvalidStateError","Attempted to call removeTrack on a closed peerconnection.");if(!(t instanceof e.RTCRtpSender))throw new TypeError("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.");var n=this.transceivers.find((function(e){return e.rtpSender===t}));if(!n)throw l("InvalidAccessError","Sender was not created by this connection.");var r=n.stream;n.rtpSender.stop(),n.rtpSender=null,n.track=null,n.stream=null,-1===this.transceivers.map((function(e){return e.stream})).indexOf(r)&&this.localStreams.indexOf(r)>-1&&this.localStreams.splice(this.localStreams.indexOf(r),1),this._maybeFireNegotiationNeeded()},u.prototype.removeStream=function(e){var t=this;e.getTracks().forEach((function(e){var n=t.getSenders().find((function(t){return t.track===e}));n&&t.removeTrack(n)}))},u.prototype.getSenders=function(){return this.transceivers.filter((function(e){return!!e.rtpSender})).map((function(e){return e.rtpSender}))},u.prototype.getReceivers=function(){return this.transceivers.filter((function(e){return!!e.rtpReceiver})).map((function(e){return e.rtpReceiver}))},u.prototype._createIceGatherer=function(t,n){var r=this;if(n&&t>0)return this.transceivers[0].iceGatherer;if(this._iceGatherers.length)return this._iceGatherers.shift();var i=new e.RTCIceGatherer({iceServers:this._config.iceServers,gatherPolicy:this._config.iceTransportPolicy});return Object.defineProperty(i,"state",{value:"new",writable:!0}),this.transceivers[t].bufferedCandidateEvents=[],this.transceivers[t].bufferCandidates=function(e){var n=!e.candidate||0===Object.keys(e.candidate).length;i.state=n?"completed":"gathering",null!==r.transceivers[t].bufferedCandidateEvents&&r.transceivers[t].bufferedCandidateEvents.push(e)},i.addEventListener("localcandidate",this.transceivers[t].bufferCandidates),i},u.prototype._gather=function(t,n){var i=this,a=this.transceivers[n].iceGatherer;if(!a.onlocalcandidate){var o=this.transceivers[n].bufferedCandidateEvents;this.transceivers[n].bufferedCandidateEvents=null,a.removeEventListener("localcandidate",this.transceivers[n].bufferCandidates),a.onlocalcandidate=function(e){if(!(i.usingBundle&&n>0)){var o=new Event("icecandidate");o.candidate={sdpMid:t,sdpMLineIndex:n};var s=e.candidate,l=!s||0===Object.keys(s).length;if(l)"new"!==a.state&&"gathering"!==a.state||(a.state="completed");else{"new"===a.state&&(a.state="gathering"),s.component=1;var c=r.writeCandidate(s);o.candidate=Object.assign(o.candidate,r.parseCandidate(c)),o.candidate.candidate=c}var u=r.splitSections(i.localDescription.sdp);u[o.candidate.sdpMLineIndex+1]+=l?"a=end-of-candidates\r\n":"a="+o.candidate.candidate+"\r\n",i.localDescription.sdp=u.join("");var f=i.transceivers.every((function(e){return e.iceGatherer&&"completed"===e.iceGatherer.state}));"gathering"!==i.iceGatheringState&&(i.iceGatheringState="gathering",i._emitGatheringStateChange()),l||i._dispatchEvent("icecandidate",o),f&&(i._dispatchEvent("icecandidate",new Event("icecandidate")),i.iceGatheringState="complete",i._emitGatheringStateChange())}},e.setTimeout((function(){o.forEach((function(e){a.onlocalcandidate(e)}))}),0)}},u.prototype._createIceAndDtlsTransports=function(){var t=this,n=new e.RTCIceTransport(null);n.onicestatechange=function(){t._updateConnectionState()};var r=new e.RTCDtlsTransport(n);return r.ondtlsstatechange=function(){t._updateConnectionState()},r.onerror=function(){Object.defineProperty(r,"state",{value:"failed",writable:!0}),t._updateConnectionState()},{iceTransport:n,dtlsTransport:r}},u.prototype._disposeIceAndDtlsTransports=function(e){var t=this.transceivers[e].iceGatherer;t&&(delete t.onlocalcandidate,delete this.transceivers[e].iceGatherer);var n=this.transceivers[e].iceTransport;n&&(delete n.onicestatechange,delete this.transceivers[e].iceTransport);var r=this.transceivers[e].dtlsTransport;r&&(delete r.ondtlsstatechange,delete r.onerror,delete this.transceivers[e].dtlsTransport)},u.prototype._transceive=function(e,n,i){var o=a(e.localCapabilities,e.remoteCapabilities);n&&e.rtpSender&&(o.encodings=e.sendEncodingParameters,o.rtcp={cname:r.localCName,compound:e.rtcpParameters.compound},e.recvEncodingParameters.length&&(o.rtcp.ssrc=e.recvEncodingParameters[0].ssrc),e.rtpSender.send(o)),i&&e.rtpReceiver&&o.codecs.length>0&&("video"===e.kind&&e.recvEncodingParameters&&t<15019&&e.recvEncodingParameters.forEach((function(e){delete e.rtx})),e.recvEncodingParameters.length&&(o.encodings=e.recvEncodingParameters),o.rtcp={compound:e.rtcpParameters.compound},e.rtcpParameters.cname&&(o.rtcp.cname=e.rtcpParameters.cname),e.sendEncodingParameters.length&&(o.rtcp.ssrc=e.sendEncodingParameters[0].ssrc),e.rtpReceiver.receive(o))},u.prototype.setLocalDescription=function(e){var t,n,i=this;if(-1===["offer","answer"].indexOf(e.type))return Promise.reject(l("TypeError",'Unsupported type "'+e.type+'"'));if(!o("setLocalDescription",e.type,i.signalingState)||i._isClosed)return Promise.reject(l("InvalidStateError","Can not set local "+e.type+" in state "+i.signalingState));if("offer"===e.type)t=r.splitSections(e.sdp),n=t.shift(),t.forEach((function(e,t){var n=r.parseRtpParameters(e);i.transceivers[t].localCapabilities=n})),i.transceivers.forEach((function(e,t){i._gather(e.mid,t)}));else if("answer"===e.type){t=r.splitSections(i.remoteDescription.sdp),n=t.shift();var s=r.matchPrefix(n,"a=ice-lite").length>0;t.forEach((function(e,t){var o=i.transceivers[t],l=o.iceGatherer,c=o.iceTransport,u=o.dtlsTransport,f=o.localCapabilities,d=o.remoteCapabilities;if(!(r.isRejected(e)&&0===r.matchPrefix(e,"a=bundle-only").length)&&!o.isDatachannel){var h=r.getIceParameters(e,n),p=r.getDtlsParameters(e,n);s&&(p.role="server"),i.usingBundle&&0!==t||(i._gather(o.mid,t),"new"===c.state&&c.start(l,h,s?"controlling":"controlled"),"new"===u.state&&u.start(p));var m=a(f,d);i._transceive(o,m.codecs.length>0,!1)}}))}return i.localDescription={type:e.type,sdp:e.sdp},"offer"===e.type?i._updateSignalingState("have-local-offer"):i._updateSignalingState("stable"),Promise.resolve()},u.prototype.setRemoteDescription=function(i){var a=this;if(-1===["offer","answer"].indexOf(i.type))return Promise.reject(l("TypeError",'Unsupported type "'+i.type+'"'));if(!o("setRemoteDescription",i.type,a.signalingState)||a._isClosed)return Promise.reject(l("InvalidStateError","Can not set remote "+i.type+" in state "+a.signalingState));var u={};a.remoteStreams.forEach((function(e){u[e.id]=e}));var f=[],d=r.splitSections(i.sdp),h=d.shift(),p=r.matchPrefix(h,"a=ice-lite").length>0,m=r.matchPrefix(h,"a=group:BUNDLE ").length>0;a.usingBundle=m;var g=r.matchPrefix(h,"a=ice-options:")[0];return a.canTrickleIceCandidates=!!g&&g.substr(14).split(" ").indexOf("trickle")>=0,d.forEach((function(o,l){var c=r.splitLines(o),d=r.getKind(o),g=r.isRejected(o)&&0===r.matchPrefix(o,"a=bundle-only").length,_=c[0].substr(2).split(" ")[2],b=r.getDirection(o,h),v=r.parseMsid(o),y=r.getMid(o)||r.generateIdentifier();if("application"!==d||"DTLS/SCTP"!==_){var w,C,A,S,x,T,k,E,D,I,P,M=r.parseRtpParameters(o);g||(I=r.getIceParameters(o,h),(P=r.getDtlsParameters(o,h)).role="client"),k=r.parseRtpEncodingParameters(o);var $=r.parseRtcpParameters(o),O=r.matchPrefix(o,"a=end-of-candidates",h).length>0,R=r.matchPrefix(o,"a=candidate:").map((function(e){return r.parseCandidate(e)})).filter((function(e){return 1===e.component}));if(("offer"===i.type||"answer"===i.type)&&!g&&m&&l>0&&a.transceivers[l]&&(a._disposeIceAndDtlsTransports(l),a.transceivers[l].iceGatherer=a.transceivers[0].iceGatherer,a.transceivers[l].iceTransport=a.transceivers[0].iceTransport,a.transceivers[l].dtlsTransport=a.transceivers[0].dtlsTransport,a.transceivers[l].rtpSender&&a.transceivers[l].rtpSender.setTransport(a.transceivers[0].dtlsTransport),a.transceivers[l].rtpReceiver&&a.transceivers[l].rtpReceiver.setTransport(a.transceivers[0].dtlsTransport)),"offer"!==i.type||g)"answer"!==i.type||g||(C=(w=a.transceivers[l]).iceGatherer,A=w.iceTransport,S=w.dtlsTransport,x=w.rtpReceiver,T=w.sendEncodingParameters,E=w.localCapabilities,a.transceivers[l].recvEncodingParameters=k,a.transceivers[l].remoteCapabilities=M,a.transceivers[l].rtcpParameters=$,R.length&&"new"===A.state&&(!p&&!O||m&&0!==l?R.forEach((function(e){s(w.iceTransport,e)})):A.setRemoteCandidates(R)),m&&0!==l||("new"===A.state&&A.start(C,I,"controlling"),"new"===S.state&&S.start(P)),a._transceive(w,"sendrecv"===b||"recvonly"===b,"sendrecv"===b||"sendonly"===b),!x||"sendrecv"!==b&&"sendonly"!==b?delete w.rtpReceiver:(D=x.track,v?(u[v.stream]||(u[v.stream]=new e.MediaStream),n(D,u[v.stream]),f.push([D,x,u[v.stream]])):(u.default||(u.default=new e.MediaStream),n(D,u.default),f.push([D,x,u.default]))));else{(w=a.transceivers[l]||a._createTransceiver(d)).mid=y,w.iceGatherer||(w.iceGatherer=a._createIceGatherer(l,m)),R.length&&"new"===w.iceTransport.state&&(!O||m&&0!==l?R.forEach((function(e){s(w.iceTransport,e)})):w.iceTransport.setRemoteCandidates(R)),E=e.RTCRtpReceiver.getCapabilities(d),t<15019&&(E.codecs=E.codecs.filter((function(e){return"rtx"!==e.name}))),T=w.sendEncodingParameters||[{ssrc:1001*(2*l+2)}];var N,L=!1;if("sendrecv"===b||"sendonly"===b){if(L=!w.rtpReceiver,x=w.rtpReceiver||new e.RTCRtpReceiver(w.dtlsTransport,d),L)D=x.track,v&&"-"===v.stream||(v?(u[v.stream]||(u[v.stream]=new e.MediaStream,Object.defineProperty(u[v.stream],"id",{get:function(){return v.stream}})),Object.defineProperty(D,"id",{get:function(){return v.track}}),N=u[v.stream]):(u.default||(u.default=new e.MediaStream),N=u.default)),N&&(n(D,N),w.associatedRemoteMediaStreams.push(N)),f.push([D,x,N])}else w.rtpReceiver&&w.rtpReceiver.track&&(w.associatedRemoteMediaStreams.forEach((function(t){var n=t.getTracks().find((function(e){return e.id===w.rtpReceiver.track.id}));n&&function(t,n){n.removeTrack(t),n.dispatchEvent(new e.MediaStreamTrackEvent("removetrack",{track:t}))}(n,t)})),w.associatedRemoteMediaStreams=[]);w.localCapabilities=E,w.remoteCapabilities=M,w.rtpReceiver=x,w.rtcpParameters=$,w.sendEncodingParameters=T,w.recvEncodingParameters=k,a._transceive(a.transceivers[l],!1,L)}}else a.transceivers[l]={mid:y,isDatachannel:!0}})),void 0===a._dtlsRole&&(a._dtlsRole="offer"===i.type?"active":"passive"),a.remoteDescription={type:i.type,sdp:i.sdp},"offer"===i.type?a._updateSignalingState("have-remote-offer"):a._updateSignalingState("stable"),Object.keys(u).forEach((function(t){var n=u[t];if(n.getTracks().length){if(-1===a.remoteStreams.indexOf(n)){a.remoteStreams.push(n);var r=new Event("addstream");r.stream=n,e.setTimeout((function(){a._dispatchEvent("addstream",r)}))}f.forEach((function(e){var t=e[0],r=e[1];n.id===e[2].id&&c(a,t,r,[n])}))}})),f.forEach((function(e){e[2]||c(a,e[0],e[1],[])})),e.setTimeout((function(){a&&a.transceivers&&a.transceivers.forEach((function(e){e.iceTransport&&"new"===e.iceTransport.state&&e.iceTransport.getRemoteCandidates().length>0&&(console.warn("Timeout for addRemoteCandidate. Consider sending an end-of-candidates notification"),e.iceTransport.addRemoteCandidate({}))}))}),4e3),Promise.resolve()},u.prototype.close=function(){this.transceivers.forEach((function(e){e.iceTransport&&e.iceTransport.stop(),e.dtlsTransport&&e.dtlsTransport.stop(),e.rtpSender&&e.rtpSender.stop(),e.rtpReceiver&&e.rtpReceiver.stop()})),this._isClosed=!0,this._updateSignalingState("closed")},u.prototype._updateSignalingState=function(e){this.signalingState=e;var t=new Event("signalingstatechange");this._dispatchEvent("signalingstatechange",t)},u.prototype._maybeFireNegotiationNeeded=function(){var t=this;"stable"===this.signalingState&&!0!==this.needNegotiation&&(this.needNegotiation=!0,e.setTimeout((function(){if(t.needNegotiation){t.needNegotiation=!1;var e=new Event("negotiationneeded");t._dispatchEvent("negotiationneeded",e)}}),0))},u.prototype._updateConnectionState=function(){var e,t={new:0,closed:0,connecting:0,checking:0,connected:0,completed:0,disconnected:0,failed:0};if(this.transceivers.forEach((function(e){t[e.iceTransport.state]++,t[e.dtlsTransport.state]++})),t.connected+=t.completed,e="new",t.failed>0?e="failed":t.connecting>0||t.checking>0?e="connecting":t.disconnected>0?e="disconnected":t.new>0?e="new":(t.connected>0||t.completed>0)&&(e="connected"),e!==this.iceConnectionState){this.iceConnectionState=e;var n=new Event("iceconnectionstatechange");this._dispatchEvent("iceconnectionstatechange",n)}},u.prototype.createOffer=function(){var n=this;if(n._isClosed)return Promise.reject(l("InvalidStateError","Can not call createOffer after close"));var a=n.transceivers.filter((function(e){return"audio"===e.kind})).length,o=n.transceivers.filter((function(e){return"video"===e.kind})).length,s=arguments[0];if(s){if(s.mandatory||s.optional)throw new TypeError("Legacy mandatory/optional constraints not supported.");void 0!==s.offerToReceiveAudio&&(a=!0===s.offerToReceiveAudio?1:!1===s.offerToReceiveAudio?0:s.offerToReceiveAudio),void 0!==s.offerToReceiveVideo&&(o=!0===s.offerToReceiveVideo?1:!1===s.offerToReceiveVideo?0:s.offerToReceiveVideo)}for(n.transceivers.forEach((function(e){"audio"===e.kind?--a<0&&(e.wantReceive=!1):"video"===e.kind&&--o<0&&(e.wantReceive=!1)}));a>0||o>0;)a>0&&(n._createTransceiver("audio"),a--),o>0&&(n._createTransceiver("video"),o--);var c=r.writeSessionBoilerplate(n._sdpSessionId,n._sdpSessionVersion++);n.transceivers.forEach((function(i,a){var o=i.track,s=i.kind,l=i.mid||r.generateIdentifier();i.mid=l,i.iceGatherer||(i.iceGatherer=n._createIceGatherer(a,n.usingBundle));var c=e.RTCRtpSender.getCapabilities(s);t<15019&&(c.codecs=c.codecs.filter((function(e){return"rtx"!==e.name}))),c.codecs.forEach((function(e){"H264"===e.name&&void 0===e.parameters["level-asymmetry-allowed"]&&(e.parameters["level-asymmetry-allowed"]="1")}));var u=i.sendEncodingParameters||[{ssrc:1001*(2*a+1)}];o&&t>=15019&&"video"===s&&!u[0].rtx&&(u[0].rtx={ssrc:u[0].ssrc+1}),i.wantReceive&&(i.rtpReceiver=new e.RTCRtpReceiver(i.dtlsTransport,s)),i.localCapabilities=c,i.sendEncodingParameters=u})),"max-compat"!==n._config.bundlePolicy&&(c+="a=group:BUNDLE "+n.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n"),c+="a=ice-options:trickle\r\n",n.transceivers.forEach((function(e,t){c+=i(e,e.localCapabilities,"offer",e.stream,n._dtlsRole),c+="a=rtcp-rsize\r\n",!e.iceGatherer||"new"===n.iceGatheringState||0!==t&&n.usingBundle||(e.iceGatherer.getLocalCandidates().forEach((function(e){e.component=1,c+="a="+r.writeCandidate(e)+"\r\n"})),"completed"===e.iceGatherer.state&&(c+="a=end-of-candidates\r\n"))}));var u=new e.RTCSessionDescription({type:"offer",sdp:c});return Promise.resolve(u)},u.prototype.createAnswer=function(){var n=this;if(n._isClosed)return Promise.reject(l("InvalidStateError","Can not call createAnswer after close"));var o=r.writeSessionBoilerplate(n._sdpSessionId,n._sdpSessionVersion++);n.usingBundle&&(o+="a=group:BUNDLE "+n.transceivers.map((function(e){return e.mid})).join(" ")+"\r\n");var s=r.splitSections(n.remoteDescription.sdp).length-1;n.transceivers.forEach((function(e,r){if(!(r+1>s))if(e.isDatachannel)o+="m=application 0 DTLS/SCTP 5000\r\nc=IN IP4 0.0.0.0\r\na=mid:"+e.mid+"\r\n";else{var l;if(e.stream)"audio"===e.kind?l=e.stream.getAudioTracks()[0]:"video"===e.kind&&(l=e.stream.getVideoTracks()[0]),l&&t>=15019&&"video"===e.kind&&!e.sendEncodingParameters[0].rtx&&(e.sendEncodingParameters[0].rtx={ssrc:e.sendEncodingParameters[0].ssrc+1});var c=a(e.localCapabilities,e.remoteCapabilities);!c.codecs.filter((function(e){return"rtx"===e.name.toLowerCase()})).length&&e.sendEncodingParameters[0].rtx&&delete e.sendEncodingParameters[0].rtx,o+=i(e,c,"answer",e.stream,n._dtlsRole),e.rtcpParameters&&e.rtcpParameters.reducedSize&&(o+="a=rtcp-rsize\r\n")}}));var c=new e.RTCSessionDescription({type:"answer",sdp:o});return Promise.resolve(c)},u.prototype.addIceCandidate=function(e){var t,n=this;return e&&void 0===e.sdpMLineIndex&&!e.sdpMid?Promise.reject(new TypeError("sdpMLineIndex or sdpMid required")):new Promise((function(i,a){if(!n.remoteDescription)return a(l("InvalidStateError","Can not add ICE candidate without a remote description"));if(e&&""!==e.candidate){var o=e.sdpMLineIndex;if(e.sdpMid)for(var c=0;c<n.transceivers.length;c++)if(n.transceivers[c].mid===e.sdpMid){o=c;break}var u=n.transceivers[o];if(!u)return a(l("OperationError","Can not add ICE candidate"));if(u.isDatachannel)return i();var f=Object.keys(e.candidate).length>0?r.parseCandidate(e.candidate):{};if("tcp"===f.protocol&&(0===f.port||9===f.port))return i();if(f.component&&1!==f.component)return i();if((0===o||o>0&&u.iceTransport!==n.transceivers[0].iceTransport)&&!s(u.iceTransport,f))return a(l("OperationError","Can not add ICE candidate"));var d=e.candidate.trim();0===d.indexOf("a=")&&(d=d.substr(2)),(t=r.splitSections(n.remoteDescription.sdp))[o+1]+="a="+(f.type?d:"end-of-candidates")+"\r\n",n.remoteDescription.sdp=t.join("")}else for(var h=0;h<n.transceivers.length&&(n.transceivers[h].isDatachannel||(n.transceivers[h].iceTransport.addRemoteCandidate({}),(t=r.splitSections(n.remoteDescription.sdp))[h+1]+="a=end-of-candidates\r\n",n.remoteDescription.sdp=t.join(""),!n.usingBundle));h++);i()}))},u.prototype.getStats=function(){var e=[];this.transceivers.forEach((function(t){["rtpSender","rtpReceiver","iceGatherer","iceTransport","dtlsTransport"].forEach((function(n){t[n]&&e.push(t[n].getStats())}))}));return new Promise((function(t){var n=new Map;Promise.all(e).then((function(e){e.forEach((function(e){Object.keys(e).forEach((function(t){var r;e[t].type={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[(r=e[t]).type]||r.type,n.set(t,e[t])}))})),t(n)}))}))};var f=["createOffer","createAnswer"];return f.forEach((function(e){var t=u.prototype[e];u.prototype[e]=function(){var e=arguments;return"function"==typeof e[0]||"function"==typeof e[1]?t.apply(this,[arguments[2]]).then((function(t){"function"==typeof e[0]&&e[0].apply(null,[t])}),(function(t){"function"==typeof e[1]&&e[1].apply(null,[t])})):t.apply(this,arguments)}})),(f=["setLocalDescription","setRemoteDescription","addIceCandidate"]).forEach((function(e){var t=u.prototype[e];u.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]||"function"==typeof e[2]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)}),(function(t){"function"==typeof e[2]&&e[2].apply(null,[t])})):t.apply(this,arguments)}})),["getStats"].forEach((function(e){var t=u.prototype[e];u.prototype[e]=function(){var e=arguments;return"function"==typeof e[1]?t.apply(this,arguments).then((function(){"function"==typeof e[1]&&e[1].apply(null)})):t.apply(this,arguments)}})),u}},{sdp:39}],35:[function(e,t,n){var r=t.exports={v:[{name:"version",reg:/^(\d*)$/}],o:[{name:"origin",reg:/^(\S*) (\d*) (\d*) (\S*) IP(\d) (\S*)/,names:["username","sessionId","sessionVersion","netType","ipVer","address"],format:"%s %s %d %s IP%d %s"}],s:[{name:"name"}],i:[{name:"description"}],u:[{name:"uri"}],e:[{name:"email"}],p:[{name:"phone"}],z:[{name:"timezones"}],r:[{name:"repeats"}],t:[{name:"timing",reg:/^(\d*) (\d*)/,names:["start","stop"],format:"%d %d"}],c:[{name:"connection",reg:/^IN IP(\d) (\S*)/,names:["version","ip"],format:"IN IP%d %s"}],b:[{push:"bandwidth",reg:/^(TIAS|AS|CT|RR|RS):(\d*)/,names:["type","limit"],format:"%s:%s"}],m:[{reg:/^(\w*) (\d*) ([\w\/]*)(?: (.*))?/,names:["type","port","protocol","payloads"],format:"%s %d %s %s"}],a:[{push:"rtp",reg:/^rtpmap:(\d*) ([\w\-\.]*)(?:\s*\/(\d*)(?:\s*\/(\S*))?)?/,names:["payload","codec","rate","encoding"],format:function(e){return e.encoding?"rtpmap:%d %s/%s/%s":e.rate?"rtpmap:%d %s/%s":"rtpmap:%d %s"}},{push:"fmtp",reg:/^fmtp:(\d*) ([\S| ]*)/,names:["payload","config"],format:"fmtp:%d %s"},{name:"control",reg:/^control:(.*)/,format:"control:%s"},{name:"rtcp",reg:/^rtcp:(\d*)(?: (\S*) IP(\d) (\S*))?/,names:["port","netType","ipVer","address"],format:function(e){return null!=e.address?"rtcp:%d %s IP%d %s":"rtcp:%d"}},{push:"rtcpFbTrrInt",reg:/^rtcp-fb:(\*|\d*) trr-int (\d*)/,names:["payload","value"],format:"rtcp-fb:%d trr-int %d"},{push:"rtcpFb",reg:/^rtcp-fb:(\*|\d*) ([\w-_]*)(?: ([\w-_]*))?/,names:["payload","type","subtype"],format:function(e){return null!=e.subtype?"rtcp-fb:%s %s %s":"rtcp-fb:%s %s"}},{push:"ext",reg:/^extmap:(\d+)(?:\/(\w+))? (\S*)(?: (\S*))?/,names:["value","direction","uri","config"],format:function(e){return"extmap:%d"+(e.direction?"/%s":"%v")+" %s"+(e.config?" %s":"")}},{push:"crypto",reg:/^crypto:(\d*) ([\w_]*) (\S*)(?: (\S*))?/,names:["id","suite","config","sessionConfig"],format:function(e){return null!=e.sessionConfig?"crypto:%d %s %s %s":"crypto:%d %s %s"}},{name:"setup",reg:/^setup:(\w*)/,format:"setup:%s"},{name:"mid",reg:/^mid:([^\s]*)/,format:"mid:%s"},{name:"msid",reg:/^msid:(.*)/,format:"msid:%s"},{name:"ptime",reg:/^ptime:(\d*)/,format:"ptime:%d"},{name:"maxptime",reg:/^maxptime:(\d*)/,format:"maxptime:%d"},{name:"direction",reg:/^(sendrecv|recvonly|sendonly|inactive)/},{name:"icelite",reg:/^(ice-lite)/},{name:"iceUfrag",reg:/^ice-ufrag:(\S*)/,format:"ice-ufrag:%s"},{name:"icePwd",reg:/^ice-pwd:(\S*)/,format:"ice-pwd:%s"},{name:"fingerprint",reg:/^fingerprint:(\S*) (\S*)/,names:["type","hash"],format:"fingerprint:%s %s"},{push:"candidates",reg:/^candidate:(\S*) (\d*) (\S*) (\d*) (\S*) (\d*) typ (\S*)(?: raddr (\S*) rport (\d*))?(?: tcptype (\S*))?(?: generation (\d*))?(?: network-id (\d*))?(?: network-cost (\d*))?/,names:["foundation","component","transport","priority","ip","port","type","raddr","rport","tcptype","generation","network-id","network-cost"],format:function(e){var t="candidate:%s %d %s %d %s %d typ %s";return t+=null!=e.raddr?" raddr %s rport %d":"%v%v",t+=null!=e.tcptype?" tcptype %s":"%v",null!=e.generation&&(t+=" generation %d"),t+=null!=e["network-id"]?" network-id %d":"%v",t+=null!=e["network-cost"]?" network-cost %d":"%v"}},{name:"endOfCandidates",reg:/^(end-of-candidates)/},{name:"remoteCandidates",reg:/^remote-candidates:(.*)/,format:"remote-candidates:%s"},{name:"iceOptions",reg:/^ice-options:(\S*)/,format:"ice-options:%s"},{push:"ssrcs",reg:/^ssrc:(\d*) ([\w_-]*)(?::(.*))?/,names:["id","attribute","value"],format:function(e){var t="ssrc:%d";return null!=e.attribute&&(t+=" %s",null!=e.value&&(t+=":%s")),t}},{push:"ssrcGroups",reg:/^ssrc-group:([\x21\x23\x24\x25\x26\x27\x2A\x2B\x2D\x2E\w]*) (.*)/,names:["semantics","ssrcs"],format:"ssrc-group:%s %s"},{name:"msidSemantic",reg:/^msid-semantic:\s?(\w*) (\S*)/,names:["semantic","token"],format:"msid-semantic: %s %s"},{push:"groups",reg:/^group:(\w*) (.*)/,names:["type","mids"],format:"group:%s %s"},{name:"rtcpMux",reg:/^(rtcp-mux)/},{name:"rtcpRsize",reg:/^(rtcp-rsize)/},{name:"sctpmap",reg:/^sctpmap:([\w_\/]*) (\S*)(?: (\S*))?/,names:["sctpmapNumber","app","maxMessageSize"],format:function(e){return null!=e.maxMessageSize?"sctpmap:%s %s %s":"sctpmap:%s %s"}},{name:"xGoogleFlag",reg:/^x-google-flag:([^\s]*)/,format:"x-google-flag:%s"},{push:"rids",reg:/^rid:([\d\w]+) (\w+)(?: ([\S| ]*))?/,names:["id","direction","params"],format:function(e){return e.params?"rid:%s %s %s":"rid:%s %s"}},{push:"imageattrs",reg:new RegExp("^imageattr:(\\d+|\\*)[\\s\\t]+(send|recv)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*)(?:[\\s\\t]+(recv|send)[\\s\\t]+(\\*|\\[\\S+\\](?:[\\s\\t]+\\[\\S+\\])*))?"),names:["pt","dir1","attrs1","dir2","attrs2"],format:function(e){return"imageattr:%s %s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast",reg:new RegExp("^simulcast:(send|recv) ([a-zA-Z0-9\\-_~;,]+)(?:\\s?(send|recv) ([a-zA-Z0-9\\-_~;,]+))?$"),names:["dir1","list1","dir2","list2"],format:function(e){return"simulcast:%s %s"+(e.dir2?" %s %s":"")}},{name:"simulcast_03",reg:/^simulcast:[\s\t]+([\S+\s\t]+)$/,names:["value"],format:"simulcast: %s"},{name:"framerate",reg:/^framerate:(\d+(?:$|\.\d+))/,format:"framerate:%s"},{push:"invalid",names:["value"]}]};Object.keys(r).forEach((function(e){r[e].forEach((function(e){e.reg||(e.reg=/(.*)/),e.format||(e.format="%s")}))}))},{}],36:[function(e,t,n){var r=e("./parser"),i=e("./writer");n.write=i,n.parse=r.parse,n.parseFmtpConfig=r.parseFmtpConfig,n.parseParams=r.parseParams,n.parsePayloads=r.parsePayloads,n.parseRemoteCandidates=r.parseRemoteCandidates,n.parseImageAttributes=r.parseImageAttributes,n.parseSimulcastStreamList=r.parseSimulcastStreamList},{"./parser":37,"./writer":38}],37:[function(e,t,n){var r=function(e){return String(Number(e))===e?Number(e):e},i=function(e,t,n){var i=e.name&&e.names;e.push&&!t[e.push]?t[e.push]=[]:i&&!t[e.name]&&(t[e.name]={});var a=e.push?{}:i?t[e.name]:t;!function(e,t,n,i){if(i&&!n)t[i]=r(e[1]);else for(var a=0;a<n.length;a+=1)null!=e[a+1]&&(t[n[a]]=r(e[a+1]))}(n.match(e.reg),a,e.names,e.name),e.push&&t[e.push].push(a)},a=e("./grammar"),o=RegExp.prototype.test.bind(/^([a-z])=(.*)/);n.parse=function(e){var t={},n=[],r=t;return e.split(/(\r\n|\r|\n)/).filter(o).forEach((function(e){var t=e[0],o=e.slice(2);"m"===t&&(n.push({rtp:[],fmtp:[]}),r=n[n.length-1]);for(var s=0;s<(a[t]||[]).length;s+=1){var l=a[t][s];if(l.reg.test(o))return i(l,r,o)}})),t.media=n,t};var s=function(e,t){var n=t.split(/=(.+)/,2);return 2===n.length&&(e[n[0]]=r(n[1])),e};n.parseParams=function(e){return e.split(/\;\s?/).reduce(s,{})},n.parseFmtpConfig=n.parseParams,n.parsePayloads=function(e){return e.split(" ").map(Number)},n.parseRemoteCandidates=function(e){for(var t=[],n=e.split(" ").map(r),i=0;i<n.length;i+=3)t.push({component:n[i],ip:n[i+1],port:n[i+2]});return t},n.parseImageAttributes=function(e){return e.split(" ").map((function(e){return e.substring(1,e.length-1).split(",").reduce(s,{})}))},n.parseSimulcastStreamList=function(e){return e.split(";").map((function(e){return e.split(",").map((function(e){var t,n=!1;return"~"!==e[0]?t=r(e):(t=r(e.substring(1,e.length)),n=!0),{scid:t,paused:n}}))}))}},{"./grammar":35}],38:[function(e,t,n){var r=e("./grammar"),i=/%[sdv%]/g,a=function(e){var t=1,n=arguments,r=n.length;return e.replace(i,(function(e){if(t>=r)return e;var i=n[t];switch(t+=1,e){case"%%":return"%";case"%s":return String(i);case"%d":return Number(i);case"%v":return""}}))},o=function(e,t,n){var r=[e+"="+(t.format instanceof Function?t.format(t.push?n:n[t.name]):t.format)];if(t.names)for(var i=0;i<t.names.length;i+=1){var o=t.names[i];t.name?r.push(n[t.name][o]):r.push(n[t.names[i]])}else r.push(n[t.name]);return a.apply(null,r)},s=["v","o","s","i","u","e","p","c","b","t","r","z","a"],l=["i","c","b","a"];t.exports=function(e,t){t=t||{},null==e.version&&(e.version=0),null==e.name&&(e.name=" "),e.media.forEach((function(e){null==e.payloads&&(e.payloads="")}));var n=t.outerOrder||s,i=t.innerOrder||l,a=[];return n.forEach((function(t){r[t].forEach((function(n){n.name in e&&null!=e[n.name]?a.push(o(t,n,e)):n.push in e&&null!=e[n.push]&&e[n.push].forEach((function(e){a.push(o(t,n,e))}))}))})),e.media.forEach((function(e){a.push(o("m",r.m[0],e)),i.forEach((function(t){r[t].forEach((function(n){n.name in e&&null!=e[n.name]?a.push(o(t,n,e)):n.push in e&&null!=e[n.push]&&e[n.push].forEach((function(e){a.push(o(t,n,e))}))}))}))})),a.join("\r\n")+"\r\n"}},{"./grammar":35}],39:[function(e,t,n){"use strict";var r={generateIdentifier:function(){return Math.random().toString(36).substr(2,10)}};r.localCName=r.generateIdentifier(),r.splitLines=function(e){return e.trim().split("\n").map((function(e){return e.trim()}))},r.splitSections=function(e){return e.split("\nm=").map((function(e,t){return(t>0?"m="+e:e).trim()+"\r\n"}))},r.matchPrefix=function(e,t){return r.splitLines(e).filter((function(e){return 0===e.indexOf(t)}))},r.parseCandidate=function(e){for(var t,n={foundation:(t=0===e.indexOf("a=candidate:")?e.substring(12).split(" "):e.substring(10).split(" "))[0],component:parseInt(t[1],10),protocol:t[2].toLowerCase(),priority:parseInt(t[3],10),ip:t[4],port:parseInt(t[5],10),type:t[7]},r=8;r<t.length;r+=2)switch(t[r]){case"raddr":n.relatedAddress=t[r+1];break;case"rport":n.relatedPort=parseInt(t[r+1],10);break;case"tcptype":n.tcpType=t[r+1];break;case"ufrag":n.ufrag=t[r+1],n.usernameFragment=t[r+1];break;default:n[t[r]]=t[r+1]}return n},r.writeCandidate=function(e){var t=[];t.push(e.foundation),t.push(e.component),t.push(e.protocol.toUpperCase()),t.push(e.priority),t.push(e.ip),t.push(e.port);var n=e.type;return t.push("typ"),t.push(n),"host"!==n&&e.relatedAddress&&e.relatedPort&&(t.push("raddr"),t.push(e.relatedAddress),t.push("rport"),t.push(e.relatedPort)),e.tcpType&&"tcp"===e.protocol.toLowerCase()&&(t.push("tcptype"),t.push(e.tcpType)),e.ufrag&&(t.push("ufrag"),t.push(e.ufrag)),"candidate:"+t.join(" ")},r.parseIceOptions=function(e){return e.substr(14).split(" ")},r.parseRtpMap=function(e){var t=e.substr(9).split(" "),n={payloadType:parseInt(t.shift(),10)};return t=t[0].split("/"),n.name=t[0],n.clockRate=parseInt(t[1],10),n.numChannels=3===t.length?parseInt(t[2],10):1,n},r.writeRtpMap=function(e){var t=e.payloadType;return void 0!==e.preferredPayloadType&&(t=e.preferredPayloadType),"a=rtpmap:"+t+" "+e.name+"/"+e.clockRate+(1!==e.numChannels?"/"+e.numChannels:"")+"\r\n"},r.parseExtmap=function(e){var t=e.substr(9).split(" ");return{id:parseInt(t[0],10),direction:t[0].indexOf("/")>0?t[0].split("/")[1]:"sendrecv",uri:t[1]}},r.writeExtmap=function(e){return"a=extmap:"+(e.id||e.preferredId)+(e.direction&&"sendrecv"!==e.direction?"/"+e.direction:"")+" "+e.uri+"\r\n"},r.parseFmtp=function(e){for(var t,n={},r=e.substr(e.indexOf(" ")+1).split(";"),i=0;i<r.length;i++)n[(t=r[i].trim().split("="))[0].trim()]=t[1];return n},r.writeFmtp=function(e){var t="",n=e.payloadType;if(void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.parameters&&Object.keys(e.parameters).length){var r=[];Object.keys(e.parameters).forEach((function(t){r.push(t+"="+e.parameters[t])})),t+="a=fmtp:"+n+" "+r.join(";")+"\r\n"}return t},r.parseRtcpFb=function(e){var t=e.substr(e.indexOf(" ")+1).split(" ");return{type:t.shift(),parameter:t.join(" ")}},r.writeRtcpFb=function(e){var t="",n=e.payloadType;return void 0!==e.preferredPayloadType&&(n=e.preferredPayloadType),e.rtcpFeedback&&e.rtcpFeedback.length&&e.rtcpFeedback.forEach((function(e){t+="a=rtcp-fb:"+n+" "+e.type+(e.parameter&&e.parameter.length?" "+e.parameter:"")+"\r\n"})),t},r.parseSsrcMedia=function(e){var t=e.indexOf(" "),n={ssrc:parseInt(e.substr(7,t-7),10)},r=e.indexOf(":",t);return r>-1?(n.attribute=e.substr(t+1,r-t-1),n.value=e.substr(r+1)):n.attribute=e.substr(t+1),n},r.getMid=function(e){var t=r.matchPrefix(e,"a=mid:")[0];if(t)return t.substr(6)},r.parseFingerprint=function(e){var t=e.substr(14).split(" ");return{algorithm:t[0].toLowerCase(),value:t[1]}},r.getDtlsParameters=function(e,t){return{role:"auto",fingerprints:r.matchPrefix(e+t,"a=fingerprint:").map(r.parseFingerprint)}},r.writeDtlsParameters=function(e,t){var n="a=setup:"+t+"\r\n";return e.fingerprints.forEach((function(e){n+="a=fingerprint:"+e.algorithm+" "+e.value+"\r\n"})),n},r.getIceParameters=function(e,t){var n=r.splitLines(e);return{usernameFragment:(n=n.concat(r.splitLines(t))).filter((function(e){return 0===e.indexOf("a=ice-ufrag:")}))[0].substr(12),password:n.filter((function(e){return 0===e.indexOf("a=ice-pwd:")}))[0].substr(10)}},r.writeIceParameters=function(e){return"a=ice-ufrag:"+e.usernameFragment+"\r\na=ice-pwd:"+e.password+"\r\n"},r.parseRtpParameters=function(e){for(var t={codecs:[],headerExtensions:[],fecMechanisms:[],rtcp:[]},n=r.splitLines(e)[0].split(" "),i=3;i<n.length;i++){var a=n[i],o=r.matchPrefix(e,"a=rtpmap:"+a+" ")[0];if(o){var s=r.parseRtpMap(o),l=r.matchPrefix(e,"a=fmtp:"+a+" ");switch(s.parameters=l.length?r.parseFmtp(l[0]):{},s.rtcpFeedback=r.matchPrefix(e,"a=rtcp-fb:"+a+" ").map(r.parseRtcpFb),t.codecs.push(s),s.name.toUpperCase()){case"RED":case"ULPFEC":t.fecMechanisms.push(s.name.toUpperCase())}}}return r.matchPrefix(e,"a=extmap:").forEach((function(e){t.headerExtensions.push(r.parseExtmap(e))})),t},r.writeRtpDescription=function(e,t){var n="";n+="m="+e+" ",n+=t.codecs.length>0?"9":"0",n+=" UDP/TLS/RTP/SAVPF ",n+=t.codecs.map((function(e){return void 0!==e.preferredPayloadType?e.preferredPayloadType:e.payloadType})).join(" ")+"\r\n",n+="c=IN IP4 0.0.0.0\r\n",n+="a=rtcp:9 IN IP4 0.0.0.0\r\n",t.codecs.forEach((function(e){n+=r.writeRtpMap(e),n+=r.writeFmtp(e),n+=r.writeRtcpFb(e)}));var i=0;return t.codecs.forEach((function(e){e.maxptime>i&&(i=e.maxptime)})),i>0&&(n+="a=maxptime:"+i+"\r\n"),n+="a=rtcp-mux\r\n",t.headerExtensions.forEach((function(e){n+=r.writeExtmap(e)})),n},r.parseRtpEncodingParameters=function(e){var t,n=[],i=r.parseRtpParameters(e),a=-1!==i.fecMechanisms.indexOf("RED"),o=-1!==i.fecMechanisms.indexOf("ULPFEC"),s=r.matchPrefix(e,"a=ssrc:").map((function(e){return r.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute})),l=s.length>0&&s[0].ssrc,c=r.matchPrefix(e,"a=ssrc-group:FID").map((function(e){var t=e.split(" ");return t.shift(),t.map((function(e){return parseInt(e,10)}))}));c.length>0&&c[0].length>1&&c[0][0]===l&&(t=c[0][1]),i.codecs.forEach((function(e){if("RTX"===e.name.toUpperCase()&&e.parameters.apt){var r={ssrc:l,codecPayloadType:parseInt(e.parameters.apt,10),rtx:{ssrc:t}};n.push(r),a&&((r=JSON.parse(JSON.stringify(r))).fec={ssrc:t,mechanism:o?"red+ulpfec":"red"},n.push(r))}})),0===n.length&&l&&n.push({ssrc:l});var u=r.matchPrefix(e,"b=");return u.length&&(u=0===u[0].indexOf("b=TIAS:")?parseInt(u[0].substr(7),10):0===u[0].indexOf("b=AS:")?1e3*parseInt(u[0].substr(5),10)*.95-16e3:void 0,n.forEach((function(e){e.maxBitrate=u}))),n},r.parseRtcpParameters=function(e){var t={},n=r.matchPrefix(e,"a=ssrc:").map((function(e){return r.parseSsrcMedia(e)})).filter((function(e){return"cname"===e.attribute}))[0];n&&(t.cname=n.value,t.ssrc=n.ssrc);var i=r.matchPrefix(e,"a=rtcp-rsize");t.reducedSize=i.length>0,t.compound=0===i.length;var a=r.matchPrefix(e,"a=rtcp-mux");return t.mux=a.length>0,t},r.parseMsid=function(e){var t,n=r.matchPrefix(e,"a=msid:");if(1===n.length)return{stream:(t=n[0].substr(7).split(" "))[0],track:t[1]};var i=r.matchPrefix(e,"a=ssrc:").map((function(e){return r.parseSsrcMedia(e)})).filter((function(e){return"msid"===e.attribute}));return i.length>0?{stream:(t=i[0].value.split(" "))[0],track:t[1]}:void 0},r.generateSessionId=function(){return Math.random().toString().substr(2,21)},r.writeSessionBoilerplate=function(e,t){var n=void 0!==t?t:2;return"v=0\r\no=thisisadapterortc "+(e||r.generateSessionId())+" "+n+" IN IP4 127.0.0.1\r\ns=-\r\nt=0 0\r\n"},r.writeMediaSection=function(e,t,n,i){var a=r.writeRtpDescription(e.kind,t);if(a+=r.writeIceParameters(e.iceGatherer.getLocalParameters()),a+=r.writeDtlsParameters(e.dtlsTransport.getLocalParameters(),"offer"===n?"actpass":"active"),a+="a=mid:"+e.mid+"\r\n",e.direction?a+="a="+e.direction+"\r\n":e.rtpSender&&e.rtpReceiver?a+="a=sendrecv\r\n":e.rtpSender?a+="a=sendonly\r\n":e.rtpReceiver?a+="a=recvonly\r\n":a+="a=inactive\r\n",e.rtpSender){var o="msid:"+i.id+" "+e.rtpSender.track.id+"\r\n";a+="a="+o,a+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" "+o,e.sendEncodingParameters[0].rtx&&(a+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" "+o,a+="a=ssrc-group:FID "+e.sendEncodingParameters[0].ssrc+" "+e.sendEncodingParameters[0].rtx.ssrc+"\r\n")}return a+="a=ssrc:"+e.sendEncodingParameters[0].ssrc+" cname:"+r.localCName+"\r\n",e.rtpSender&&e.sendEncodingParameters[0].rtx&&(a+="a=ssrc:"+e.sendEncodingParameters[0].rtx.ssrc+" cname:"+r.localCName+"\r\n"),a},r.getDirection=function(e,t){for(var n=r.splitLines(e),i=0;i<n.length;i++)switch(n[i]){case"a=sendrecv":case"a=sendonly":case"a=recvonly":case"a=inactive":return n[i].substr(2)}return t?r.getDirection(t):"sendrecv"},r.getKind=function(e){return r.splitLines(e)[0].split(" ")[0].substr(2)},r.isRejected=function(e){return"0"===e.split(" ",2)[1]},r.parseMLine=function(e){var t=r.splitLines(e)[0].split(" ");return{kind:t[0].substr(2),port:parseInt(t[1],10),protocol:t[2],fmt:t.slice(3).join(" ")}},"object"==typeof t&&(t.exports=r)},{}],40:[function(e,t,n){(function(n){"use strict";var r=e("./adapter_factory.js");t.exports=r({window:n.window})}).call(this,"undefined"!=typeof global?global:"undefined"!=typeof self?self:"undefined"!=typeof window?window:{})},{"./adapter_factory.js":41}],41:[function(e,t,n){"use strict";var r=e("./utils");t.exports=function(t,n){var i=t&&t.window,a={shimChrome:!0,shimFirefox:!0,shimEdge:!0,shimSafari:!0};for(var o in n)hasOwnProperty.call(n,o)&&(a[o]=n[o]);var s=r.log,l=r.detectBrowser(i),c={browserDetails:l,extractVersion:r.extractVersion,disableLog:r.disableLog,disableWarnings:r.disableWarnings},u=e("./chrome/chrome_shim")||null,f=e("./edge/edge_shim")||null,d=e("./firefox/firefox_shim")||null,h=e("./safari/safari_shim")||null,p=e("./common_shim")||null;switch(l.browser){case"chrome":if(!u||!u.shimPeerConnection||!a.shimChrome)return s("Chrome shim is not included in this adapter release."),c;s("adapter.js shimming chrome."),c.browserShim=u,p.shimCreateObjectURL(i),u.shimGetUserMedia(i),u.shimMediaStream(i),u.shimSourceObject(i),u.shimPeerConnection(i),u.shimOnTrack(i),u.shimAddTrackRemoveTrack(i),u.shimGetSendersWithDtmf(i),p.shimRTCIceCandidate(i);break;case"firefox":if(!d||!d.shimPeerConnection||!a.shimFirefox)return s("Firefox shim is not included in this adapter release."),c;s("adapter.js shimming firefox."),c.browserShim=d,p.shimCreateObjectURL(i),d.shimGetUserMedia(i),d.shimSourceObject(i),d.shimPeerConnection(i),d.shimOnTrack(i),d.shimRemoveStream(i),p.shimRTCIceCandidate(i);break;case"edge":if(!f||!f.shimPeerConnection||!a.shimEdge)return s("MS edge shim is not included in this adapter release."),c;s("adapter.js shimming edge."),c.browserShim=f,p.shimCreateObjectURL(i),f.shimGetUserMedia(i),f.shimPeerConnection(i),f.shimReplaceTrack(i);break;case"safari":if(!h||!a.shimSafari)return s("Safari shim is not included in this adapter release."),c;s("adapter.js shimming safari."),c.browserShim=h,p.shimCreateObjectURL(i),h.shimRTCIceServerUrls(i),h.shimCallbacksAPI(i),h.shimLocalStreamsAPI(i),h.shimRemoteStreamsAPI(i),h.shimTrackEventTransceiver(i),h.shimGetUserMedia(i),h.shimCreateOfferLegacy(i),p.shimRTCIceCandidate(i);break;default:s("Unsupported browser!")}return c}},{"./chrome/chrome_shim":42,"./common_shim":44,"./edge/edge_shim":45,"./firefox/firefox_shim":47,"./safari/safari_shim":49,"./utils":50}],42:[function(e,t,n){"use strict";var r=e("../utils.js"),i=r.log;t.exports={shimGetUserMedia:e("./getusermedia"),shimMediaStream:function(e){e.MediaStream=e.MediaStream||e.webkitMediaStream},shimOnTrack:function(e){if("object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)){Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&this.removeEventListener("track",this._ontrack),this.addEventListener("track",this._ontrack=e)}});var t=e.RTCPeerConnection.prototype.setRemoteDescription;e.RTCPeerConnection.prototype.setRemoteDescription=function(){var n=this;return n._ontrackpoly||(n._ontrackpoly=function(t){t.stream.addEventListener("addtrack",(function(r){var i;i=e.RTCPeerConnection.prototype.getReceivers?n.getReceivers().find((function(e){return e.track&&e.track.id===r.track.id})):{track:r.track};var a=new Event("track");a.track=r.track,a.receiver=i,a.transceiver={receiver:i},a.streams=[t.stream],n.dispatchEvent(a)})),t.stream.getTracks().forEach((function(r){var i;i=e.RTCPeerConnection.prototype.getReceivers?n.getReceivers().find((function(e){return e.track&&e.track.id===r.id})):{track:r};var a=new Event("track");a.track=r,a.receiver=i,a.transceiver={receiver:i},a.streams=[t.stream],n.dispatchEvent(a)}))},n.addEventListener("addstream",n._ontrackpoly)),t.apply(n,arguments)}}},shimGetSendersWithDtmf:function(e){if("object"==typeof e&&e.RTCPeerConnection&&!("getSenders"in e.RTCPeerConnection.prototype)&&"createDTMFSender"in e.RTCPeerConnection.prototype){var t=function(e,t){return{track:t,get dtmf(){return void 0===this._dtmf&&("audio"===t.kind?this._dtmf=e.createDTMFSender(t):this._dtmf=null),this._dtmf},_pc:e}};if(!e.RTCPeerConnection.prototype.getSenders){e.RTCPeerConnection.prototype.getSenders=function(){return this._senders=this._senders||[],this._senders.slice()};var n=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,r){var i=this,a=n.apply(i,arguments);return a||(a=t(i,e),i._senders.push(a)),a};var r=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;r.apply(t,arguments);var n=t._senders.indexOf(e);-1!==n&&t._senders.splice(n,1)}}var i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var n=this;n._senders=n._senders||[],i.apply(n,[e]),e.getTracks().forEach((function(e){n._senders.push(t(n,e))}))};var a=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;t._senders=t._senders||[],a.apply(t,[e]),e.getTracks().forEach((function(e){var n=t._senders.find((function(t){return t.track===e}));n&&t._senders.splice(t._senders.indexOf(n),1)}))}}else if("object"==typeof e&&e.RTCPeerConnection&&"getSenders"in e.RTCPeerConnection.prototype&&"createDTMFSender"in e.RTCPeerConnection.prototype&&e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)){var o=e.RTCPeerConnection.prototype.getSenders;e.RTCPeerConnection.prototype.getSenders=function(){var e=this,t=o.apply(e,[]);return t.forEach((function(t){t._pc=e})),t},Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=this._pc.createDTMFSender(this.track):this._dtmf=null),this._dtmf}})}},shimSourceObject:function(e){var t=e&&e.URL;"object"==typeof e&&e.HTMLMediaElement&&!("srcObject"in e.HTMLMediaElement.prototype)&&Object.defineProperty(e.HTMLMediaElement.prototype,"srcObject",{get:function(){return this._srcObject},set:function(e){var n=this;this._srcObject=e,this.src&&t.revokeObjectURL(this.src),e?(this.src=t.createObjectURL(e),e.addEventListener("addtrack",(function(){n.src&&t.revokeObjectURL(n.src),n.src=t.createObjectURL(e)})),e.addEventListener("removetrack",(function(){n.src&&t.revokeObjectURL(n.src),n.src=t.createObjectURL(e)}))):this.src=""}})},shimAddTrackRemoveTrackWithNative:function(e){e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},Object.keys(this._shimmedLocalStreams).map((function(t){return e._shimmedLocalStreams[t][0]}))};var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addTrack=function(e,n){if(!n)return t.apply(this,arguments);this._shimmedLocalStreams=this._shimmedLocalStreams||{};var r=t.apply(this,arguments);return this._shimmedLocalStreams[n.id]?-1===this._shimmedLocalStreams[n.id].indexOf(r)&&this._shimmedLocalStreams[n.id].push(r):this._shimmedLocalStreams[n.id]=[n,r],r};var n=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(e){var t=this;this._shimmedLocalStreams=this._shimmedLocalStreams||{},e.getTracks().forEach((function(e){if(t.getSenders().find((function(t){return t.track===e})))throw new DOMException("Track already exists.","InvalidAccessError")}));var r=t.getSenders();n.apply(this,arguments);var i=t.getSenders().filter((function(e){return-1===r.indexOf(e)}));this._shimmedLocalStreams[e.id]=[e].concat(i)};var r=e.RTCPeerConnection.prototype.removeStream;e.RTCPeerConnection.prototype.removeStream=function(e){return this._shimmedLocalStreams=this._shimmedLocalStreams||{},delete this._shimmedLocalStreams[e.id],r.apply(this,arguments)};var i=e.RTCPeerConnection.prototype.removeTrack;e.RTCPeerConnection.prototype.removeTrack=function(e){var t=this;return this._shimmedLocalStreams=this._shimmedLocalStreams||{},e&&Object.keys(this._shimmedLocalStreams).forEach((function(n){var r=t._shimmedLocalStreams[n].indexOf(e);-1!==r&&t._shimmedLocalStreams[n].splice(r,1),1===t._shimmedLocalStreams[n].length&&delete t._shimmedLocalStreams[n]})),i.apply(this,arguments)}},shimAddTrackRemoveTrack:function(e){var t=r.detectBrowser(e);if(e.RTCPeerConnection.prototype.addTrack&&t.version>=65)return this.shimAddTrackRemoveTrackWithNative(e);var n=e.RTCPeerConnection.prototype.getLocalStreams;e.RTCPeerConnection.prototype.getLocalStreams=function(){var e=this,t=n.apply(this);return e._reverseStreams=e._reverseStreams||{},t.map((function(t){return e._reverseStreams[t.id]}))};var i=e.RTCPeerConnection.prototype.addStream;e.RTCPeerConnection.prototype.addStream=function(t){var n=this;if(n._streams=n._streams||{},n._reverseStreams=n._reverseStreams||{},t.getTracks().forEach((function(e){if(n.getSenders().find((function(t){return t.track===e})))throw new DOMException("Track already exists.","InvalidAccessError")})),!n._reverseStreams[t.id]){var r=new e.MediaStream(t.getTracks());n._streams[t.id]=r,n._reverseStreams[r.id]=t,t=r}i.apply(n,[t])};var a=e.RTCPeerConnection.prototype.removeStream;function o(e,t){var n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((function(t){var r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(i.id,"g"),r.id)})),new RTCSessionDescription({type:t.type,sdp:n})}function s(e,t){var n=t.sdp;return Object.keys(e._reverseStreams||[]).forEach((function(t){var r=e._reverseStreams[t],i=e._streams[r.id];n=n.replace(new RegExp(r.id,"g"),i.id)})),new RTCSessionDescription({type:t.type,sdp:n})}e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;t._streams=t._streams||{},t._reverseStreams=t._reverseStreams||{},a.apply(t,[t._streams[e.id]||e]),delete t._reverseStreams[t._streams[e.id]?t._streams[e.id].id:e.id],delete t._streams[e.id]},e.RTCPeerConnection.prototype.addTrack=function(t,n){var r=this;if("closed"===r.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");var i=[].slice.call(arguments,1);if(1!==i.length||!i[0].getTracks().find((function(e){return e===t})))throw new DOMException("The adapter.js addTrack polyfill only supports a single  stream which is associated with the specified track.","NotSupportedError");var a=r.getSenders().find((function(e){return e.track===t}));if(a)throw new DOMException("Track already exists.","InvalidAccessError");r._streams=r._streams||{},r._reverseStreams=r._reverseStreams||{};var o=r._streams[n.id];if(o)o.addTrack(t),Promise.resolve().then((function(){r.dispatchEvent(new Event("negotiationneeded"))}));else{var s=new e.MediaStream([t]);r._streams[n.id]=s,r._reverseStreams[s.id]=n,r.addStream(s)}return r.getSenders().find((function(e){return e.track===t}))},["createOffer","createAnswer"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){var e=this,t=arguments,r=arguments.length&&"function"==typeof arguments[0];return r?n.apply(e,[function(n){var r=o(e,n);t[0].apply(null,[r])},function(e){t[1]&&t[1].apply(null,e)},arguments[2]]):n.apply(e,arguments).then((function(t){return o(e,t)}))}}));var l=e.RTCPeerConnection.prototype.setLocalDescription;e.RTCPeerConnection.prototype.setLocalDescription=function(){var e=this;return arguments.length&&arguments[0].type?(arguments[0]=s(e,arguments[0]),l.apply(e,arguments)):l.apply(e,arguments)};var c=Object.getOwnPropertyDescriptor(e.RTCPeerConnection.prototype,"localDescription");Object.defineProperty(e.RTCPeerConnection.prototype,"localDescription",{get:function(){var e=c.get.apply(this);return""===e.type?e:o(this,e)}}),e.RTCPeerConnection.prototype.removeTrack=function(e){var t,n=this;if("closed"===n.signalingState)throw new DOMException("The RTCPeerConnection's signalingState is 'closed'.","InvalidStateError");if(!e._pc)throw new DOMException("Argument 1 of RTCPeerConnection.removeTrack does not implement interface RTCRtpSender.","TypeError");if(!(e._pc===n))throw new DOMException("Sender was not created by this connection.","InvalidAccessError");n._streams=n._streams||{},Object.keys(n._streams).forEach((function(r){n._streams[r].getTracks().find((function(t){return e.track===t}))&&(t=n._streams[r])})),t&&(1===t.getTracks().length?n.removeStream(n._reverseStreams[t.id]):t.removeTrack(e.track),n.dispatchEvent(new Event("negotiationneeded")))}},shimPeerConnection:function(e){var t=r.detectBrowser(e);if(e.RTCPeerConnection){var n=e.RTCPeerConnection;e.RTCPeerConnection=function(e,t){if(e&&e.iceServers){for(var i=[],a=0;a<e.iceServers.length;a++){var o=e.iceServers[a];!o.hasOwnProperty("urls")&&o.hasOwnProperty("url")?(r.deprecated("RTCIceServer.url","RTCIceServer.urls"),(o=JSON.parse(JSON.stringify(o))).urls=o.url,i.push(o)):i.push(e.iceServers[a])}e.iceServers=i}return new n(e,t)},e.RTCPeerConnection.prototype=n.prototype,Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return n.generateCertificate}})}else e.RTCPeerConnection=function(t,n){return i("PeerConnection"),t&&t.iceTransportPolicy&&(t.iceTransports=t.iceTransportPolicy),new e.webkitRTCPeerConnection(t,n)},e.RTCPeerConnection.prototype=e.webkitRTCPeerConnection.prototype,e.webkitRTCPeerConnection.generateCertificate&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return e.webkitRTCPeerConnection.generateCertificate}});var a=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(e,t,n){var r=this,i=arguments;if(arguments.length>0&&"function"==typeof e)return a.apply(this,arguments);if(0===a.length&&(0===arguments.length||"function"!=typeof arguments[0]))return a.apply(this,[]);var o=function(e){var t={};return e.result().forEach((function(e){var n={id:e.id,timestamp:e.timestamp,type:{localcandidate:"local-candidate",remotecandidate:"remote-candidate"}[e.type]||e.type};e.names().forEach((function(t){n[t]=e.stat(t)})),t[n.id]=n})),t},s=function(e){return new Map(Object.keys(e).map((function(t){return[t,e[t]]})))};if(arguments.length>=2){var l=function(e){i[1](s(o(e)))};return a.apply(this,[l,arguments[0]])}return new Promise((function(e,t){a.apply(r,[function(t){e(s(o(t)))},t])})).then(t,n)},t.version<51&&["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){var e=arguments,t=this,r=new Promise((function(r,i){n.apply(t,[e[0],r,i])}));return e.length<2?r:r.then((function(){e[1].apply(null,[])}),(function(t){e.length>=3&&e[2].apply(null,[t])}))}})),t.version<52&&["createOffer","createAnswer"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){var e=this;if(arguments.length<1||1===arguments.length&&"object"==typeof arguments[0]){var t=1===arguments.length?arguments[0]:void 0;return new Promise((function(r,i){n.apply(e,[r,i,t])}))}return n.apply(this,arguments)}})),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}}));var o=e.RTCPeerConnection.prototype.addIceCandidate;e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?o.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())}}}},{"../utils.js":50,"./getusermedia":43}],43:[function(e,t,n){"use strict";var r=e("../utils.js"),i=r.log;t.exports=function(e){var t=r.detectBrowser(e),n=e&&e.navigator,a=function(e){if("object"!=typeof e||e.mandatory||e.optional)return e;var t={};return Object.keys(e).forEach((function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r="object"==typeof e[n]?e[n]:{ideal:e[n]};void 0!==r.exact&&"number"==typeof r.exact&&(r.min=r.max=r.exact);var i=function(e,t){return e?e+t.charAt(0).toUpperCase()+t.slice(1):"deviceId"===t?"sourceId":t};if(void 0!==r.ideal){t.optional=t.optional||[];var a={};"number"==typeof r.ideal?(a[i("min",n)]=r.ideal,t.optional.push(a),(a={})[i("max",n)]=r.ideal,t.optional.push(a)):(a[i("",n)]=r.ideal,t.optional.push(a))}void 0!==r.exact&&"number"!=typeof r.exact?(t.mandatory=t.mandatory||{},t.mandatory[i("",n)]=r.exact):["min","max"].forEach((function(e){void 0!==r[e]&&(t.mandatory=t.mandatory||{},t.mandatory[i(e,n)]=r[e])}))}})),e.advanced&&(t.optional=(t.optional||[]).concat(e.advanced)),t},o=function(e,r){if(t.version>=61)return r(e);if((e=JSON.parse(JSON.stringify(e)))&&"object"==typeof e.audio){var o=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])};o((e=JSON.parse(JSON.stringify(e))).audio,"autoGainControl","googAutoGainControl"),o(e.audio,"noiseSuppression","googNoiseSuppression"),e.audio=a(e.audio)}if(e&&"object"==typeof e.video){var s=e.video.facingMode;s=s&&("object"==typeof s?s:{ideal:s});var l,c=t.version<66;if(s&&("user"===s.exact||"environment"===s.exact||"user"===s.ideal||"environment"===s.ideal)&&(!n.mediaDevices.getSupportedConstraints||!n.mediaDevices.getSupportedConstraints().facingMode||c))if(delete e.video.facingMode,"environment"===s.exact||"environment"===s.ideal?l=["back","rear"]:"user"!==s.exact&&"user"!==s.ideal||(l=["front"]),l)return n.mediaDevices.enumerateDevices().then((function(t){var n=(t=t.filter((function(e){return"videoinput"===e.kind}))).find((function(e){return l.some((function(t){return-1!==e.label.toLowerCase().indexOf(t)}))}));return!n&&t.length&&-1!==l.indexOf("back")&&(n=t[t.length-1]),n&&(e.video.deviceId=s.exact?{exact:n.deviceId}:{ideal:n.deviceId}),e.video=a(e.video),i("chrome: "+JSON.stringify(e)),r(e)}));e.video=a(e.video)}return i("chrome: "+JSON.stringify(e)),r(e)},s=function(e){return{name:{PermissionDeniedError:"NotAllowedError",InvalidStateError:"NotReadableError",DevicesNotFoundError:"NotFoundError",ConstraintNotSatisfiedError:"OverconstrainedError",TrackStartError:"NotReadableError",MediaDeviceFailedDueToShutdown:"NotReadableError",MediaDeviceKillSwitchOn:"NotReadableError"}[e.name]||e.name,message:e.message,constraint:e.constraintName,toString:function(){return this.name+(this.message&&": ")+this.message}}};n.getUserMedia=function(e,t,r){o(e,(function(e){n.webkitGetUserMedia(e,t,(function(e){r&&r(s(e))}))}))};var l=function(e){return new Promise((function(t,r){n.getUserMedia(e,t,r)}))};if(n.mediaDevices||(n.mediaDevices={getUserMedia:l,enumerateDevices:function(){return new Promise((function(t){var n={audio:"audioinput",video:"videoinput"};return e.MediaStreamTrack.getSources((function(e){t(e.map((function(e){return{label:e.label,kind:n[e.kind],deviceId:e.id,groupId:""}})))}))}))},getSupportedConstraints:function(){return{deviceId:!0,echoCancellation:!0,facingMode:!0,frameRate:!0,height:!0,width:!0}}}),n.mediaDevices.getUserMedia){var c=n.mediaDevices.getUserMedia.bind(n.mediaDevices);n.mediaDevices.getUserMedia=function(e){return o(e,(function(e){return c(e).then((function(t){if(e.audio&&!t.getAudioTracks().length||e.video&&!t.getVideoTracks().length)throw t.getTracks().forEach((function(e){e.stop()})),new DOMException("","NotFoundError");return t}),(function(e){return Promise.reject(s(e))}))}))}}else n.mediaDevices.getUserMedia=function(e){return l(e)};void 0===n.mediaDevices.addEventListener&&(n.mediaDevices.addEventListener=function(){i("Dummy mediaDevices.addEventListener called.")}),void 0===n.mediaDevices.removeEventListener&&(n.mediaDevices.removeEventListener=function(){i("Dummy mediaDevices.removeEventListener called.")})}},{"../utils.js":50}],44:[function(e,t,n){"use strict";var r=e("sdp"),i=e("./utils");t.exports={shimRTCIceCandidate:function(e){if(!e.RTCIceCandidate||!("foundation"in e.RTCIceCandidate.prototype)){var t=e.RTCIceCandidate;e.RTCIceCandidate=function(e){"object"==typeof e&&e.candidate&&0===e.candidate.indexOf("a=")&&((e=JSON.parse(JSON.stringify(e))).candidate=e.candidate.substr(2));var n=new t(e),i=r.parseCandidate(e.candidate),a=Object.assign(n,i);return a.toJSON=function(){return{candidate:a.candidate,sdpMid:a.sdpMid,sdpMLineIndex:a.sdpMLineIndex,usernameFragment:a.usernameFragment}},a},function(e,t,n){if(e.RTCPeerConnection){var r=e.RTCPeerConnection.prototype,i=r.addEventListener;r.addEventListener=function(e,r){if(e!==t)return i.apply(this,arguments);var a=function(e){r(n(e))};return this._eventMap=this._eventMap||{},this._eventMap[r]=a,i.apply(this,[e,a])};var a=r.removeEventListener;r.removeEventListener=function(e,n){if(e!==t||!this._eventMap||!this._eventMap[n])return a.apply(this,arguments);var r=this._eventMap[n];return delete this._eventMap[n],a.apply(this,[e,r])},Object.defineProperty(r,"on"+t,{get:function(){return this["_on"+t]},set:function(e){this["_on"+t]&&(this.removeEventListener(t,this["_on"+t]),delete this["_on"+t]),e&&this.addEventListener(t,this["_on"+t]=e)}})}}(e,"icecandidate",(function(t){return t.candidate&&Object.defineProperty(t,"candidate",{value:new e.RTCIceCandidate(t.candidate),writable:"false"}),t}))}},shimCreateObjectURL:function(e){var t=e&&e.URL;if("object"==typeof e&&e.HTMLMediaElement&&"srcObject"in e.HTMLMediaElement.prototype&&t.createObjectURL&&t.revokeObjectURL){var n=t.createObjectURL.bind(t),r=t.revokeObjectURL.bind(t),a=new Map,o=0;t.createObjectURL=function(e){if("getTracks"in e){var t="polyblob:"+ ++o;return a.set(t,e),i.deprecated("URL.createObjectURL(stream)","elem.srcObject = stream"),t}return n(e)},t.revokeObjectURL=function(e){r(e),a.delete(e)};var s=Object.getOwnPropertyDescriptor(e.HTMLMediaElement.prototype,"src");Object.defineProperty(e.HTMLMediaElement.prototype,"src",{get:function(){return s.get.apply(this)},set:function(e){return this.srcObject=a.get(e)||null,s.set.apply(this,[e])}});var l=e.HTMLMediaElement.prototype.setAttribute;e.HTMLMediaElement.prototype.setAttribute=function(){return 2===arguments.length&&"src"===(""+arguments[0]).toLowerCase()&&(this.srcObject=a.get(arguments[1])||null),l.apply(this,arguments)}}}}},{"./utils":50,sdp:39}],45:[function(e,t,n){"use strict";var r=e("../utils"),i=e("rtcpeerconnection-shim");t.exports={shimGetUserMedia:e("./getusermedia"),shimPeerConnection:function(e){var t=r.detectBrowser(e);if(e.RTCIceGatherer&&(e.RTCIceCandidate||(e.RTCIceCandidate=function(e){return e}),e.RTCSessionDescription||(e.RTCSessionDescription=function(e){return e}),t.version<15025)){var n=Object.getOwnPropertyDescriptor(e.MediaStreamTrack.prototype,"enabled");Object.defineProperty(e.MediaStreamTrack.prototype,"enabled",{set:function(e){n.set.call(this,e);var t=new Event("enabled");t.enabled=e,this.dispatchEvent(t)}})}e.RTCRtpSender&&!("dtmf"in e.RTCRtpSender.prototype)&&Object.defineProperty(e.RTCRtpSender.prototype,"dtmf",{get:function(){return void 0===this._dtmf&&("audio"===this.track.kind?this._dtmf=new e.RTCDtmfSender(this):"video"===this.track.kind&&(this._dtmf=null)),this._dtmf}}),e.RTCPeerConnection=i(e,t.version)},shimReplaceTrack:function(e){e.RTCRtpSender&&!("replaceTrack"in e.RTCRtpSender.prototype)&&(e.RTCRtpSender.prototype.replaceTrack=e.RTCRtpSender.prototype.setTrack)}}},{"../utils":50,"./getusermedia":46,"rtcpeerconnection-shim":34}],46:[function(e,t,n){"use strict";t.exports=function(e){var t=e&&e.navigator,n=t.mediaDevices.getUserMedia.bind(t.mediaDevices);t.mediaDevices.getUserMedia=function(e){return n(e).catch((function(e){return Promise.reject(function(e){return{name:{PermissionDeniedError:"NotAllowedError"}[e.name]||e.name,message:e.message,constraint:e.constraint,toString:function(){return this.name}}}(e))}))}}},{}],47:[function(e,t,n){"use strict";var r=e("../utils");t.exports={shimGetUserMedia:e("./getusermedia"),shimOnTrack:function(e){"object"==typeof e&&e.RTCPeerConnection&&!("ontrack"in e.RTCPeerConnection.prototype)&&Object.defineProperty(e.RTCPeerConnection.prototype,"ontrack",{get:function(){return this._ontrack},set:function(e){this._ontrack&&(this.removeEventListener("track",this._ontrack),this.removeEventListener("addstream",this._ontrackpoly)),this.addEventListener("track",this._ontrack=e),this.addEventListener("addstream",this._ontrackpoly=function(e){e.stream.getTracks().forEach(function(t){var n=new Event("track");n.track=t,n.receiver={track:t},n.transceiver={receiver:n.receiver},n.streams=[e.stream],this.dispatchEvent(n)}.bind(this))}.bind(this))}}),"object"==typeof e&&e.RTCTrackEvent&&"receiver"in e.RTCTrackEvent.prototype&&!("transceiver"in e.RTCTrackEvent.prototype)&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})},shimSourceObject:function(e){"object"==typeof e&&e.HTMLMediaElement&&!("srcObject"in e.HTMLMediaElement.prototype)&&Object.defineProperty(e.HTMLMediaElement.prototype,"srcObject",{get:function(){return this.mozSrcObject},set:function(e){this.mozSrcObject=e}})},shimPeerConnection:function(e){var t=r.detectBrowser(e);if("object"==typeof e&&(e.RTCPeerConnection||e.mozRTCPeerConnection)){e.RTCPeerConnection||(e.RTCPeerConnection=function(n,r){if(t.version<38&&n&&n.iceServers){for(var i=[],a=0;a<n.iceServers.length;a++){var o=n.iceServers[a];if(o.hasOwnProperty("urls"))for(var s=0;s<o.urls.length;s++){var l={url:o.urls[s]};0===o.urls[s].indexOf("turn")&&(l.username=o.username,l.credential=o.credential),i.push(l)}else i.push(n.iceServers[a])}n.iceServers=i}return new e.mozRTCPeerConnection(n,r)},e.RTCPeerConnection.prototype=e.mozRTCPeerConnection.prototype,e.mozRTCPeerConnection.generateCertificate&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return e.mozRTCPeerConnection.generateCertificate}}),e.RTCSessionDescription=e.mozRTCSessionDescription,e.RTCIceCandidate=e.mozRTCIceCandidate),["setLocalDescription","setRemoteDescription","addIceCandidate"].forEach((function(t){var n=e.RTCPeerConnection.prototype[t];e.RTCPeerConnection.prototype[t]=function(){return arguments[0]=new("addIceCandidate"===t?e.RTCIceCandidate:e.RTCSessionDescription)(arguments[0]),n.apply(this,arguments)}}));var n=e.RTCPeerConnection.prototype.addIceCandidate;e.RTCPeerConnection.prototype.addIceCandidate=function(){return arguments[0]?n.apply(this,arguments):(arguments[1]&&arguments[1].apply(null),Promise.resolve())};var i={inboundrtp:"inbound-rtp",outboundrtp:"outbound-rtp",candidatepair:"candidate-pair",localcandidate:"local-candidate",remotecandidate:"remote-candidate"},a=e.RTCPeerConnection.prototype.getStats;e.RTCPeerConnection.prototype.getStats=function(e,n,r){return a.apply(this,[e||null]).then((function(e){if(t.version<48&&(e=function(e){var t=new Map;return Object.keys(e).forEach((function(n){t.set(n,e[n]),t[n]=e[n]})),t}(e)),t.version<53&&!n)try{e.forEach((function(e){e.type=i[e.type]||e.type}))}catch(t){if("TypeError"!==t.name)throw t;e.forEach((function(t,n){e.set(n,Object.assign({},t,{type:i[t.type]||t.type}))}))}return e})).then(n,r)}}},shimRemoveStream:function(e){e.RTCPeerConnection&&!("removeStream"in e.RTCPeerConnection.prototype)&&(e.RTCPeerConnection.prototype.removeStream=function(e){var t=this;r.deprecated("removeStream","removeTrack"),this.getSenders().forEach((function(n){n.track&&-1!==e.getTracks().indexOf(n.track)&&t.removeTrack(n)}))})}}},{"../utils":50,"./getusermedia":48}],48:[function(e,t,n){"use strict";var r=e("../utils"),i=r.log;t.exports=function(e){var t=r.detectBrowser(e),n=e&&e.navigator,a=e&&e.MediaStreamTrack,o=function(e){return{name:{InternalError:"NotReadableError",NotSupportedError:"TypeError",PermissionDeniedError:"NotAllowedError",SecurityError:"NotAllowedError"}[e.name]||e.name,message:{"The operation is insecure.":"The request is not allowed by the user agent or the platform in the current context."}[e.message]||e.message,constraint:e.constraint,toString:function(){return this.name+(this.message&&": ")+this.message}}},s=function(e,r,a){var s=function(e){if("object"!=typeof e||e.require)return e;var t=[];return Object.keys(e).forEach((function(n){if("require"!==n&&"advanced"!==n&&"mediaSource"!==n){var r=e[n]="object"==typeof e[n]?e[n]:{ideal:e[n]};if(void 0===r.min&&void 0===r.max&&void 0===r.exact||t.push(n),void 0!==r.exact&&("number"==typeof r.exact?r.min=r.max=r.exact:e[n]=r.exact,delete r.exact),void 0!==r.ideal){e.advanced=e.advanced||[];var i={};"number"==typeof r.ideal?i[n]={min:r.ideal,max:r.ideal}:i[n]=r.ideal,e.advanced.push(i),delete r.ideal,Object.keys(r).length||delete e[n]}}})),t.length&&(e.require=t),e};return e=JSON.parse(JSON.stringify(e)),t.version<38&&(i("spec: "+JSON.stringify(e)),e.audio&&(e.audio=s(e.audio)),e.video&&(e.video=s(e.video)),i("ff37: "+JSON.stringify(e))),n.mozGetUserMedia(e,r,(function(e){a(o(e))}))};if(n.mediaDevices||(n.mediaDevices={getUserMedia:function(e){return new Promise((function(t,n){s(e,t,n)}))},addEventListener:function(){},removeEventListener:function(){}}),n.mediaDevices.enumerateDevices=n.mediaDevices.enumerateDevices||function(){return new Promise((function(e){e([{kind:"audioinput",deviceId:"default",label:"",groupId:""},{kind:"videoinput",deviceId:"default",label:"",groupId:""}])}))},t.version<41){var l=n.mediaDevices.enumerateDevices.bind(n.mediaDevices);n.mediaDevices.enumerateDevices=function(){return l().then(void 0,(function(e){if("NotFoundError"===e.name)return[];throw e}))}}if(t.version<49){var c=n.mediaDevices.getUserMedia.bind(n.mediaDevices);n.mediaDevices.getUserMedia=function(e){return c(e).then((function(t){if(e.audio&&!t.getAudioTracks().length||e.video&&!t.getVideoTracks().length)throw t.getTracks().forEach((function(e){e.stop()})),new DOMException("The object can not be found here.","NotFoundError");return t}),(function(e){return Promise.reject(o(e))}))}}if(!(t.version>55&&"autoGainControl"in n.mediaDevices.getSupportedConstraints())){var u=function(e,t,n){t in e&&!(n in e)&&(e[n]=e[t],delete e[t])},f=n.mediaDevices.getUserMedia.bind(n.mediaDevices);if(n.mediaDevices.getUserMedia=function(e){return"object"==typeof e&&"object"==typeof e.audio&&(e=JSON.parse(JSON.stringify(e)),u(e.audio,"autoGainControl","mozAutoGainControl"),u(e.audio,"noiseSuppression","mozNoiseSuppression")),f(e)},a&&a.prototype.getSettings){var d=a.prototype.getSettings;a.prototype.getSettings=function(){var e=d.apply(this,arguments);return u(e,"mozAutoGainControl","autoGainControl"),u(e,"mozNoiseSuppression","noiseSuppression"),e}}if(a&&a.prototype.applyConstraints){var h=a.prototype.applyConstraints;a.prototype.applyConstraints=function(e){return"audio"===this.kind&&"object"==typeof e&&(e=JSON.parse(JSON.stringify(e)),u(e,"autoGainControl","mozAutoGainControl"),u(e,"noiseSuppression","mozNoiseSuppression")),h.apply(this,[e])}}}n.getUserMedia=function(e,i,a){if(t.version<44)return s(e,i,a);r.deprecated("navigator.getUserMedia","navigator.mediaDevices.getUserMedia"),n.mediaDevices.getUserMedia(e).then(i,a)}}},{"../utils":50}],49:[function(e,t,n){"use strict";var r=e("../utils");t.exports={shimLocalStreamsAPI:function(e){if("object"==typeof e&&e.RTCPeerConnection){if("getLocalStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getLocalStreams=function(){return this._localStreams||(this._localStreams=[]),this._localStreams}),"getStreamById"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getStreamById=function(e){var t=null;return this._localStreams&&this._localStreams.forEach((function(n){n.id===e&&(t=n)})),this._remoteStreams&&this._remoteStreams.forEach((function(n){n.id===e&&(t=n)})),t}),!("addStream"in e.RTCPeerConnection.prototype)){var t=e.RTCPeerConnection.prototype.addTrack;e.RTCPeerConnection.prototype.addStream=function(e){this._localStreams||(this._localStreams=[]),-1===this._localStreams.indexOf(e)&&this._localStreams.push(e);var n=this;e.getTracks().forEach((function(r){t.call(n,r,e)}))},e.RTCPeerConnection.prototype.addTrack=function(e,n){return n&&(this._localStreams?-1===this._localStreams.indexOf(n)&&this._localStreams.push(n):this._localStreams=[n]),t.call(this,e,n)}}"removeStream"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.removeStream=function(e){this._localStreams||(this._localStreams=[]);var t=this._localStreams.indexOf(e);if(-1!==t){this._localStreams.splice(t,1);var n=this,r=e.getTracks();this.getSenders().forEach((function(e){-1!==r.indexOf(e.track)&&n.removeTrack(e)}))}})}},shimRemoteStreamsAPI:function(e){"object"==typeof e&&e.RTCPeerConnection&&("getRemoteStreams"in e.RTCPeerConnection.prototype||(e.RTCPeerConnection.prototype.getRemoteStreams=function(){return this._remoteStreams?this._remoteStreams:[]}),"onaddstream"in e.RTCPeerConnection.prototype||Object.defineProperty(e.RTCPeerConnection.prototype,"onaddstream",{get:function(){return this._onaddstream},set:function(e){this._onaddstream&&(this.removeEventListener("addstream",this._onaddstream),this.removeEventListener("track",this._onaddstreampoly)),this.addEventListener("addstream",this._onaddstream=e),this.addEventListener("track",this._onaddstreampoly=function(e){var t=e.streams[0];if(this._remoteStreams||(this._remoteStreams=[]),!(this._remoteStreams.indexOf(t)>=0)){this._remoteStreams.push(t);var n=new Event("addstream");n.stream=e.streams[0],this.dispatchEvent(n)}}.bind(this))}}))},shimCallbacksAPI:function(e){if("object"==typeof e&&e.RTCPeerConnection){var t=e.RTCPeerConnection.prototype,n=t.createOffer,r=t.createAnswer,i=t.setLocalDescription,a=t.setRemoteDescription,o=t.addIceCandidate;t.createOffer=function(e,t){var r=arguments.length>=2?arguments[2]:arguments[0],i=n.apply(this,[r]);return t?(i.then(e,t),Promise.resolve()):i},t.createAnswer=function(e,t){var n=arguments.length>=2?arguments[2]:arguments[0],i=r.apply(this,[n]);return t?(i.then(e,t),Promise.resolve()):i};var s=function(e,t,n){var r=i.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r};t.setLocalDescription=s,s=function(e,t,n){var r=a.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.setRemoteDescription=s,s=function(e,t,n){var r=o.apply(this,[e]);return n?(r.then(t,n),Promise.resolve()):r},t.addIceCandidate=s}},shimGetUserMedia:function(e){var t=e&&e.navigator;t.getUserMedia||(t.webkitGetUserMedia?t.getUserMedia=t.webkitGetUserMedia.bind(t):t.mediaDevices&&t.mediaDevices.getUserMedia&&(t.getUserMedia=function(e,n,r){t.mediaDevices.getUserMedia(e).then(n,r)}.bind(t)))},shimRTCIceServerUrls:function(e){var t=e.RTCPeerConnection;e.RTCPeerConnection=function(e,n){if(e&&e.iceServers){for(var i=[],a=0;a<e.iceServers.length;a++){var o=e.iceServers[a];!o.hasOwnProperty("urls")&&o.hasOwnProperty("url")?(r.deprecated("RTCIceServer.url","RTCIceServer.urls"),(o=JSON.parse(JSON.stringify(o))).urls=o.url,delete o.url,i.push(o)):i.push(e.iceServers[a])}e.iceServers=i}return new t(e,n)},e.RTCPeerConnection.prototype=t.prototype,"generateCertificate"in e.RTCPeerConnection&&Object.defineProperty(e.RTCPeerConnection,"generateCertificate",{get:function(){return t.generateCertificate}})},shimTrackEventTransceiver:function(e){"object"==typeof e&&e.RTCPeerConnection&&"receiver"in e.RTCTrackEvent.prototype&&!e.RTCTransceiver&&Object.defineProperty(e.RTCTrackEvent.prototype,"transceiver",{get:function(){return{receiver:this.receiver}}})},shimCreateOfferLegacy:function(e){var t=e.RTCPeerConnection.prototype.createOffer;e.RTCPeerConnection.prototype.createOffer=function(e){var n=this;if(e){var r=n.getTransceivers().find((function(e){return e.sender.track&&"audio"===e.sender.track.kind}));!1===e.offerToReceiveAudio&&r?"sendrecv"===r.direction?r.setDirection("sendonly"):"recvonly"===r.direction&&r.setDirection("inactive"):!0!==e.offerToReceiveAudio||r||n.addTransceiver("audio");var i=n.getTransceivers().find((function(e){return e.sender.track&&"video"===e.sender.track.kind}));!1===e.offerToReceiveVideo&&i?"sendrecv"===i.direction?i.setDirection("sendonly"):"recvonly"===i.direction&&i.setDirection("inactive"):!0!==e.offerToReceiveVideo||i||n.addTransceiver("video")}return t.apply(n,arguments)}}}},{"../utils":50}],50:[function(e,t,n){"use strict";var r=!0,i=!0;function a(e,t,n){var r=e.match(t);return r&&r.length>=n&&parseInt(r[n],10)}t.exports={extractVersion:a,disableLog:function(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(r=e,e?"adapter.js logging disabled":"adapter.js logging enabled")},disableWarnings:function(e){return"boolean"!=typeof e?new Error("Argument type: "+typeof e+". Please use a boolean."):(i=!e,"adapter.js deprecation warnings "+(e?"disabled":"enabled"))},log:function(){if("object"==typeof window){if(r)return;"undefined"!=typeof console&&"function"==typeof console.log&&console.log.apply(console,arguments)}},deprecated:function(e,t){i&&console.warn(e+" is deprecated, please use "+t+" instead.")},detectBrowser:function(e){var t=e&&e.navigator,n={browser:null,version:null};if(void 0===e||!e.navigator)return n.browser="Not a browser.",n;if(t.mozGetUserMedia)n.browser="firefox",n.version=a(t.userAgent,/Firefox\/(\d+)\./,1);else if(t.webkitGetUserMedia)if(e.webkitRTCPeerConnection)n.browser="chrome",n.version=a(t.userAgent,/Chrom(e|ium)\/(\d+)\./,2);else{if(!t.userAgent.match(/Version\/(\d+).(\d+)/))return n.browser="Unsupported webkit-based browser with GUM support but no WebRTC support.",n;n.browser="safari",n.version=a(t.userAgent,/AppleWebKit\/(\d+)\./,1)}else if(t.mediaDevices&&t.userAgent.match(/Edge\/(\d+).(\d+)$/))n.browser="edge",n.version=a(t.userAgent,/Edge\/(\d+).(\d+)$/,2);else{if(!t.mediaDevices||!t.userAgent.match(/AppleWebKit\/(\d+)\./))return n.browser="Not a supported browser.",n;n.browser="safari",n.version=a(t.userAgent,/AppleWebKit\/(\d+)\./,1)}return n}}},{}],51:[function(e,t,n){t.exports={name:"jssip",title:"JsSIP",description:"the Javascript SIP library",version:"3.2.11",homepage:"http://jssip.net",author:"José Luis Millán <[email-masked]> (https://github.com/jmillan)",contributors:["Iñaki Baz Castillo <[email-masked]> (https://github.com/ibc)","Saúl Ibarra Corretgé <[email-masked]> (https://github.com/saghul)"],main:"lib-es5/JsSIP.js",keywords:["sip","websocket","webrtc","node","browser","library"],license:"MIT",repository:{type:"git",url:"https://github.com/versatica/JsSIP.git"},bugs:{url:"https://github.com/versatica/JsSIP/issues"},dependencies:{debug:"^3.1.0",events:"^2.0.0","sdp-transform":"^2.4.1","webrtc-adapter":"^6.1.5"},devDependencies:{"ansi-colors":"^1.1.0","babel-core":"^6.26.0","babel-preset-env":"^1.6.1",browserify:"^16.2.0",eslint:"^4.19.1","fancy-log":"^1.3.2",gulp:"^4.0.0","gulp-babel":"^7.0.1","gulp-eslint":"^4.0.2","gulp-expect-file":"0.0.7","gulp-header":"^2.0.5","gulp-nodeunit-runner":"^0.2.2","gulp-plumber":"^1.2.0","gulp-rename":"^1.2.2","gulp-uglify":"^3.0.0",pegjs:"^0.7.0","vinyl-buffer":"^1.0.1","vinyl-source-stream":"^2.0.0"},scripts:{test:"gulp test",prepublishOnly:"gulp babel"}}},{}]},{},[8])(8)})),function(e,t){function n(e){return{scope:{selectedTemplate:"=",selectedTemplateName:"=",dateStart:"=?",dateEnd:"=?",firstDayOfWeek:"=?",showTemplate:"=?",mdOnSelect:"&",localizationMap:"=?",customTemplates:"=?",disableTemplates:"@",maxRange:"=?",onePanel:"=?",isDisabledDate:"&?",format:"=?"},template:'<div class="md-date-range-picker md-whiteframe-1dp" ng-class="{\'md-date-range-picker__one-panel\':onePanel}"><div layout="column"><div layout="row" layout-margin><div class="md-date-range-picker__calendar-wrapper"><div class="md-date-range-picker__month-year" layout="row" layout-align="center center"><div flex layout="column" layout-align="center center"><span aria-label="Previous Month" class="md-button md-icon-button" event-key="prev"><md-icon md-svg-src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4="></md-icon></span></div><md-select md-container-class="md-date-range-picker__select" md-on-close="updateActiveDate()" ng-model="activeMonth" placeholder="{{::getLocalizationVal(\'Month\')}}" class="md-no-underline"><md-option ng-value="::month.id" ng-repeat="month in months" ng-bind="::month.name"></md-option></md-select><md-select md-container-class="md-date-range-picker__select" md-on-close="updateActiveDate()" ng-model="activeYear" placeholder="{{::getLocalizationVal(\'Year\')}}" class="md-no-underline"><md-option ng-value="::year.id" ng-repeat="year in years" ng-bind="::year.name"></md-option></md-select><div flex layout="column" layout-align="center center" class="hide-gt-sm show-sm show-xs"><span aria-label="Next Month" class="md-icon-button md-button" event-key="next"><md-icon style="transform: rotate(-180deg)" md-svg-src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4="></md-icon></span></div><div flex ng-if="onePanel" layout="column" layout-align="center center" class="hide-sm hide-xs show-gt-sm"><span aria-label="Next Month" class="md-icon-button md-button" event-key="next"><md-icon style="transform: rotate(-180deg)" md-svg-src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4="></md-icon></span></div><div flex ng-if="!onePanel" layout="column" layout-align="center center" class="hide-sm hide-xs show-gt-sm"><span aria-label="Next Month" ng-disabled="true" aria-hidden="true" class="md-icon-button md-button"><md-icon></md-icon></span></div></div><div class="md-date-range-picker__week" style="font-size: 0"><span class="md-date-range-picker__calendar__grid" ng-repeat="day in days">{{::day.name}}</span></div><div class="md-date-range-picker__calendar"><span ng-repeat="date in dates" class="md-date-range-picker__calendar__grid" ng-class="{\'md-date-range-picker__calendar__selected\':inSelectedDateRange(date),\'md-date-range-picker__calendar__start\':isSelectedStartDate(date),\'md-date-range-picker__calendar__end\':isSelectedEndDate(date),\'md-date-range-picker__calendar__not-in-active-month\': !inCurrentMonth(date),\'md-date-range-picker__calendar__today\' : isToday(date),\'md-date-range-picker__calendar__disabled\': !isInMaxRange(date) || isDisabledDate({$date:date})}" event-key="date1" event-param="{{$index}}"><span event-key="date1" event-param="{{$index}}" class="md-date-range-picker__calendar__selection" ng-bind="{{::date.getDate()}}"></span></span></div></div><div ng-show="!onePanel" class="md-date-range-picker__calendar-wrapper hide-sm hide-xs show-gt-sm"><div class="md-date-range-picker__month-year" layout="row" layout-align="center center"><div flex layout="column" layout-align="center center" style="visibility: hidden"><span aria-label="Previous Month" class="md-button md-icon-button" event-key="prev"><md-icon md-svg-src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4="></md-icon></span></div><md-select md-container-class="md-date-range-picker__select" md-on-close="updateActiveDate(true)" ng-model="activeMonth2" placeholder="{{::getLocalizationVal(\'Month\')}}" class="md-no-underline"><md-option ng-value="::month.id" ng-repeat="month in months" ng-bind="::month.name"></md-option></md-select><md-select md-container-class="md-date-range-picker__select" md-on-close="updateActiveDate(true)" ng-model="activeYear2" placeholder="{{::getLocalizationVal(\'Year\')}}" class="md-no-underline"><md-option ng-value="::year.id" ng-repeat="year in years" ng-bind="::year.name"></md-option></md-select><div flex layout="column" layout-align="center center"><span aria-label="Next Month" class="md-icon-button md-button" event-key="next"><md-icon style="transform: rotate(-180deg)" md-svg-src="data:image/svg+xml;base64,PHN2ZyB2ZXJzaW9uPSIxLjEiIHg9IjBweCIgeT0iMHB4IiB2aWV3Qm94PSIwIDAgMjQgMjQiPjxnPjxwb2x5Z29uIHBvaW50cz0iMTUuNCw3LjQgMTQsNiA4LDEyIDE0LDE4IDE1LjQsMTYuNiAxMC44LDEyICIvPjwvZz48L3N2Zz4="></md-icon></span></div></div><div class="md-date-range-picker__week" style="font-size: 0" ng-if="!onePanel"><span class="md-date-range-picker__calendar__grid" ng-repeat="day in days">{{::day.name}}</span></div><div class="md-date-range-picker__calendar"><span ng-repeat="date in dates2" class="md-date-range-picker__calendar__grid" ng-class="{\'md-date-range-picker__calendar__selected\':inSelectedDateRange(date), \'md-date-range-picker__calendar__start\':isSelectedStartDate(date), \'md-date-range-picker__calendar__end\':isSelectedEndDate(date), \'md-date-range-picker__calendar__not-in-active-month\': !inCurrentMonth(date, true), \'md-date-range-picker__calendar__today\' : isToday(date),\'md-date-range-picker__calendar__disabled\': !isInMaxRange(date) || isDisabledDate({$date:date}) }" event-key="date2" event-param="{{$index}}"><span event-key="date2" event-param="{{$index}}" class="md-date-range-picker__calendar__selection" ng-bind="{{::date.getDate()}}"></span></span></div></div></div><div class="md-date-range-picker__templates" ng-if="showTemplate"><div ng-if="!onePanel && !maxRange" class="hide-xs hide-sm show-gt-sm" layout="row" layout-align="center center" layout-wrap><div ng-repeat="(tmpltKey,tmpltName) in selectionTemplate" class="md-button" aria-label="{{::tmpltName}}" ng-class="selectedTemplate === tmpltKey ? \'md-primary md-raised\' : \'\'" event-key="{{tmpltKey}}" ng-bind="::tmpltName" flex="20"></div><div ng-repeat="tmplt in customTemplates" class="md-button" aria-label="{{::tmplt.name}}" ng-class="selectedTemplate === tmplt.name ? \'md-primary md-raised\' : \'\'" ng-click="selectCustomRange(tmplt.name,tmplt)" event-key="Custom Template" ng-bind="::tmplt.name" flex="20"></div></div><div ng-if="!maxRange" ng-class="{\'hide-gt-sm\':!onePanel}" layout="column" layout-padding><md-input-container><label>{{::getLocalizationVal(\'Date Range Template\')}}</label><md-select md-container-class="md-date-range-picker__select" class="md-block" placeholder="{{::getLocalizationVal(\'Custom Date Range\')}}" ng-model="selectedTemplate"><md-option value=""></md-option><md-option ng-repeat="(tmpltKey,tmpltName) in selectionTemplate track by tmpltKey" aria-label="{{::tmpltName}}" ng-click="actionByKey(tmpltKey,null)" ng-bind="::tmpltName" value="{{tmpltKey}}"></md-option><md-option ng-repeat="tmplt in customTemplates" aria-label="{{::tmplt.name}}" ng-click="selectCustomRange(tmplt.name,tmplt)" ng-bind="::tmplt.name" value="{{::tmplt.name}}"></md-option></md-select></md-input-container></div></div></div></div>',controller:"mdDateRangePickerCtrl",link:function(t,n,r,i){t.actionByKey=function(e,n,r){switch(e){case"prev":t.handleClickPrevMonth(r),t.runIfNotInDigest();break;case"next":t.handleClickNextMonth(r),t.runIfNotInDigest();break;case"date1":t.handleClickDate(r,t.dates[n])?t.runIfNotInDigest(t.triggerChange):t.runIfNotInDigest();break;case"date2":t.handleClickDate(r,t.dates2[n])?t.runIfNotInDigest(t.triggerChange):t.runIfNotInDigest();break;case"TD":t.handleClickSelectToday(),t.runIfNotInDigest(t.triggerChange);break;case"YD":t.handleClickSelectYesterday(),t.runIfNotInDigest(t.triggerChange);break;case"TW":t.handleClickSelectThisWeek(),t.runIfNotInDigest(t.triggerChange);break;case"LW":t.handleClickSelectLastWeek(),t.runIfNotInDigest(t.triggerChange);break;case"TM":t.handleClickSelectThisMonth(),t.runIfNotInDigest(t.triggerChange);break;case"LM":t.handleClickSelectLastMonth(),t.runIfNotInDigest(t.triggerChange);break;case"TY":t.handleClickSelectThisYear(),t.runIfNotInDigest(t.triggerChange);break;case"LY":t.handleClickSelectLastYear(),t.runIfNotInDigest(t.triggerChange);break;case"Custom Template":t.runIfNotInDigest(t.triggerChange)}},t.runIfNotInDigest=function(e){null==t.$root||t.$root.$$phase||(t.$apply(),e&&"function"==typeof e&&e())},n.on("click",(function(e){var n=e.target.getAttribute("event-key"),r=e.target.getAttribute("event-param");t.actionByKey(n,r,e)})),t.triggerChange=function(n){var r=e.getSelectedDate(t.dateStart,t.dateEnd,t.isDisabledDate,t.maxRange);t.mdOnSelect&&t.mdOnSelect({$dates:r})}}}}function r(e,t){var n={TD:r("Today"),YD:r("Yesterday"),TW:r("This Week"),LW:r("Last Week"),TM:r("This Month"),LM:r("Last Month"),TY:r("This Year"),LY:r("Last Year")};function r(t){return null!=e.localizationMap&&null!=e.localizationMap[t]?e.localizationMap[t]:t}function i(){return-1!==[void 0,null,"",NaN].indexOf(e.firstDayOfWeek)||-1===[0,1,2,3,4,5,6].indexOf(e.firstDayOfWeek)?1:e.firstDayOfWeek}function a(e){var t,n,r=[],a=(new Date(e.getFullYear(),e.getMonth(),1),new Date(e.getFullYear(),e.getMonth()+1,0)),o=i();for(t=1;t<=a.getDate();t++)r.push(new Date(e.getFullYear(),e.getMonth(),t));for(n=r[0].getDay(),t=0;n!==o;)r.unshift(new Date(e.getFullYear(),e.getMonth(),t)),n=n<=0?6:n-1,t--;for(n=(r[r.length-1].getDay()+1)%7,t=1;n!==o;)r.push(new Date(e.getFullYear(),e.getMonth()+1,t)),n=(n+1)%7,t++;return r}function o(e,t){if(e&&t){var n=new Date(e.getFullYear(),e.getMonth(),e.getDate());return new Date(t.getFullYear(),t.getMonth(),t.getDate())-n}}SELECTION_TEMPLATES_CUSTOM={},e.isMenuContainer=!1,e.days=[],e.label="Date range picker",e.dates=[],e.dates2=[],e.numberOfMonthToDisplay=2,e.today=new Date,e.dateStart&&e.dateStart.setHours(0,0,0,0),e.dateEnd&&e.dateEnd.setHours(23,59,59,999),e.firstDayOfMonth=e.dateStart?new Date(e.dateStart.getFullYear(),e.dateStart.getMonth(),1):Date(e.today.getFullYear(),e.today.getMonth(),1),e.lastDayOfMonth=e.dateStart?new Date(e.dateStart.getFullYear(),e.dateStart.getMonth()+1,0):Date(e.today.getFullYear(),e.today.getMonth()+1,0),e.activeDate=e.dateStart||e.today,e.activeDate2=new Date(e.activeDate.getFullYear(),e.activeDate.getMonth()+1,1),e.activeMonth=e.activeDate.getMonth(),e.activeYear=e.activeDate.getFullYear(),e.activeMonth2=e.activeDate2.getMonth(),e.activeYear2=e.activeDate2.getFullYear(),e.months=[],e.years=[],e.inCurrentMonth=function(t,n){return n?t.getMonth()===e.activeMonth2&&t.getFullYear()===e.activeYear2:t.getMonth()===e.activeMonth&&t.getFullYear()===e.activeYear},e.isToday=function(e){return 0===o(e,new Date)},e.handleClickDate=function(t,n){var r=!1,i=!1;if(0===o(e.dateStart,e.dateEnd)){if(0===o(e.dateStart,n))i=!0,r=!0;else if(!e.isDisabledDate||!e.isDisabledDate({$date:n})){var a=o(e.dateStart,n);a>0?(e.maxRange&&Math.abs(Math.ceil(a/864e5))+1<=e.maxRange||!e.maxRange)&&(e.dateEnd=n,i=!0,r=!0):(e.maxRange&&Math.abs(Math.ceil(a/864e5))+1<=e.maxRange||!e.maxRange)&&(e.dateStart=n,i=!0,r=!0)}}else e.isDisabledDate&&e.isDisabledDate({$date:n})||(e.dateStart=n,e.dateEnd=n,r=!0);r&&(e.selectedTemplate=!1,e.selectedTemplateName=e.selectedDateText());return i},e.inSelectedDateRange=function(t){return!(!e.dateStart||!e.dateEnd)&&(o(e.dateStart,t)>=0&&0<=o(t,e.dateEnd))},e.isSelectedStartDate=function(t){return 0===o(e.dateStart,t)},e.isSelectedEndDate=function(t){return 0===o(e.dateEnd,t)},e.updateActiveDate=function(t){var n=new Date(e.activeYear,e.activeMonth,1),r=new Date(e.activeYear2,e.activeMonth2,1);t?(n=new Date(e.activeYear2,e.activeMonth2-1,1),e.activeYear=n.getFullYear(),e.activeMonth=n.getMonth()):(r=new Date(e.activeYear,e.activeMonth+1,1),e.activeYear2=r.getFullYear(),e.activeMonth2=r.getMonth());e.focusToDate(n)},e.selectedDateText=function(){return e.format&&"function"==typeof e.format?e.format(e.dateStart,e.dateEnd,e.selectedTemplate,e.selectedTemplateName):e.dateStart&&e.dateEnd?e.selectedTemplate?null!=SELECTION_TEMPLATES_CUSTOM&&null!=SELECTION_TEMPLATES_CUSTOM[e.selectedTemplate]?SELECTION_TEMPLATES_CUSTOM[e.selectedTemplate].name:n[e.selectedTemplate]:0===o(e.dateStart,e.dateEnd)?t("date")(e.dateStart,"dd MMM yyyy"):t("date")(e.dateStart,"dd"+(e.dateStart.getMonth()!==e.dateEnd.getMonth()||e.dateStart.getFullYear()!==e.dateEnd.getFullYear()?" MMM":"")+(e.dateStart.getFullYear()!==e.dateEnd.getFullYear()?" yyyy":""))+" - "+t("date")(e.dateEnd,"dd MMM yyyy"):""},e.focusToDate=function(t){var n=new Date(t.getFullYear(),t.getMonth()+1,1);e.activeDate=t,e.activeMonth=t.getMonth(),e.activeYear=t.getFullYear(),e.activeDate2=n,e.activeMonth2=n.getMonth(),e.activeYear2=n.getFullYear(),e.dates=a(t),e.dates2=a(n)},e.handleClickNextMonth=function(t){var n=new Date(e.activeDate.getFullYear(),e.activeDate.getMonth()+1,1);e.focusToDate(n)},e.handleClickPrevMonth=function(t){var n=new Date(e.activeDate.getFullYear(),e.activeDate.getMonth()-1,1);e.focusToDate(n)},e.handleClickSelectToday=function(){var t=new Date,n=new Date(t.getFullYear(),t.getMonth(),t.getDate());e.dateStart=n,e.dateEnd=n,e.selectedTemplate="TD",e.selectedTemplateName=e.selectedDateText()},e.handleClickSelectYesterday=function(){var t=new Date,n=new Date(t.getFullYear(),t.getMonth(),t.getDate()-1);e.dateStart=n,e.dateEnd=n,e.selectedTemplate="YD",e.selectedTemplateName=e.selectedDateText()},e.handleClickSelectThisWeek=function(){var t=new Date,n=new Date(t.getFullYear(),t.getMonth(),t.getDate()),r=new Date(n.getFullYear(),n.getMonth(),n.getDate()-(n.getDay()-i())),a=new Date(n.getFullYear(),n.getMonth(),n.getDate()+(6-n.getDay()+i()));e.dateStart=r,e.dateEnd=a,e.selectedTemplate="TW",e.selectedTemplateName=e.selectedDateText()},e.handleClickSelectLastWeek=function(){var t=new Date,n=new Date(t.getFullYear(),t.getMonth(),t.getDate()-7),r=new Date(n.getFullYear(),n.getMonth(),n.getDate()-(n.getDay()-i())),a=new Date(n.getFullYear(),n.getMonth(),n.getDate()+(6-n.getDay()+i()));e.dateStart=r,e.dateEnd=a,e.selectedTemplate="LW",e.selectedTemplateName=e.selectedDateText()},e.handleClickSelectThisMonth=function(){var t=new Date,n=new Date(t.getFullYear(),t.getMonth(),1),r=new Date(t.getFullYear(),t.getMonth()+1,0);e.dateStart=n,e.dateEnd=r,e.selectedTemplate="TM",e.selectedTemplateName=e.selectedDateText()},e.handleClickSelectLastMonth=function(){var t=new Date,n=new Date(t.getFullYear(),t.getMonth(),0),r=new Date(n.getFullYear(),n.getMonth(),1),i=new Date(n.getFullYear(),n.getMonth()+1,0);e.dateStart=r,e.dateEnd=i,e.selectedTemplate="LM",e.selectedTemplateName=e.selectedDateText()},e.handleClickSelectThisYear=function(){var t=new Date,n=new Date(t.getFullYear(),0,1),r=new Date(t.getFullYear(),11,31);e.dateStart=n,e.dateEnd=r,e.selectedTemplate="TY",e.selectedTemplateName=e.selectedDateText()},e.handleClickSelectLastYear=function(){var t=new Date,n=new Date(t.getFullYear()-1,0,1),r=new Date(t.getFullYear()-1,11,31);e.dateStart=n,e.dateEnd=r,e.selectedTemplate="LY",e.selectedTemplateName=e.selectedDateText()},e.getLocalizationVal=r,e.selectCustomRange=function(t,n){e.dateStart=n.dateStart,e.dateEnd=n.dateEnd,e.selectedTemplate=t,e.selectedTemplateName=e.selectedDateText()},e.isInMaxRange=function(t){if(!e.dateStart)return!0;if(0!==o(e.dateStart,e.dateEnd))return!0;var n=o(e.dateStart,t);return e.maxRange&&Math.abs(Math.ceil(n/864e5))+1<=e.maxRange||!e.maxRange},e.selectionTemplate={},function(){var a,o=0;if(null!=e.customTemplates)for(var s=0;s<e.customTemplates.length;s++)a=e.customTemplates[s],SELECTION_TEMPLATES_CUSTOM[a.name]=a;if(e.selectedTemplate){switch(e.selectedTemplate){case"TD":e.handleClickSelectToday();break;case"YD":e.handleClickSelectYesterday();break;case"TW":e.handleClickSelectThisWeek();break;case"LW":e.handleClickSelectLastWeek();break;case"TM":e.handleClickSelectThisMonth();break;case"LM":e.handleClickSelectLastMonth();break;case"TY":e.handleClickSelectThisYear();break;case"LY":e.handleClickSelectLastYear();break;default:SELECTION_TEMPLATES_CUSTOM&&SELECTION_TEMPLATES_CUSTOM[e.selectedTemplate]&&SELECTION_TEMPLATES_CUSTOM[e.selectedTemplate].dateStart&&SELECTION_TEMPLATES_CUSTOM[e.selectedTemplate].dateEnd&&(e.dateStart=SELECTION_TEMPLATES_CUSTOM[e.selectedTemplate].dateStart,e.dateEnd=SELECTION_TEMPLATES_CUSTOM[e.selectedTemplate].dateEnd),e.selectedTemplateName=e.selectedDateText()}e.updateActiveDate()}else e.selectedTemplate="",e.selectedTemplateName=e.selectedDateText(),e.updateActiveDate();e.$watch("selectedTemplate",(function(t,n){t===n||!e.dateStart||e.inCurrentMonth(e.dateStart)||e.inCurrentMonth(e.dateStart,!0)||e.focusToDate(e.dateStart)})),e.$watch("dateStart",(function(t,n){t===n||!e.dateStart||e.inCurrentMonth(e.dateStart)||e.inCurrentMonth(e.dateStart,!0)||e.focusToDate(e.dateStart)}));var l=new Date(2017,0,1);for(e.days=[],o=0;o<7;o++)l.setDate(o+1+i()),e.days.push({id:o,name:r(t("date")(l,"EEE"))});var c=null;for(e.months=[],o=0;o<12;o++)c=new Date(2017,o,1),e.months.push({id:o,name:r(t("date")(c,"MMMM"))});var u=e.activeYear,f=0;for(e.years=[],f=u-10;f<u+10;f++)e.years.push({id:f,name:r(f)});for(var d in n)n.hasOwnProperty(d)&&(null!=e.disableTemplates&&""!=e.disableTemplates?e.disableTemplates.indexOf(d)<0&&(e.selectionTemplate[d]=n[d]):e.selectionTemplate[d]=n[d])}()}function i(e){this.show=function(n){return e.show({locals:{mdDateRangePickerServiceModel:t.copy(n.model),mdDateRangePickerServiceConfig:t.copy(n)},controller:["$scope","mdDateRangePickerServiceModel","mdDateRangePickerServiceConfig",function(t,n,r){t.model=n||{},t.config=r||{},t.model.selectedTemplateName=t.model.selectedTemplateName||"",t.ok=function(){t.model.dateStart&&t.model.dateStart.setHours(0,0,0,0),t.model.dateEnd&&t.model.dateEnd.setHours(23,59,59,999),e.hide(t.model)},t.cancel=function(){e.cancel()},t.clear=function(){t.model.selectedTemplateName="",t.model.selectedTemplate=null,t.model.dateStart=null,t.model.dateEnd=null},t.handleOnSelect=function(e){"function"==typeof t.config.mdOnSelect&&t.config.mdOnSelect(e),t.config.autoConfirm&&t.ok()},t.getLocalizationVal=function(e){return t.model&&null!=t.model.localizationMap&&null!=t.model.localizationMap[e]?t.model.localizationMap[e]:e},t.model.customTemplates&&console.warn("model.customTemplates will be removed from model on next rlease, please use root config e.g. $mdDateRangePicker.show({customTemplates}) instead"),t.model.localizationMap&&console.warn("model.localizationMap will be removed from model on next rlease, please use root config e.g. $mdDateRangePicker.show({localizationMap}) instead"),t.model.firstDayOfWeek&&console.warn("model.firstDayOfWeek will be removed from model on next rlease, please use root config e.g. $mdDateRangePicker.show({firstDayOfWeek}) instead"),t.model.showTemplate&&console.warn("model.showTemplate will be removed from model on next rlease, please use root config e.g. $mdDateRangePicker.show({showTemplate}) instead"),t.model.maxRange&&console.warn("model.maxRange will be removed from model on next rlease, please use root config e.g. $mdDateRangePicker.show({maxRange}) instead"),t.model.onePanel&&console.warn("model.onePanel will be removed from model on next rlease, please use root config e.g. $mdDateRangePicker.show({onePanel}) instead"),t.model.isDisabledDate&&console.warn("model.isDisabledDate({ $date: $date }) will be removed from model on next rlease, please use root config e.g. $mdDateRangePicker.show({isDisabledDate:($date)=>{}}) instead")}],template:['<md-dialog aria-label="Date Range Picker">','<md-toolbar class="md-primary" layout="row" layout-align="start center">','<md-button aria-label="Date Range Picker" class="md-icon-button" aria-hidden="true" ng-disabled="true">','<md-icon md-svg-icon="data:image/svg+xml;base64,PHN2ZyBmaWxsPSIjRkZGRkZGIiBoZWlnaHQ9IjI0IiB2aWV3Qm94PSIwIDAgMjQgMjQiIHdpZHRoPSIyNCIgeG1sbnM9Imh0dHA6Ly93d3cudzMub3JnLzIwMDAvc3ZnIj4KICAgIDxwYXRoIGQ9Ik05IDExSDd2Mmgydi0yem00IDBoLTJ2Mmgydi0yem00IDBoLTJ2Mmgydi0yem0yLTdoLTFWMmgtMnYySDhWMkg2djJINWMtMS4xMSAwLTEuOTkuOS0xLjk5IDJMMyAyMGMwIDEuMS44OSAyIDIgMmgxNGMxLjEgMCAyLS45IDItMlY2YzAtMS4xLS45LTItMi0yem0wIDE2SDVWOWgxNHYxMXoiLz4KICAgIDxwYXRoIGQ9Ik0wIDBoMjR2MjRIMHoiIGZpbGw9Im5vbmUiLz4KPC9zdmc+"></md-icon>',"</md-button>",'<span md-truncate class="md-toolbar-tools">{{model.selectedTemplateName}}</span>',"</md-toolbar>","<md-dialog-content>","<md-date-range-picker ",'date-start="model.dateStart" ','date-end="model.dateEnd" ','show-template="config.showTemplate || model.showTemplate" ','selected-template="model.selectedTemplate" ','selected-template-name="model.selectedTemplateName" ','first-day-of-week="config.firstDayOfWeek || model.firstDayOfWeek" ','localization-map="config.localizationMap || model.localizationMap" ','custom-templates="config.customTemplates || model.customTemplates" ','format="config.format" ','disable-templates="{{model.disableTemplates}}" ','md-on-select="handleOnSelect($dates)" ','is-disabled-date="config.isDisabledDate ? config.isDisabledDate($date) : model.isDisabledDate({ $date: $date })" ','max-range="config.maxRange || model.maxRange" ','one-panel="config.onePanel || model.onePanel" ',">","</md-date-range-picker>","</md-dialog-content>",'<md-dialog-actions layout="row" layout-align="end center">','<md-button ng-click="cancel()">{{getLocalizationVal("Cancel")}}</md-button>','<md-button ng-if="!config.autoConfirm" class="md-raised" ng-click="clear()">{{getLocalizationVal("Clear")}}</md-button>','<md-button ng-if="!config.autoConfirm" class="md-raised md-primary" ng-click="ok()">{{getLocalizationVal("Ok")}}</md-button>',"</md-dialog-actions>","</md-dialog>"].join(""),parent:t.element(document.body),multiple:n.multiple,targetEvent:n.targetEvent||document.body,clickOutsideToClose:!0,fullscreen:n.model.fullscreen})},this.getSelectedDate=function(e,t,n,r){var i=[],a=t.getTime(),o=e,s=0,l=e.getFullYear(),c=e.getMonth(),u=e.getDate();for(;o.getTime()<=a&&(n&&!n({$date:o})&&i.push(o),s++,o=new Date(l,c,u+s),!(s>(r||1e4))););return i}}t.module("ngMaterialDateRangePicker",["ngMaterial"]).directive("mdDateRangePicker",n).directive("mdDateRange",(function(){return{scope:{ngModel:"=ngModel",autoConfirm:"=autoConfirm",ngDisabled:"=ngDisabled",showTemplate:"=",placeholder:"@",isDisabledDate:"&",localizationMap:"=?",customTemplates:"=?",disableTemplates:"@",mdOnSelect:"&",onePanel:"=?",format:"=?",maxRange:"=?",firstDayOfWeek:"=?"},template:['<md-menu ng-disabled="ngDisabled">','<span class="md-select-value" ng-click="!ngDisabled && (($mdMenu && $mdMenu.open) ? $mdMenu.open($event) : $mdOpenMenu($event))">',"  <span>{{ngModel.selectedTemplateName || placeholder}}</span>",'  <span class="md-select-icon" aria-hidden="true"></span>',"</span>",'<md-menu-content class="md-custom-menu-content" style="max-height: none!important; height: auto!important; padding: 0!important;">','    <span style="text-align: left; padding: 12px 20px 0 20px" disabled>{{ngModel.selectedTemplateName || placeholder}}</span>','    <md-date-range-picker first-day-of-week="firstDayOfWeek" ','     md-on-select="autoConfirm && ok($dates)" ','     date-start="ngModel.dateStart" ','     date-end="ngModel.dateEnd" ','     selected-template="ngModel.selectedTemplate" ','     show-template="showTemplate" ','     localization-map="localizationMap" ','     custom-templates="customTemplates" ','     disable-templates="{{disableTemplates}}" ','     is-disabled-date="isDisabledDate({ $date: $date })" ','     max-range="maxRange" ','     one-panel="onePanel" ','     format="format" ','     selected-template-name="ngModel.selectedTemplateName"></md-date-range-picker>','<p ng-if="!autoConfirm" layout="row" layout-align="end center">','<md-button ng-if="ngModel.showClear" class="md-raised" ng-click="clear()">{{getLocalizationVal("Clear")}}</md-button>','<md-button class="md-raised md-primary" ng-click="ok()">{{getLocalizationVal("Ok")}}</md-button>',"</p>","</md-menu-content>","</md-menu>"].join(""),controller:["$scope","$mdMenu",function(e,t){e.ok=function(n){e.mdOnSelect({$dates:n}),t.hide()},e.clear=function(){e.ngModel.selectedTemplateName="",e.ngModel.selectedTemplate=null,e.ngModel.dateStart=null,e.ngModel.dateEnd=null},e.getLocalizationVal=function(t){return e.ngModel&&null!=e.ngModel.localizationMap&&null!=e.ngModel.localizationMap[t]?e.ngModel.localizationMap[t]:t}}]}})).controller("mdDateRangePickerCtrl",r).service("$mdDateRangePicker",i),n.$inject=["$mdDateRangePicker"],r.$inject=["$scope","$filter"],i.$inject=["$mdDialog"]}(window,angular),function(){var e,t="Fake/5.0 (FakeOS) AppleWebKit/123 (KHTML, like Gecko) Fake/12.3.4567.89 Fake/123.45";if(b="object"==typeof process&&"object"==typeof process.versions&&process.versions.node&&!process.browser){var n=process.versions.node.toString().replace("v","");t="Nodejs/"+n+" (NodeOS) AppleWebKit/"+n+" (KHTML, like Gecko) Nodejs/"+n+" Nodejs/"+n}e="undefined"!=typeof global?global:window,"undefined"==typeof window&&("undefined"==typeof window&&"undefined"!=typeof global&&(global.navigator={userAgent:t,getUserMedia:function(){}},e.window=global),"undefined"==typeof location&&(e.location={protocol:"file:",href:"",hash:""}),"undefined"==typeof screen&&(e.screen={width:0,height:0}));var r=window.navigator;void 0!==r?(void 0!==r.webkitGetUserMedia&&(r.getUserMedia=r.webkitGetUserMedia),void 0!==r.mozGetUserMedia&&(r.getUserMedia=r.mozGetUserMedia)):r={getUserMedia:function(){},userAgent:t};var i=!!/Android|webOS|iPhone|iPad|iPod|BB10|BlackBerry|IEMobile|Opera Mini|Mobile|mobile/i.test(r.userAgent||""),a=!(-1===r.userAgent.indexOf("Edge")||!r.msSaveOrOpenBlob&&!r.msSaveBlob),o=!!window.opera||r.userAgent.indexOf(" OPR/")>=0,s=r.userAgent.toLowerCase().indexOf("firefox")>-1&&"netscape"in window&&/ rv:/.test(r.userAgent),l=/^((?!chrome|android).)*safari/i.test(r.userAgent),c=!!window.chrome&&!o,u="undefined"!=typeof document&&!!document.documentMode&&!a;function f(e,t){var n=0,r=!1,i=window.setInterval((function(){e()&&(window.clearInterval(i),t(r)),n++>50&&(window.clearInterval(i),t(r=!0))}),10)}var d={Android:function(){return r.userAgent.match(/Android/i)},BlackBerry:function(){return r.userAgent.match(/BlackBerry|BB10/i)},iOS:function(){return r.userAgent.match(/iPhone|iPad|iPod/i)},Opera:function(){return r.userAgent.match(/Opera Mini/i)},Windows:function(){return r.userAgent.match(/IEMobile/i)},any:function(){return d.Android()||d.BlackBerry()||d.iOS()||d.Opera()||d.Windows()},getOsName:function(){var e="Unknown OS";return d.Android()&&(e="Android"),d.BlackBerry()&&(e="BlackBerry"),d.iOS()&&(e="iOS"),d.Opera()&&(e="Opera Mini"),d.Windows()&&(e="Windows"),e}};var h="Unknown OS",p="Unknown OS Version";var m,g,_=function(){for(var e,t=r.appVersion,n=r.userAgent,i="-",a=[{s:"Chrome OS",r:/CrOS/},{s:"Windows 10",r:/(Windows 10.0|Windows NT 10.0)/},{s:"Windows 8.1",r:/(Windows 8.1|Windows NT 6.3)/},{s:"Windows 8",r:/(Windows 8|Windows NT 6.2)/},{s:"Windows 7",r:/(Windows 7|Windows NT 6.1)/},{s:"Windows Vista",r:/Windows NT 6.0/},{s:"Windows Server 2003",r:/Windows NT 5.2/},{s:"Windows XP",r:/(Windows NT 5.1|Windows XP)/},{s:"Windows 2000",r:/(Windows NT 5.0|Windows 2000)/},{s:"Windows ME",r:/(Win 9x 4.90|Windows ME)/},{s:"Windows 98",r:/(Windows 98|Win98)/},{s:"Windows 95",r:/(Windows 95|Win95|Windows_95)/},{s:"Windows NT 4.0",r:/(Windows NT 4.0|WinNT4.0|WinNT|Windows NT)/},{s:"Windows CE",r:/Windows CE/},{s:"Windows 3.11",r:/Win16/},{s:"Android",r:/Android/},{s:"Open BSD",r:/OpenBSD/},{s:"Sun OS",r:/SunOS/},{s:"Linux",r:/(Linux|X11)/},{s:"iOS",r:/(iPhone|iPad|iPod)/},{s:"Mac OS X",r:/Mac OS X/},{s:"Mac OS",r:/(MacPPC|MacIntel|Mac_PowerPC|Macintosh)/},{s:"QNX",r:/QNX/},{s:"UNIX",r:/UNIX/},{s:"BeOS",r:/BeOS/},{s:"OS/2",r:/OS\/2/},{s:"Search Bot",r:/(nuhk|Googlebot|Yammybot|Openbot|Slurp|MSNBot|Ask Jeeves\/Teoma|ia_archiver)/}],o=0;e=a[o];o++)if(e.r.test(n)){i=e.s;break}var s="-";switch(/Windows/.test(i)&&(/Windows (.*)/.test(i)&&(s=/Windows (.*)/.exec(i)[1]),i="Windows"),i){case"Mac OS X":/Mac OS X (10[\.\_\d]+)/.test(n)&&(s=/Mac OS X (10[\.\_\d]+)/.exec(n)[1]);break;case"Android":/Android ([\.\_\d]+)/.test(n)&&(s=/Android ([\.\_\d]+)/.exec(n)[1]);break;case"iOS":/OS (\d+)_(\d+)_?(\d+)?/.test(n)&&(s=(s=/OS (\d+)_(\d+)_?(\d+)?/.exec(t))[1]+"."+s[2]+"."+(0|s[3]))}return{osName:i,osVersion:s}}();_&&_.osName&&"-"!=_.osName?(h=_.osName,p=_.osVersion):d.any()&&"Android"==(h=d.getOsName())&&(p=!!(g=(m=(m||r.userAgent).toLowerCase()).match(/android\s([0-9\.]*)/))&&g[1]);var b="object"==typeof process&&"object"==typeof process.versions&&process.versions.node;"Unknown OS"===h&&b&&(h="Nodejs",p=process.versions.node.toString().replace("v",""));var v=!1,y=!1;["captureStream","mozCaptureStream","webkitCaptureStream"].forEach((function(e){"undefined"!=typeof document&&"function"==typeof document.createElement&&(!v&&e in document.createElement("canvas")&&(v=!0),!y&&e in document.createElement("video")&&(y=!0))}));var w=/^(192\.168\.|169\.254\.|10\.|172\.(1[6-9]|2\d|3[01]))/,C=/([0-9]{1,3}(\.[0-9]{1,3}){3})/,A=/[a-f0-9]{1,4}(:[a-f0-9]{1,4}){7}/;var S=[],x=[],T=[],k=[];r.mediaDevices&&r.mediaDevices.enumerateDevices&&(r.enumerateDevices=function(e){var t=r.mediaDevices.enumerateDevices();t&&t.then?r.mediaDevices.enumerateDevices().then(e).catch((function(){e([])})):e([])});var E=!1;("undefined"!=typeof MediaStreamTrack&&"getSources"in MediaStreamTrack||r.mediaDevices&&r.mediaDevices.enumerateDevices)&&(E=!0);var D=!1,I=!1,P=!1,M=!1,$=!1;function O(e){if(E)if(!r.enumerateDevices&&window.MediaStreamTrack&&window.MediaStreamTrack.getSources&&(r.enumerateDevices=window.MediaStreamTrack.getSources.bind(window.MediaStreamTrack)),!r.enumerateDevices&&r.enumerateDevices&&(r.enumerateDevices=r.enumerateDevices.bind(r)),r.enumerateDevices){S=[],x=[],T=[],k=[],D=!1,I=!1,P=!1,M=!1,$=!1;var t={};r.enumerateDevices((function(n){S=[],x=[],T=[],k=[],n.forEach((function(e){var n={};for(var r in e)try{"function"!=typeof e[r]&&(n[r]=e[r])}catch(e){}t[n.deviceId+n.label+n.kind]||("audio"===n.kind&&(n.kind="audioinput"),"video"===n.kind&&(n.kind="videoinput"),n.deviceId||(n.deviceId=n.id),n.id||(n.id=n.deviceId),n.label?("videoinput"!==n.kind||$||($=!0),"audioinput"!==n.kind||M||(M=!0)):(n.isCustomLabel=!0,"videoinput"===n.kind?n.label="Camera "+(k.length+1):"audioinput"===n.kind?n.label="Microphone "+(x.length+1):"audiooutput"===n.kind?n.label="Speaker "+(T.length+1):n.label="Please invoke getUserMedia once.",void 0!==R&&R.browser.isChrome&&R.browser.version>=46&&!/^(https:|chrome-extension:)$/g.test(location.protocol||"")&&"undefined"!=typeof document&&"string"==typeof document.domain&&document.domain.search&&-1===document.domain.search(/localhost|127.0./g)&&(n.label="HTTPs is required to get label of this "+n.kind+" device.")),"audioinput"===n.kind&&(D=!0,-1===x.indexOf(n)&&x.push(n)),"audiooutput"===n.kind&&(I=!0,-1===T.indexOf(n)&&T.push(n)),"videoinput"===n.kind&&(P=!0,-1===k.indexOf(n)&&k.push(n)),S.push(n),t[n.deviceId+n.label+n.kind]=n)})),void 0!==R&&(R.MediaDevices=S,R.hasMicrophone=D,R.hasSpeakers=I,R.hasWebcam=P,R.isWebsiteHasWebcamPermissions=$,R.isWebsiteHasMicrophonePermissions=M,R.audioInputDevices=x,R.audioOutputDevices=T,R.videoInputDevices=k),e&&e()}))}else e&&e();else e&&e()}var R=window.DetectRTC||{};R.browser=function(){r.appVersion;var e,t,n,i=r.userAgent,f=r.appName,d=""+parseFloat(r.appVersion),h=parseInt(r.appVersion,10);if(o){f="Opera";try{h=(d=r.userAgent.split("OPR/")[1].split(" ")[0]).split(".")[0]}catch(e){d="0.0.0.0",h=0}}else u?((t=i.indexOf("rv:"))>0?d=i.substring(t+3):(t=i.indexOf("MSIE"),d=i.substring(t+5)),f="IE"):c?(t=i.indexOf("Chrome"),f="Chrome",d=i.substring(t+7)):l?-1!==i.indexOf("CriOS")?(t=i.indexOf("CriOS"),f="Chrome",d=i.substring(t+6)):-1!==i.indexOf("FxiOS")?(t=i.indexOf("FxiOS"),f="Firefox",d=i.substring(t+6)):(t=i.indexOf("Safari"),f="Safari",d=i.substring(t+7),-1!==(t=i.indexOf("Version"))&&(d=i.substring(t+8)),-1!==r.userAgent.indexOf("Version/")&&(d=r.userAgent.split("Version/")[1].split(" ")[0])):s?(t=i.indexOf("Firefox"),f="Firefox",d=i.substring(t+8)):(e=i.lastIndexOf(" ")+1)<(t=i.lastIndexOf("/"))&&(f=i.substring(e,t),d=i.substring(t+1),f.toLowerCase()===f.toUpperCase()&&(f=r.appName));return a&&(f="Edge",d=r.userAgent.split("Edge/")[1]),-1!==(n=d.search(/[; \)]/))&&(d=d.substring(0,n)),h=parseInt(""+d,10),isNaN(h)&&(d=""+parseFloat(r.appVersion),h=parseInt(r.appVersion,10)),{fullVersion:d,version:h,name:f,isPrivateBrowsing:!1}}(),function(e){var t;try{if(window.webkitRequestFileSystem)window.webkitRequestFileSystem(window.TEMPORARY,1,(function(){t=!1}),(function(e){t=!0}));else if(window.indexedDB&&/Firefox/.test(window.navigator.userAgent)){var n;try{(n=window.indexedDB.open("test")).onerror=function(){return!0}}catch(e){t=!0}void 0===t&&f((function(){return"done"===n.readyState}),(function(e){e||(t=!n.result)}))}else if(function(e){var t=e.toLowerCase();if(0===t.indexOf("msie")&&0===t.indexOf("trident"))return!1;var n=/(?:msie|rv:)\s?([\d\.]+)/.exec(t);return!!(n&&parseInt(n[1],10)>=10)}(window.navigator.userAgent)){t=!1;try{window.indexedDB||(t=!0)}catch(e){t=!0}}else if(window.localStorage&&/Safari/.test(window.navigator.userAgent)){try{window.localStorage.setItem("test",1)}catch(e){t=!0}void 0===t&&(t=!1,window.localStorage.removeItem("test"))}}catch(e){t=!1}f((function(){return void 0!==t}),(function(n){e(t)}))}((function(e){R.browser.isPrivateBrowsing=!!e})),R.browser["is"+R.browser.name]=!0,R.osName=h,R.osVersion=p;"object"==typeof process&&"object"==typeof process.versions&&process.versions["node-webkit"];var N=!1;["RTCPeerConnection","webkitRTCPeerConnection","mozRTCPeerConnection","RTCIceGatherer"].forEach((function(e){N||e in window&&(N=!0)})),R.isWebRTCSupported=N,R.isORTCSupported="undefined"!=typeof RTCIceGatherer;var L=!1;((R.browser.isChrome&&R.browser.version>=35||R.browser.isFirefox&&R.browser.version>=34||R.browser.isEdge&&R.browser.version>=17||"Android"===R.osName&&R.browser.isChrome)&&(L=!0),(r.getDisplayMedia||r.mediaDevices&&r.mediaDevices.getDisplayMedia)&&(L=!0),/^(https:|chrome-extension:)$/g.test(location.protocol||""))||("undefined"!=typeof document&&"string"==typeof document.domain&&document.domain.search&&-1===document.domain.search(/localhost|127.0./g)&&(R.browser.isChrome||R.browser.isEdge||R.browser.isOpera)||R.browser.isFirefox)&&(L=!1);R.isScreenCapturingSupported=L;var F={isSupported:!1,isCreateMediaStreamSourceSupported:!1};["AudioContext","webkitAudioContext","mozAudioContext","msAudioContext"].forEach((function(e){F.isSupported||e in window&&(F.isSupported=!0,window[e]&&"createMediaStreamSource"in window[e].prototype&&(F.isCreateMediaStreamSourceSupported=!0))})),R.isAudioContextSupported=F.isSupported,R.isCreateMediaStreamSourceSupported=F.isCreateMediaStreamSourceSupported;var G=!1;R.browser.isChrome&&R.browser.version>31&&(G=!0),R.isRtpDataChannelsSupported=G;var j=!1;(R.browser.isFirefox&&R.browser.version>28||R.browser.isChrome&&R.browser.version>25||R.browser.isOpera&&R.browser.version>=11)&&(j=!0),R.isSctpDataChannelsSupported=j,R.isMobileDevice=i;var B=!1;(r.getUserMedia||r.mediaDevices&&r.mediaDevices.getUserMedia)&&(B=!0),R.browser.isChrome&&R.browser.version>=46&&!/^(https:|chrome-extension:)$/g.test(location.protocol||"")&&"undefined"!=typeof document&&"string"==typeof document.domain&&document.domain.search&&-1===document.domain.search(/localhost|127.0./g)&&(B="Requires HTTPs"),"Nodejs"===R.osName&&(B=!1),R.isGetUserMediaSupported=B;var U,H,W,q="";screen.width&&(q+=(screen.width?screen.width:"")+" x "+(screen.height?screen.height:""));R.displayResolution=q,R.displayAspectRatio=(U=screen.width,H=screen.height,W=function e(t,n){return 0==n?t:e(n,t%n)}(U,H),U/W/(H/W)).toFixed(2),R.isCanvasSupportsStreamCapturing=v,R.isVideoSupportsStreamCapturing=y,"Chrome"==R.browser.name&&R.browser.version>=53&&(R.isCanvasSupportsStreamCapturing||(R.isCanvasSupportsStreamCapturing="Requires chrome flag: enable-experimental-web-platform-features"),R.isVideoSupportsStreamCapturing||(R.isVideoSupportsStreamCapturing="Requires chrome flag: enable-experimental-web-platform-features")),R.DetectLocalIPAddress=function(e,t){if(R.isWebRTCSupported){var n=!0,r=!0;!function(e,t){if("undefined"==typeof document||"function"!=typeof document.getElementById)return;var n={},r=window.RTCPeerConnection||window.mozRTCPeerConnection||window.webkitRTCPeerConnection;if(!r){var i=document.getElementById("iframe");if(!i)return;var a=i.contentWindow;r=a.RTCPeerConnection||a.mozRTCPeerConnection||a.webkitRTCPeerConnection}if(!r)return;var o=null;"Chrome"===R.browser&&R.browser.version<58&&(o={optional:[{RtpDataChannels:!0}]});var s=new r({iceServers:[{urls:"stun:stun.l.google.com:19302"}]},o);t&&(s.addStream?s.addStream(t):s.addTrack&&t.getTracks()[0]&&s.addTrack(t.getTracks()[0],t));function l(t){if(t){var r=C.exec(t);if(r){var i=r[1],a=t.match(w);void 0===n[i]&&e(i,a,!0),n[i]=!0}}else e()}if(s.onicecandidate=function(e){e.candidate&&e.candidate.candidate?l(e.candidate.candidate):l()},!t)try{s.createDataChannel("sctp",{})}catch(e){}R.isPromisesSupported?s.createOffer().then((function(e){s.setLocalDescription(e).then(c)})):s.createOffer((function(e){s.setLocalDescription(e,c,(function(){}))}),(function(){}));function c(){s.localDescription.sdp.split("\n").forEach((function(e){e&&0===e.indexOf("a=candidate:")&&l(e)}))}}((function(t){t?t.match(w)?e("Local: "+t,n=!1,r):t.match(A)?e("Public: "+t,n,r=!1):e("Public: "+t,n,r):e()}),t)}},R.isWebSocketsSupported="WebSocket"in window&&2===window.WebSocket.CLOSING,R.isWebSocketsBlocked=!R.isWebSocketsSupported,"Nodejs"===R.osName&&(R.isWebSocketsSupported=!0,R.isWebSocketsBlocked=!1),R.checkWebSocketsSupport=function(e){e=e||function(){};try{var t,n=new WebSocket("wss://echo.websocket.org:443/");n.onopen=function(){R.isWebSocketsBlocked=!1,t=(new Date).getTime(),n.send("ping")},n.onmessage=function(){R.WebsocketLatency=(new Date).getTime()-t+"ms",e(),n.close(),n=null},n.onerror=function(){R.isWebSocketsBlocked=!0,e()}}catch(t){R.isWebSocketsBlocked=!0,e()}},R.load=function(e){O(e=e||function(){})},R.MediaDevices=void 0!==S?S:[],R.hasMicrophone=D,R.hasSpeakers=I,R.hasWebcam=P,R.isWebsiteHasWebcamPermissions=$,R.isWebsiteHasMicrophonePermissions=M,R.audioInputDevices=x,R.audioOutputDevices=T,R.videoInputDevices=k;var z=!1;"undefined"!=typeof document&&"function"==typeof document.createElement&&"setSinkId"in document.createElement("video")&&(z=!0),R.isSetSinkIdSupported=z;var V=!1;R.browser.isFirefox&&"undefined"!=typeof mozRTCPeerConnection?"getSenders"in mozRTCPeerConnection.prototype&&(V=!0):R.browser.isChrome&&"undefined"!=typeof webkitRTCPeerConnection&&"getSenders"in webkitRTCPeerConnection.prototype&&(V=!0),R.isRTPSenderReplaceTracksSupported=V;var Y=!1;R.browser.isFirefox&&R.browser.version>38&&(Y=!0),R.isRemoteStreamProcessingSupported=Y;var K=!1;"undefined"!=typeof MediaStreamTrack&&"applyConstraints"in MediaStreamTrack.prototype&&(K=!0),R.isApplyConstraintsSupported=K;var Q=!1;R.browser.isFirefox&&R.browser.version>=43&&(Q=!0),R.isMultiMonitorScreenCapturingSupported=Q,R.isPromisesSupported=!!("Promise"in window),R.version="1.4.0",void 0===R&&(window.DetectRTC={});var X=window.MediaStream;void 0===X&&"undefined"!=typeof webkitMediaStream&&(X=webkitMediaStream),R.MediaStream=void 0!==X&&"function"==typeof X&&Object.keys(X.prototype),"undefined"!=typeof MediaStreamTrack?R.MediaStreamTrack=Object.keys(MediaStreamTrack.prototype):R.MediaStreamTrack=!1;var Z=window.RTCPeerConnection||window.mozRTCPeerConnection||window.webkitRTCPeerConnection;R.RTCPeerConnection=void 0!==Z&&Object.keys(Z.prototype),window.DetectRTC=R,"undefined"!=typeof module&&(module.exports=R),"function"==typeof define&&define.amd&&define("DetectRTC",[],(function(){return R}))}(),
+/*! Copyright (c) 2014 Hidenari Nozaki and contributors | Licensed under the MIT license */
+/*!
+ * Chart.js v2.9.3
+ * https://www.chartjs.org
+ * (c) 2019 Chart.js Contributors
+ * Released under the MIT License
+ */
+/*!
+ * angular-chart.js - An angular.js wrapper for Chart.js
+ * http://jtblin.github.io/angular-chart.js/
+ * Version: 1.1.1
+ *
+ * Copyright 2016 Jerome Touffe-Blin
+ * Released under the BSD-2-Clause license
+ * https://github.com/jtblin/angular-chart.js/blob/master/LICENSE
+ */
+/*!
+ * mustache.js - Logic-less {{mustache}} templates with JavaScript
+ * http://github.com/janl/mustache.js
+ */
+/**!
+ * AngularJS file upload directives and services. Supoorts: file upload/drop/paste, resume, cancel/abort,
+ * progress, resize, thumbnail, preview, validation and CORS
+ * @author  Danial  <[email-masked]>
+ * @version 12.2.13
+ */
+/*! Moment Duration Format v2.2.2
+ *  https://github.com/jsmreese/moment-duration-format
+ *  Date: 2018-02-16
+ *
+ *  Duration format plugin function for the Moment.js library
+ *  http://momentjs.com/
+ *
+ *  Copyright 2018 John Madhavan-Reese
+ *  Released under the MIT license
+ */
+/**
+ * @license MIT
+ */
\ No newline at end of file
diff --git a/public/styles/app.9ec358c8.css b/public/styles/app.9ec358c8.css
deleted file mode 100644
index 13d946e..0000000
--- a/public/styles/app.9ec358c8.css
+++ /dev/null
@@ -1 +0,0 @@
\ No newline at end of file
diff --git a/public/styles/app.daa56aff.css b/public/styles/app.daa56aff.css
new file mode 100644
index 0000000..4b1bbe8
--- /dev/null
+++ b/public/styles/app.daa56aff.css
@@ -0,0 +1 @@
\ No newline at end of file
diff --git a/server/api/action/action.attributes.js b/server/api/action/action.attributes.js
index 0b8d4cf..54f1085 100644
--- a/server/api/action/action.attributes.js
+++ b/server/api/action/action.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/action/action.controller.js b/server/api/action/action.controller.js
index cb44c33..511d0ae 100644
--- a/server/api/action/action.controller.js
+++ b/server/api/action/action.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/action/action.model.js b/server/api/action/action.model.js
index 0db1a32..048a936 100644
--- a/server/api/action/action.model.js
+++ b/server/api/action/action.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/action/action.rpc.js b/server/api/action/action.rpc.js
index 1eb76f3..025c81c 100644
--- a/server/api/action/action.rpc.js
+++ b/server/api/action/action.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/action/index.js b/server/api/action/index.js
index 0ec1dd8..136c29b 100644
--- a/server/api/action/index.js
+++ b/server/api/action/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticCustomReport/analyticCustomReport.attributes.js b/server/api/analyticCustomReport/analyticCustomReport.attributes.js
index 63d78f6..e879f6a 100644
--- a/server/api/analyticCustomReport/analyticCustomReport.attributes.js
+++ b/server/api/analyticCustomReport/analyticCustomReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticCustomReport/analyticCustomReport.controller.js b/server/api/analyticCustomReport/analyticCustomReport.controller.js
index 9e5a65c..9870ee2 100644
--- a/server/api/analyticCustomReport/analyticCustomReport.controller.js
+++ b/server/api/analyticCustomReport/analyticCustomReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticCustomReport/analyticCustomReport.model.js b/server/api/analyticCustomReport/analyticCustomReport.model.js
index e98cdfd..c28ccb0 100644
--- a/server/api/analyticCustomReport/analyticCustomReport.model.js
+++ b/server/api/analyticCustomReport/analyticCustomReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticCustomReport/analyticCustomReport.rpc.js b/server/api/analyticCustomReport/analyticCustomReport.rpc.js
index f6b684b..5b65d25 100644
--- a/server/api/analyticCustomReport/analyticCustomReport.rpc.js
+++ b/server/api/analyticCustomReport/analyticCustomReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticCustomReport/index.js b/server/api/analyticCustomReport/index.js
index 75cc7c6..574f179 100644
--- a/server/api/analyticCustomReport/index.js
+++ b/server/api/analyticCustomReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticDefaultReport/analyticDefaultReport.attributes.js b/server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
index 96b93b8..4bf112d 100644
--- a/server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
+++ b/server/api/analyticDefaultReport/analyticDefaultReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticDefaultReport/analyticDefaultReport.controller.js b/server/api/analyticDefaultReport/analyticDefaultReport.controller.js
index d47882a..ff9475c 100644
--- a/server/api/analyticDefaultReport/analyticDefaultReport.controller.js
+++ b/server/api/analyticDefaultReport/analyticDefaultReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticDefaultReport/analyticDefaultReport.model.js b/server/api/analyticDefaultReport/analyticDefaultReport.model.js
index 7d9bf1e..f19522a 100644
--- a/server/api/analyticDefaultReport/analyticDefaultReport.model.js
+++ b/server/api/analyticDefaultReport/analyticDefaultReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticDefaultReport/analyticDefaultReport.rpc.js b/server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
index b25f186..1e4cbd0 100644
--- a/server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
+++ b/server/api/analyticDefaultReport/analyticDefaultReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticDefaultReport/index.js b/server/api/analyticDefaultReport/index.js
index e481fe2..b85a779 100644
--- a/server/api/analyticDefaultReport/index.js
+++ b/server/api/analyticDefaultReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticExtractedReport/analyticExtractedReport.attributes.js b/server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
index 2f5db1f..baaa0f3 100644
--- a/server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
+++ b/server/api/analyticExtractedReport/analyticExtractedReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticExtractedReport/analyticExtractedReport.controller.js b/server/api/analyticExtractedReport/analyticExtractedReport.controller.js
index a1b64d8..6618533 100644
--- a/server/api/analyticExtractedReport/analyticExtractedReport.controller.js
+++ b/server/api/analyticExtractedReport/analyticExtractedReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticExtractedReport/analyticExtractedReport.model.js b/server/api/analyticExtractedReport/analyticExtractedReport.model.js
index f168fa9..463a79d 100644
--- a/server/api/analyticExtractedReport/analyticExtractedReport.model.js
+++ b/server/api/analyticExtractedReport/analyticExtractedReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticExtractedReport/analyticExtractedReport.rpc.js b/server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
index 2c0d63a..bb2e3f8 100644
--- a/server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
+++ b/server/api/analyticExtractedReport/analyticExtractedReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticExtractedReport/index.js b/server/api/analyticExtractedReport/index.js
index 6d81ecb..f0ee70d 100644
--- a/server/api/analyticExtractedReport/index.js
+++ b/server/api/analyticExtractedReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticFieldReport/analyticFieldReport.attributes.js b/server/api/analyticFieldReport/analyticFieldReport.attributes.js
index 0fbe886..bbd4310 100644
--- a/server/api/analyticFieldReport/analyticFieldReport.attributes.js
+++ b/server/api/analyticFieldReport/analyticFieldReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticFieldReport/analyticFieldReport.controller.js b/server/api/analyticFieldReport/analyticFieldReport.controller.js
index 270b061..cc65d8f 100644
--- a/server/api/analyticFieldReport/analyticFieldReport.controller.js
+++ b/server/api/analyticFieldReport/analyticFieldReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticFieldReport/analyticFieldReport.model.js b/server/api/analyticFieldReport/analyticFieldReport.model.js
index 67b474c..76b7b16 100644
--- a/server/api/analyticFieldReport/analyticFieldReport.model.js
+++ b/server/api/analyticFieldReport/analyticFieldReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticFieldReport/analyticFieldReport.rpc.js b/server/api/analyticFieldReport/analyticFieldReport.rpc.js
index ba99c92..0703d53 100644
--- a/server/api/analyticFieldReport/analyticFieldReport.rpc.js
+++ b/server/api/analyticFieldReport/analyticFieldReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticFieldReport/index.js b/server/api/analyticFieldReport/index.js
index 6989f29..27a0076 100644
--- a/server/api/analyticFieldReport/index.js
+++ b/server/api/analyticFieldReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticMetric/analyticMetric.attributes.js b/server/api/analyticMetric/analyticMetric.attributes.js
index 8ee59b8..188392c 100644
--- a/server/api/analyticMetric/analyticMetric.attributes.js
+++ b/server/api/analyticMetric/analyticMetric.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticMetric/analyticMetric.controller.js b/server/api/analyticMetric/analyticMetric.controller.js
index 22c3231..cd1821d 100644
--- a/server/api/analyticMetric/analyticMetric.controller.js
+++ b/server/api/analyticMetric/analyticMetric.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticMetric/analyticMetric.model.js b/server/api/analyticMetric/analyticMetric.model.js
index dcb0b89..6317332 100644
--- a/server/api/analyticMetric/analyticMetric.model.js
+++ b/server/api/analyticMetric/analyticMetric.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticMetric/analyticMetric.rpc.js b/server/api/analyticMetric/analyticMetric.rpc.js
index e1a62bc..94fabb5 100644
--- a/server/api/analyticMetric/analyticMetric.rpc.js
+++ b/server/api/analyticMetric/analyticMetric.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticMetric/index.js b/server/api/analyticMetric/index.js
index f3a8d6e..9c4d867 100644
--- a/server/api/analyticMetric/index.js
+++ b/server/api/analyticMetric/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticTreeReport/analyticTreeReport.attributes.js b/server/api/analyticTreeReport/analyticTreeReport.attributes.js
index 869235c..ece9580 100644
--- a/server/api/analyticTreeReport/analyticTreeReport.attributes.js
+++ b/server/api/analyticTreeReport/analyticTreeReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xd61c=['TEXT'];(function(_0x33d1cc,_0x40c787){var _0x375288=function(_0x29e2c6){while(--_0x29e2c6){_0x33d1cc['push'](_0x33d1cc['shift']());}};_0x375288(++_0x40c787);}(_0xd61c,0x19f));var _0xcd61=function(_0x59c563,_0x11127b){_0x59c563=_0x59c563-0x0;var _0x5c28ff=_0xd61c[_0x59c563];return _0x5c28ff;};'use strict';var Sequelize=require('sequelize');module['exports']={'tree':{'type':Sequelize[_0xcd61('0x0')],'allowNull':![]}};
\ No newline at end of file
+var _0xc0d5=['sequelize','TEXT'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xc0d5,0x1b8));var _0x5c0d=function(_0x1084c3,_0x40cf22){_0x1084c3=_0x1084c3-0x0;var _0x12d054=_0xc0d5[_0x1084c3];return _0x12d054;};'use strict';var Sequelize=require(_0x5c0d('0x0'));module['exports']={'tree':{'type':Sequelize[_0x5c0d('0x1')],'allowNull':![]}};
\ No newline at end of file
diff --git a/server/api/analyticTreeReport/analyticTreeReport.controller.js b/server/api/analyticTreeReport/analyticTreeReport.controller.js
index fd36d7e..92e6462 100644
--- a/server/api/analyticTreeReport/analyticTreeReport.controller.js
+++ b/server/api/analyticTreeReport/analyticTreeReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticTreeReport/analyticTreeReport.model.js b/server/api/analyticTreeReport/analyticTreeReport.model.js
index de48c18..25c1793 100644
--- a/server/api/analyticTreeReport/analyticTreeReport.model.js
+++ b/server/api/analyticTreeReport/analyticTreeReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticTreeReport/analyticTreeReport.rpc.js b/server/api/analyticTreeReport/analyticTreeReport.rpc.js
index c9b5261..e142928 100644
--- a/server/api/analyticTreeReport/analyticTreeReport.rpc.js
+++ b/server/api/analyticTreeReport/analyticTreeReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/analyticTreeReport/index.js b/server/api/analyticTreeReport/index.js
index 92db0bd..bb69581 100644
--- a/server/api/analyticTreeReport/index.js
+++ b/server/api/analyticTreeReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/attachment/attachment.attributes.js b/server/api/attachment/attachment.attributes.js
index 79583ff..2cb032f 100644
--- a/server/api/attachment/attachment.attributes.js
+++ b/server/api/attachment/attachment.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/attachment/attachment.controller.js b/server/api/attachment/attachment.controller.js
index c3b87b4..a081409 100644
--- a/server/api/attachment/attachment.controller.js
+++ b/server/api/attachment/attachment.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/attachment/attachment.model.js b/server/api/attachment/attachment.model.js
index adf7839..1c52663 100644
--- a/server/api/attachment/attachment.model.js
+++ b/server/api/attachment/attachment.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/attachment/attachment.rpc.js b/server/api/attachment/attachment.rpc.js
index 59a577f..967c1d9 100644
--- a/server/api/attachment/attachment.rpc.js
+++ b/server/api/attachment/attachment.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/attachment/index.js b/server/api/attachment/index.js
index 6a00a8a..8b5e144 100644
--- a/server/api/attachment/index.js
+++ b/server/api/attachment/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/authGoogle/authGoogle.controller.js b/server/api/authGoogle/authGoogle.controller.js
index 4e9080a..014049f 100644
--- a/server/api/authGoogle/authGoogle.controller.js
+++ b/server/api/authGoogle/authGoogle.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/authGoogle/index.js b/server/api/authGoogle/index.js
index 218526c..4d64642 100644
--- a/server/api/authGoogle/index.js
+++ b/server/api/authGoogle/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/authLocal/authLocal.controller.js b/server/api/authLocal/authLocal.controller.js
index 5c4dab4..eded406 100644
--- a/server/api/authLocal/authLocal.controller.js
+++ b/server/api/authLocal/authLocal.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/authLocal/index.js b/server/api/authLocal/index.js
index 6c2985b..c7729e5 100644
--- a/server/api/authLocal/index.js
+++ b/server/api/authLocal/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/automation/automation.attributes.js b/server/api/automation/automation.attributes.js
index 659f215..da77f89 100644
--- a/server/api/automation/automation.attributes.js
+++ b/server/api/automation/automation.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/automation/automation.controller.js b/server/api/automation/automation.controller.js
index b0c96a8..29b5b7d 100644
--- a/server/api/automation/automation.controller.js
+++ b/server/api/automation/automation.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/automation/automation.model.js b/server/api/automation/automation.model.js
index 4a03dad..5fc839d 100644
--- a/server/api/automation/automation.model.js
+++ b/server/api/automation/automation.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/automation/automation.rpc.js b/server/api/automation/automation.rpc.js
index 0964585..73b998e 100644
--- a/server/api/automation/automation.rpc.js
+++ b/server/api/automation/automation.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/automation/index.js b/server/api/automation/index.js
index e4feb2b..98b4cc4 100644
--- a/server/api/automation/index.js
+++ b/server/api/automation/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/campaign/campaign.attributes.js b/server/api/campaign/campaign.attributes.js
index f8bef40..789cdd5 100644
--- a/server/api/campaign/campaign.attributes.js
+++ b/server/api/campaign/campaign.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/campaign/campaign.controller.js b/server/api/campaign/campaign.controller.js
index ce2ec75..57220d2 100644
--- a/server/api/campaign/campaign.controller.js
+++ b/server/api/campaign/campaign.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/campaign/campaign.model.js b/server/api/campaign/campaign.model.js
index c2aa0f6..30f58ac 100644
--- a/server/api/campaign/campaign.model.js
+++ b/server/api/campaign/campaign.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/campaign/campaign.rpc.js b/server/api/campaign/campaign.rpc.js
index 95df394..7c54783 100644
--- a/server/api/campaign/campaign.rpc.js
+++ b/server/api/campaign/campaign.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/campaign/index.js b/server/api/campaign/index.js
index 633762c..696219f 100644
--- a/server/api/campaign/index.js
+++ b/server/api/campaign/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cannedAnswer/cannedAnswer.attributes.js b/server/api/cannedAnswer/cannedAnswer.attributes.js
index 3116fe4..06ca8cc 100644
--- a/server/api/cannedAnswer/cannedAnswer.attributes.js
+++ b/server/api/cannedAnswer/cannedAnswer.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cannedAnswer/cannedAnswer.controller.js b/server/api/cannedAnswer/cannedAnswer.controller.js
index 4d26414..78d3fd8 100644
--- a/server/api/cannedAnswer/cannedAnswer.controller.js
+++ b/server/api/cannedAnswer/cannedAnswer.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cannedAnswer/cannedAnswer.model.js b/server/api/cannedAnswer/cannedAnswer.model.js
index 8557bb7..9be31f0 100644
--- a/server/api/cannedAnswer/cannedAnswer.model.js
+++ b/server/api/cannedAnswer/cannedAnswer.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cannedAnswer/cannedAnswer.rpc.js b/server/api/cannedAnswer/cannedAnswer.rpc.js
index 1a687a3..24aaa45 100644
--- a/server/api/cannedAnswer/cannedAnswer.rpc.js
+++ b/server/api/cannedAnswer/cannedAnswer.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cannedAnswer/index.js b/server/api/cannedAnswer/index.js
index ce75dfb..28b573d 100644
--- a/server/api/cannedAnswer/index.js
+++ b/server/api/cannedAnswer/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cdr/cdr.attributes.js b/server/api/cdr/cdr.attributes.js
index 41672cf..8bcc92d 100644
--- a/server/api/cdr/cdr.attributes.js
+++ b/server/api/cdr/cdr.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cdr/cdr.controller.js b/server/api/cdr/cdr.controller.js
index 479c5f4..9e1f60b 100644
--- a/server/api/cdr/cdr.controller.js
+++ b/server/api/cdr/cdr.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cdr/cdr.model.js b/server/api/cdr/cdr.model.js
index 524b715..7649e51 100644
--- a/server/api/cdr/cdr.model.js
+++ b/server/api/cdr/cdr.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cdr/cdr.rpc.js b/server/api/cdr/cdr.rpc.js
index defc3a9..6c83400 100644
--- a/server/api/cdr/cdr.rpc.js
+++ b/server/api/cdr/cdr.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cdr/index.js b/server/api/cdr/index.js
index b4f2d41..f8da1fc 100644
--- a/server/api/cdr/index.js
+++ b/server/api/cdr/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatApplication/chatApplication.attributes.js b/server/api/chatApplication/chatApplication.attributes.js
index 553f601..265d781 100644
--- a/server/api/chatApplication/chatApplication.attributes.js
+++ b/server/api/chatApplication/chatApplication.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatApplication/chatApplication.controller.js b/server/api/chatApplication/chatApplication.controller.js
index ddecaf2..d5b0a24 100644
--- a/server/api/chatApplication/chatApplication.controller.js
+++ b/server/api/chatApplication/chatApplication.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatApplication/chatApplication.model.js b/server/api/chatApplication/chatApplication.model.js
index 30037ae..4d05fe6 100644
--- a/server/api/chatApplication/chatApplication.model.js
+++ b/server/api/chatApplication/chatApplication.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatApplication/chatApplication.rpc.js b/server/api/chatApplication/chatApplication.rpc.js
index 6cacdf0..13a8a07 100644
--- a/server/api/chatApplication/chatApplication.rpc.js
+++ b/server/api/chatApplication/chatApplication.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatApplication/index.js b/server/api/chatApplication/index.js
index 6c7967f..2b37fd2 100644
--- a/server/api/chatApplication/index.js
+++ b/server/api/chatApplication/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatGroup/chatGroup.attributes.js b/server/api/chatGroup/chatGroup.attributes.js
index 91d7a60..7544b37 100644
--- a/server/api/chatGroup/chatGroup.attributes.js
+++ b/server/api/chatGroup/chatGroup.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatGroup/chatGroup.controller.js b/server/api/chatGroup/chatGroup.controller.js
index f70f9c4..bd25568 100644
--- a/server/api/chatGroup/chatGroup.controller.js
+++ b/server/api/chatGroup/chatGroup.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatGroup/chatGroup.events.js b/server/api/chatGroup/chatGroup.events.js
index 923356a..0d026ec 100644
--- a/server/api/chatGroup/chatGroup.events.js
+++ b/server/api/chatGroup/chatGroup.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatGroup/chatGroup.model.js b/server/api/chatGroup/chatGroup.model.js
index ff756c1..cd3c788 100644
--- a/server/api/chatGroup/chatGroup.model.js
+++ b/server/api/chatGroup/chatGroup.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatGroup/chatGroup.rpc.js b/server/api/chatGroup/chatGroup.rpc.js
index 995c3e1..a09f772 100644
--- a/server/api/chatGroup/chatGroup.rpc.js
+++ b/server/api/chatGroup/chatGroup.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatGroup/chatGroup.socket.js b/server/api/chatGroup/chatGroup.socket.js
index a96dfb0..e6e617e 100644
--- a/server/api/chatGroup/chatGroup.socket.js
+++ b/server/api/chatGroup/chatGroup.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatGroup/index.js b/server/api/chatGroup/index.js
index 8ab51bc..d706140 100644
--- a/server/api/chatGroup/index.js
+++ b/server/api/chatGroup/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInteraction/chatInteraction.attributes.js b/server/api/chatInteraction/chatInteraction.attributes.js
index 5e837df..40d14f9 100644
--- a/server/api/chatInteraction/chatInteraction.attributes.js
+++ b/server/api/chatInteraction/chatInteraction.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInteraction/chatInteraction.controller.js b/server/api/chatInteraction/chatInteraction.controller.js
index 9ce4f8b..2eabece 100644
--- a/server/api/chatInteraction/chatInteraction.controller.js
+++ b/server/api/chatInteraction/chatInteraction.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInteraction/chatInteraction.events.js b/server/api/chatInteraction/chatInteraction.events.js
index cd064f8..41b6943 100644
--- a/server/api/chatInteraction/chatInteraction.events.js
+++ b/server/api/chatInteraction/chatInteraction.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInteraction/chatInteraction.model.js b/server/api/chatInteraction/chatInteraction.model.js
index 724ddf9..f6afb0e 100644
--- a/server/api/chatInteraction/chatInteraction.model.js
+++ b/server/api/chatInteraction/chatInteraction.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInteraction/chatInteraction.rpc.js b/server/api/chatInteraction/chatInteraction.rpc.js
index e1d94f4..26520db 100644
--- a/server/api/chatInteraction/chatInteraction.rpc.js
+++ b/server/api/chatInteraction/chatInteraction.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInteraction/chatInteraction.socket.js b/server/api/chatInteraction/chatInteraction.socket.js
index eb756ba..85c059f 100644
--- a/server/api/chatInteraction/chatInteraction.socket.js
+++ b/server/api/chatInteraction/chatInteraction.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInteraction/index.js b/server/api/chatInteraction/index.js
index e133c61..02380c6 100644
--- a/server/api/chatInteraction/index.js
+++ b/server/api/chatInteraction/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInternalMessage/chatInternalMessage.attributes.js b/server/api/chatInternalMessage/chatInternalMessage.attributes.js
index be08e6d..2495840 100644
--- a/server/api/chatInternalMessage/chatInternalMessage.attributes.js
+++ b/server/api/chatInternalMessage/chatInternalMessage.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInternalMessage/chatInternalMessage.controller.js b/server/api/chatInternalMessage/chatInternalMessage.controller.js
index cd18ede..ed232d6 100644
--- a/server/api/chatInternalMessage/chatInternalMessage.controller.js
+++ b/server/api/chatInternalMessage/chatInternalMessage.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInternalMessage/chatInternalMessage.events.js b/server/api/chatInternalMessage/chatInternalMessage.events.js
index 9545b54..471251a 100644
--- a/server/api/chatInternalMessage/chatInternalMessage.events.js
+++ b/server/api/chatInternalMessage/chatInternalMessage.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInternalMessage/chatInternalMessage.model.js b/server/api/chatInternalMessage/chatInternalMessage.model.js
index 4a52695..df71031 100644
--- a/server/api/chatInternalMessage/chatInternalMessage.model.js
+++ b/server/api/chatInternalMessage/chatInternalMessage.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInternalMessage/chatInternalMessage.rpc.js b/server/api/chatInternalMessage/chatInternalMessage.rpc.js
index 1bab5af..d26c54f 100644
--- a/server/api/chatInternalMessage/chatInternalMessage.rpc.js
+++ b/server/api/chatInternalMessage/chatInternalMessage.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInternalMessage/chatInternalMessage.socket.js b/server/api/chatInternalMessage/chatInternalMessage.socket.js
index 1295ba0..d5c7602 100644
--- a/server/api/chatInternalMessage/chatInternalMessage.socket.js
+++ b/server/api/chatInternalMessage/chatInternalMessage.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatInternalMessage/index.js b/server/api/chatInternalMessage/index.js
index 4d46b7d..9d92865 100644
--- a/server/api/chatInternalMessage/index.js
+++ b/server/api/chatInternalMessage/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatMessage/chatMessage.attributes.js b/server/api/chatMessage/chatMessage.attributes.js
index 7d90ea9..b2cab06 100644
--- a/server/api/chatMessage/chatMessage.attributes.js
+++ b/server/api/chatMessage/chatMessage.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatMessage/chatMessage.controller.js b/server/api/chatMessage/chatMessage.controller.js
index 6b328f1..b40b9d9 100644
--- a/server/api/chatMessage/chatMessage.controller.js
+++ b/server/api/chatMessage/chatMessage.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatMessage/chatMessage.events.js b/server/api/chatMessage/chatMessage.events.js
index c4a25bb..d4854a5 100644
--- a/server/api/chatMessage/chatMessage.events.js
+++ b/server/api/chatMessage/chatMessage.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatMessage/chatMessage.model.js b/server/api/chatMessage/chatMessage.model.js
index 747ef18..a68296d 100644
--- a/server/api/chatMessage/chatMessage.model.js
+++ b/server/api/chatMessage/chatMessage.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatMessage/chatMessage.rpc.js b/server/api/chatMessage/chatMessage.rpc.js
index cc3fac1..0e23ac9 100644
--- a/server/api/chatMessage/chatMessage.rpc.js
+++ b/server/api/chatMessage/chatMessage.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatMessage/chatMessage.socket.js b/server/api/chatMessage/chatMessage.socket.js
index 664e4de..924c858 100644
--- a/server/api/chatMessage/chatMessage.socket.js
+++ b/server/api/chatMessage/chatMessage.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatMessage/index.js b/server/api/chatMessage/index.js
index 9ae78ff..3930806 100644
--- a/server/api/chatMessage/index.js
+++ b/server/api/chatMessage/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatOfflineMessage/chatOfflineMessage.attributes.js b/server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
index d98fed9..fba4171 100644
--- a/server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
+++ b/server/api/chatOfflineMessage/chatOfflineMessage.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x7cdb=['medium','sequelize','exports','TEXT'];(function(_0x46b22a,_0x5bf83a){var _0x44c2e8=function(_0x21b6fc){while(--_0x21b6fc){_0x46b22a['push'](_0x46b22a['shift']());}};_0x44c2e8(++_0x5bf83a);}(_0x7cdb,0x16d));var _0xb7cd=function(_0x36af14,_0x504dbe){_0x36af14=_0x36af14-0x0;var _0x266416=_0x7cdb[_0x36af14];return _0x266416;};'use strict';var Sequelize=require(_0xb7cd('0x0'));module[_0xb7cd('0x1')]={'body':{'type':Sequelize[_0xb7cd('0x2')](_0xb7cd('0x3')),'allowNull':![]}};
\ No newline at end of file
+var _0x1f61=['medium','sequelize','exports'];(function(_0x5a48c1,_0x36526a){var _0x42c1fb=function(_0x4842dd){while(--_0x4842dd){_0x5a48c1['push'](_0x5a48c1['shift']());}};_0x42c1fb(++_0x36526a);}(_0x1f61,0x178));var _0x11f6=function(_0x18e74c,_0xbbf1c7){_0x18e74c=_0x18e74c-0x0;var _0x35ae0e=_0x1f61[_0x18e74c];return _0x35ae0e;};'use strict';var Sequelize=require(_0x11f6('0x0'));module[_0x11f6('0x1')]={'body':{'type':Sequelize['TEXT'](_0x11f6('0x2')),'allowNull':![]}};
\ No newline at end of file
diff --git a/server/api/chatOfflineMessage/chatOfflineMessage.controller.js b/server/api/chatOfflineMessage/chatOfflineMessage.controller.js
index cb1885a..7f25540 100644
--- a/server/api/chatOfflineMessage/chatOfflineMessage.controller.js
+++ b/server/api/chatOfflineMessage/chatOfflineMessage.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatOfflineMessage/chatOfflineMessage.model.js b/server/api/chatOfflineMessage/chatOfflineMessage.model.js
index 9ea0485..0c43f3f 100644
--- a/server/api/chatOfflineMessage/chatOfflineMessage.model.js
+++ b/server/api/chatOfflineMessage/chatOfflineMessage.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatOfflineMessage/chatOfflineMessage.rpc.js b/server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
index 20072c7..88c122b 100644
--- a/server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
+++ b/server/api/chatOfflineMessage/chatOfflineMessage.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatOfflineMessage/index.js b/server/api/chatOfflineMessage/index.js
index 4cd954e..ea1494c 100644
--- a/server/api/chatOfflineMessage/index.js
+++ b/server/api/chatOfflineMessage/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatProactiveAction/chatProactiveAction.attributes.js b/server/api/chatProactiveAction/chatProactiveAction.attributes.js
index e6843ea..6ccc837 100644
--- a/server/api/chatProactiveAction/chatProactiveAction.attributes.js
+++ b/server/api/chatProactiveAction/chatProactiveAction.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatProactiveAction/chatProactiveAction.controller.js b/server/api/chatProactiveAction/chatProactiveAction.controller.js
index 1d56de5..dc0af0e 100644
--- a/server/api/chatProactiveAction/chatProactiveAction.controller.js
+++ b/server/api/chatProactiveAction/chatProactiveAction.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatProactiveAction/chatProactiveAction.model.js b/server/api/chatProactiveAction/chatProactiveAction.model.js
index 912640d..36202d9 100644
--- a/server/api/chatProactiveAction/chatProactiveAction.model.js
+++ b/server/api/chatProactiveAction/chatProactiveAction.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatProactiveAction/chatProactiveAction.rpc.js b/server/api/chatProactiveAction/chatProactiveAction.rpc.js
index c0ac01a..95e5bdf 100644
--- a/server/api/chatProactiveAction/chatProactiveAction.rpc.js
+++ b/server/api/chatProactiveAction/chatProactiveAction.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatProactiveAction/index.js b/server/api/chatProactiveAction/index.js
index a05d79b..2f21ea6 100644
--- a/server/api/chatProactiveAction/index.js
+++ b/server/api/chatProactiveAction/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueue/chatQueue.attributes.js b/server/api/chatQueue/chatQueue.attributes.js
index 20eec15..84e314d 100644
--- a/server/api/chatQueue/chatQueue.attributes.js
+++ b/server/api/chatQueue/chatQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueue/chatQueue.controller.js b/server/api/chatQueue/chatQueue.controller.js
index f083200..09849e8 100644
--- a/server/api/chatQueue/chatQueue.controller.js
+++ b/server/api/chatQueue/chatQueue.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueue/chatQueue.events.js b/server/api/chatQueue/chatQueue.events.js
index e736ec7..7e51308 100644
--- a/server/api/chatQueue/chatQueue.events.js
+++ b/server/api/chatQueue/chatQueue.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueue/chatQueue.model.js b/server/api/chatQueue/chatQueue.model.js
index 93fa92d..23bf59d 100644
--- a/server/api/chatQueue/chatQueue.model.js
+++ b/server/api/chatQueue/chatQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueue/chatQueue.rpc.js b/server/api/chatQueue/chatQueue.rpc.js
index b175c4f..885e80c 100644
--- a/server/api/chatQueue/chatQueue.rpc.js
+++ b/server/api/chatQueue/chatQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueue/chatQueue.socket.js b/server/api/chatQueue/chatQueue.socket.js
index 7d7d1bf..f291cca 100644
--- a/server/api/chatQueue/chatQueue.socket.js
+++ b/server/api/chatQueue/chatQueue.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueue/index.js b/server/api/chatQueue/index.js
index 88262df..07089d1 100644
--- a/server/api/chatQueue/index.js
+++ b/server/api/chatQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueueReport/chatQueueReport.attributes.js b/server/api/chatQueueReport/chatQueueReport.attributes.js
index 1d30966..511e092 100644
--- a/server/api/chatQueueReport/chatQueueReport.attributes.js
+++ b/server/api/chatQueueReport/chatQueueReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueueReport/chatQueueReport.controller.js b/server/api/chatQueueReport/chatQueueReport.controller.js
index e7c9f48..fff9758 100644
--- a/server/api/chatQueueReport/chatQueueReport.controller.js
+++ b/server/api/chatQueueReport/chatQueueReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueueReport/chatQueueReport.model.js b/server/api/chatQueueReport/chatQueueReport.model.js
index 9485dd5..8508924 100644
--- a/server/api/chatQueueReport/chatQueueReport.model.js
+++ b/server/api/chatQueueReport/chatQueueReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueueReport/chatQueueReport.rpc.js b/server/api/chatQueueReport/chatQueueReport.rpc.js
index 8308a24..7bc7909 100644
--- a/server/api/chatQueueReport/chatQueueReport.rpc.js
+++ b/server/api/chatQueueReport/chatQueueReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatQueueReport/index.js b/server/api/chatQueueReport/index.js
index 457ff62..4159f4c 100644
--- a/server/api/chatQueueReport/index.js
+++ b/server/api/chatQueueReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatTransferReport/chatTransferReport.attributes.js b/server/api/chatTransferReport/chatTransferReport.attributes.js
index af98d64..0145af3 100644
--- a/server/api/chatTransferReport/chatTransferReport.attributes.js
+++ b/server/api/chatTransferReport/chatTransferReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatTransferReport/chatTransferReport.controller.js b/server/api/chatTransferReport/chatTransferReport.controller.js
index 4a59d64..67dece7 100644
--- a/server/api/chatTransferReport/chatTransferReport.controller.js
+++ b/server/api/chatTransferReport/chatTransferReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatTransferReport/chatTransferReport.model.js b/server/api/chatTransferReport/chatTransferReport.model.js
index 506899b..5175a7b 100644
--- a/server/api/chatTransferReport/chatTransferReport.model.js
+++ b/server/api/chatTransferReport/chatTransferReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatTransferReport/chatTransferReport.rpc.js b/server/api/chatTransferReport/chatTransferReport.rpc.js
index e308ca2..ab4f722 100644
--- a/server/api/chatTransferReport/chatTransferReport.rpc.js
+++ b/server/api/chatTransferReport/chatTransferReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatTransferReport/index.js b/server/api/chatTransferReport/index.js
index a5b4a4b..bad5033 100644
--- a/server/api/chatTransferReport/index.js
+++ b/server/api/chatTransferReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatWebsite/chatWebsite.attributes.js b/server/api/chatWebsite/chatWebsite.attributes.js
index 80aa202..d1371b6 100644
--- a/server/api/chatWebsite/chatWebsite.attributes.js
+++ b/server/api/chatWebsite/chatWebsite.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatWebsite/chatWebsite.controller.js b/server/api/chatWebsite/chatWebsite.controller.js
index 8cc4c08..2097374 100644
--- a/server/api/chatWebsite/chatWebsite.controller.js
+++ b/server/api/chatWebsite/chatWebsite.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatWebsite/chatWebsite.events.js b/server/api/chatWebsite/chatWebsite.events.js
index ae63fb8..761ddad 100644
--- a/server/api/chatWebsite/chatWebsite.events.js
+++ b/server/api/chatWebsite/chatWebsite.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatWebsite/chatWebsite.model.js b/server/api/chatWebsite/chatWebsite.model.js
index aa16620..7542acb 100644
--- a/server/api/chatWebsite/chatWebsite.model.js
+++ b/server/api/chatWebsite/chatWebsite.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatWebsite/chatWebsite.rpc.js b/server/api/chatWebsite/chatWebsite.rpc.js
index 1a2a51f..84df138 100644
--- a/server/api/chatWebsite/chatWebsite.rpc.js
+++ b/server/api/chatWebsite/chatWebsite.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatWebsite/chatWebsite.socket.js b/server/api/chatWebsite/chatWebsite.socket.js
index 4ec61d7..3644de5 100644
--- a/server/api/chatWebsite/chatWebsite.socket.js
+++ b/server/api/chatWebsite/chatWebsite.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/chatWebsite/index.js b/server/api/chatWebsite/index.js
index 47228c7..d5d4f20 100644
--- a/server/api/chatWebsite/index.js
+++ b/server/api/chatWebsite/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cloudProvider/cloudProvider.attributes.js b/server/api/cloudProvider/cloudProvider.attributes.js
index 861a97a..df97fd7 100644
--- a/server/api/cloudProvider/cloudProvider.attributes.js
+++ b/server/api/cloudProvider/cloudProvider.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cloudProvider/cloudProvider.controller.js b/server/api/cloudProvider/cloudProvider.controller.js
index d55ac20..201a297 100644
--- a/server/api/cloudProvider/cloudProvider.controller.js
+++ b/server/api/cloudProvider/cloudProvider.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cloudProvider/cloudProvider.model.js b/server/api/cloudProvider/cloudProvider.model.js
index 0f41539..e52c3f9 100644
--- a/server/api/cloudProvider/cloudProvider.model.js
+++ b/server/api/cloudProvider/cloudProvider.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cloudProvider/cloudProvider.rpc.js b/server/api/cloudProvider/cloudProvider.rpc.js
index df3a51c..bf9974f 100644
--- a/server/api/cloudProvider/cloudProvider.rpc.js
+++ b/server/api/cloudProvider/cloudProvider.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cloudProvider/index.js b/server/api/cloudProvider/index.js
index 152a8c7..ed1fdc1 100644
--- a/server/api/cloudProvider/index.js
+++ b/server/api/cloudProvider/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmCompany/cmCompany.attributes.js b/server/api/cmCompany/cmCompany.attributes.js
index d946011..53b042d 100644
--- a/server/api/cmCompany/cmCompany.attributes.js
+++ b/server/api/cmCompany/cmCompany.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmCompany/cmCompany.controller.js b/server/api/cmCompany/cmCompany.controller.js
index 447bd83..4395c6e 100644
--- a/server/api/cmCompany/cmCompany.controller.js
+++ b/server/api/cmCompany/cmCompany.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmCompany/cmCompany.model.js b/server/api/cmCompany/cmCompany.model.js
index a9f9241..9566a00 100644
--- a/server/api/cmCompany/cmCompany.model.js
+++ b/server/api/cmCompany/cmCompany.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmCompany/cmCompany.rpc.js b/server/api/cmCompany/cmCompany.rpc.js
index 6055d26..81d755b 100644
--- a/server/api/cmCompany/cmCompany.rpc.js
+++ b/server/api/cmCompany/cmCompany.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmCompany/index.js b/server/api/cmCompany/index.js
index bda06e5..db111b9 100644
--- a/server/api/cmCompany/index.js
+++ b/server/api/cmCompany/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmContact/cmContact.attributes.js b/server/api/cmContact/cmContact.attributes.js
index d0c6851..b5da498 100644
--- a/server/api/cmContact/cmContact.attributes.js
+++ b/server/api/cmContact/cmContact.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmContact/cmContact.controller.js b/server/api/cmContact/cmContact.controller.js
index 2bcfaf3..c821725 100644
--- a/server/api/cmContact/cmContact.controller.js
+++ b/server/api/cmContact/cmContact.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmContact/cmContact.events.js b/server/api/cmContact/cmContact.events.js
index 9b7c8e1..cd260da 100644
--- a/server/api/cmContact/cmContact.events.js
+++ b/server/api/cmContact/cmContact.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmContact/cmContact.model.js b/server/api/cmContact/cmContact.model.js
index 5c59ba5..2a4c0a0 100644
--- a/server/api/cmContact/cmContact.model.js
+++ b/server/api/cmContact/cmContact.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmContact/cmContact.rpc.js b/server/api/cmContact/cmContact.rpc.js
index 2651539..a5cb467 100644
--- a/server/api/cmContact/cmContact.rpc.js
+++ b/server/api/cmContact/cmContact.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmContact/cmContact.socket.js b/server/api/cmContact/cmContact.socket.js
index ff8798a..75158e2 100644
--- a/server/api/cmContact/cmContact.socket.js
+++ b/server/api/cmContact/cmContact.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmContact/index.js b/server/api/cmContact/index.js
index eaa2e49..2952983 100644
--- a/server/api/cmContact/index.js
+++ b/server/api/cmContact/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmCustomField/cmCustomField.attributes.js b/server/api/cmCustomField/cmCustomField.attributes.js
index af5b169..be1bb38 100644
--- a/server/api/cmCustomField/cmCustomField.attributes.js
+++ b/server/api/cmCustomField/cmCustomField.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmCustomField/cmCustomField.controller.js b/server/api/cmCustomField/cmCustomField.controller.js
index feb86ba..2307bf7 100644
--- a/server/api/cmCustomField/cmCustomField.controller.js
+++ b/server/api/cmCustomField/cmCustomField.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmCustomField/cmCustomField.model.js b/server/api/cmCustomField/cmCustomField.model.js
index ac86ebb..86a2c25 100644
--- a/server/api/cmCustomField/cmCustomField.model.js
+++ b/server/api/cmCustomField/cmCustomField.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmCustomField/cmCustomField.rpc.js b/server/api/cmCustomField/cmCustomField.rpc.js
index 25ccab1..f04bbb0 100644
--- a/server/api/cmCustomField/cmCustomField.rpc.js
+++ b/server/api/cmCustomField/cmCustomField.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmCustomField/index.js b/server/api/cmCustomField/index.js
index ba79c14..9af2b56 100644
--- a/server/api/cmCustomField/index.js
+++ b/server/api/cmCustomField/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopper/cmHopper.attributes.js b/server/api/cmHopper/cmHopper.attributes.js
index 536ac11..7a262b3 100644
--- a/server/api/cmHopper/cmHopper.attributes.js
+++ b/server/api/cmHopper/cmHopper.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopper/cmHopper.controller.js b/server/api/cmHopper/cmHopper.controller.js
index 88f4677..8579672 100644
--- a/server/api/cmHopper/cmHopper.controller.js
+++ b/server/api/cmHopper/cmHopper.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopper/cmHopper.model.js b/server/api/cmHopper/cmHopper.model.js
index 929efc8..5740940 100644
--- a/server/api/cmHopper/cmHopper.model.js
+++ b/server/api/cmHopper/cmHopper.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopper/cmHopper.rpc.js b/server/api/cmHopper/cmHopper.rpc.js
index ec84561..2c4bcd0 100644
--- a/server/api/cmHopper/cmHopper.rpc.js
+++ b/server/api/cmHopper/cmHopper.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopper/index.js b/server/api/cmHopper/index.js
index cc343a2..d1e1f40 100644
--- a/server/api/cmHopper/index.js
+++ b/server/api/cmHopper/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperBlack/cmHopperBlack.attributes.js b/server/api/cmHopperBlack/cmHopperBlack.attributes.js
index 90c6353..da6c3ae 100644
--- a/server/api/cmHopperBlack/cmHopperBlack.attributes.js
+++ b/server/api/cmHopperBlack/cmHopperBlack.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperBlack/cmHopperBlack.controller.js b/server/api/cmHopperBlack/cmHopperBlack.controller.js
index 533ed0c..6ce188e 100644
--- a/server/api/cmHopperBlack/cmHopperBlack.controller.js
+++ b/server/api/cmHopperBlack/cmHopperBlack.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperBlack/cmHopperBlack.model.js b/server/api/cmHopperBlack/cmHopperBlack.model.js
index 872c434..915c047 100644
--- a/server/api/cmHopperBlack/cmHopperBlack.model.js
+++ b/server/api/cmHopperBlack/cmHopperBlack.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperBlack/cmHopperBlack.rpc.js b/server/api/cmHopperBlack/cmHopperBlack.rpc.js
index 0b3aed1..fc890c0 100644
--- a/server/api/cmHopperBlack/cmHopperBlack.rpc.js
+++ b/server/api/cmHopperBlack/cmHopperBlack.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperBlack/index.js b/server/api/cmHopperBlack/index.js
index ee9732b..c6f331b 100644
--- a/server/api/cmHopperBlack/index.js
+++ b/server/api/cmHopperBlack/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperFinal/cmHopperFinal.attributes.js b/server/api/cmHopperFinal/cmHopperFinal.attributes.js
index 18e8868..09221b4 100644
--- a/server/api/cmHopperFinal/cmHopperFinal.attributes.js
+++ b/server/api/cmHopperFinal/cmHopperFinal.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperFinal/cmHopperFinal.controller.js b/server/api/cmHopperFinal/cmHopperFinal.controller.js
index 33f3e61..776f8b0 100644
--- a/server/api/cmHopperFinal/cmHopperFinal.controller.js
+++ b/server/api/cmHopperFinal/cmHopperFinal.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperFinal/cmHopperFinal.model.js b/server/api/cmHopperFinal/cmHopperFinal.model.js
index 77093e5..1fb5b7c 100644
--- a/server/api/cmHopperFinal/cmHopperFinal.model.js
+++ b/server/api/cmHopperFinal/cmHopperFinal.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperFinal/cmHopperFinal.rpc.js b/server/api/cmHopperFinal/cmHopperFinal.rpc.js
index e47cef9..986d3f8 100644
--- a/server/api/cmHopperFinal/cmHopperFinal.rpc.js
+++ b/server/api/cmHopperFinal/cmHopperFinal.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperFinal/index.js b/server/api/cmHopperFinal/index.js
index 2846b4e..b460d04 100644
--- a/server/api/cmHopperFinal/index.js
+++ b/server/api/cmHopperFinal/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperHistory/cmHopperHistory.attributes.js b/server/api/cmHopperHistory/cmHopperHistory.attributes.js
index 739225d..69fd20d 100644
--- a/server/api/cmHopperHistory/cmHopperHistory.attributes.js
+++ b/server/api/cmHopperHistory/cmHopperHistory.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperHistory/cmHopperHistory.controller.js b/server/api/cmHopperHistory/cmHopperHistory.controller.js
index 3f71e79..e9c9642 100644
--- a/server/api/cmHopperHistory/cmHopperHistory.controller.js
+++ b/server/api/cmHopperHistory/cmHopperHistory.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperHistory/cmHopperHistory.model.js b/server/api/cmHopperHistory/cmHopperHistory.model.js
index 4d696bb..f046191 100644
--- a/server/api/cmHopperHistory/cmHopperHistory.model.js
+++ b/server/api/cmHopperHistory/cmHopperHistory.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperHistory/cmHopperHistory.rpc.js b/server/api/cmHopperHistory/cmHopperHistory.rpc.js
index c4dc93d..22aff1b 100644
--- a/server/api/cmHopperHistory/cmHopperHistory.rpc.js
+++ b/server/api/cmHopperHistory/cmHopperHistory.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmHopperHistory/index.js b/server/api/cmHopperHistory/index.js
index 60c90ac..57435ad 100644
--- a/server/api/cmHopperHistory/index.js
+++ b/server/api/cmHopperHistory/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmList/cmList.attributes.js b/server/api/cmList/cmList.attributes.js
index 8e5d0a9..9bb559f 100644
--- a/server/api/cmList/cmList.attributes.js
+++ b/server/api/cmList/cmList.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmList/cmList.controller.js b/server/api/cmList/cmList.controller.js
index 14a9f10..2cd3f2b 100644
--- a/server/api/cmList/cmList.controller.js
+++ b/server/api/cmList/cmList.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmList/cmList.events.js b/server/api/cmList/cmList.events.js
index d87b9e9..f0c9086 100644
--- a/server/api/cmList/cmList.events.js
+++ b/server/api/cmList/cmList.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmList/cmList.model.js b/server/api/cmList/cmList.model.js
index 606a285..43fb393 100644
--- a/server/api/cmList/cmList.model.js
+++ b/server/api/cmList/cmList.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmList/cmList.rpc.js b/server/api/cmList/cmList.rpc.js
index d94ad11..2579e2c 100644
--- a/server/api/cmList/cmList.rpc.js
+++ b/server/api/cmList/cmList.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmList/cmList.socket.js b/server/api/cmList/cmList.socket.js
index 0e6c9bb..75710af 100644
--- a/server/api/cmList/cmList.socket.js
+++ b/server/api/cmList/cmList.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/cmList/index.js b/server/api/cmList/index.js
index 2b7604b..8acdd63 100644
--- a/server/api/cmList/index.js
+++ b/server/api/cmList/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/condition/condition.attributes.js b/server/api/condition/condition.attributes.js
index 29cde30..e52f929 100644
--- a/server/api/condition/condition.attributes.js
+++ b/server/api/condition/condition.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/condition/condition.controller.js b/server/api/condition/condition.controller.js
index 76ab1a3..e725b58 100644
--- a/server/api/condition/condition.controller.js
+++ b/server/api/condition/condition.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/condition/condition.model.js b/server/api/condition/condition.model.js
index c35fdb7..8afacf2 100644
--- a/server/api/condition/condition.model.js
+++ b/server/api/condition/condition.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/condition/condition.rpc.js b/server/api/condition/condition.rpc.js
index 18e8827..e5e0f43 100644
--- a/server/api/condition/condition.rpc.js
+++ b/server/api/condition/condition.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/condition/index.js b/server/api/condition/index.js
index 33d1ba3..7afce98 100644
--- a/server/api/condition/index.js
+++ b/server/api/condition/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboard/dashboard.attributes.js b/server/api/dashboard/dashboard.attributes.js
index 67f5a58..4274997 100644
--- a/server/api/dashboard/dashboard.attributes.js
+++ b/server/api/dashboard/dashboard.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboard/dashboard.controller.js b/server/api/dashboard/dashboard.controller.js
index ad1776f..a8081cb 100644
--- a/server/api/dashboard/dashboard.controller.js
+++ b/server/api/dashboard/dashboard.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboard/dashboard.events.js b/server/api/dashboard/dashboard.events.js
index 8528e39..bd2cf0b 100644
--- a/server/api/dashboard/dashboard.events.js
+++ b/server/api/dashboard/dashboard.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboard/dashboard.model.js b/server/api/dashboard/dashboard.model.js
index 235ecf1..2a93cfb 100644
--- a/server/api/dashboard/dashboard.model.js
+++ b/server/api/dashboard/dashboard.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboard/dashboard.rpc.js b/server/api/dashboard/dashboard.rpc.js
index ba49621..6622929 100644
--- a/server/api/dashboard/dashboard.rpc.js
+++ b/server/api/dashboard/dashboard.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboard/dashboard.socket.js b/server/api/dashboard/dashboard.socket.js
index 6be1129..78be790 100644
--- a/server/api/dashboard/dashboard.socket.js
+++ b/server/api/dashboard/dashboard.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboard/index.js b/server/api/dashboard/index.js
index a9e134e..2200066 100644
--- a/server/api/dashboard/index.js
+++ b/server/api/dashboard/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboardItem/dashboardItem.attributes.js b/server/api/dashboardItem/dashboardItem.attributes.js
index 5e100cc..2d650b1 100644
--- a/server/api/dashboardItem/dashboardItem.attributes.js
+++ b/server/api/dashboardItem/dashboardItem.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboardItem/dashboardItem.controller.js b/server/api/dashboardItem/dashboardItem.controller.js
index 9a7c3c2..f62bbde 100644
--- a/server/api/dashboardItem/dashboardItem.controller.js
+++ b/server/api/dashboardItem/dashboardItem.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboardItem/dashboardItem.events.js b/server/api/dashboardItem/dashboardItem.events.js
index 3143256..9a22142 100644
--- a/server/api/dashboardItem/dashboardItem.events.js
+++ b/server/api/dashboardItem/dashboardItem.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboardItem/dashboardItem.model.js b/server/api/dashboardItem/dashboardItem.model.js
index 37bf7a0..8d76f1b 100644
--- a/server/api/dashboardItem/dashboardItem.model.js
+++ b/server/api/dashboardItem/dashboardItem.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboardItem/dashboardItem.rpc.js b/server/api/dashboardItem/dashboardItem.rpc.js
index 94563cd..c90b380 100644
--- a/server/api/dashboardItem/dashboardItem.rpc.js
+++ b/server/api/dashboardItem/dashboardItem.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboardItem/dashboardItem.socket.js b/server/api/dashboardItem/dashboardItem.socket.js
index 72f1b4f..5d30263 100644
--- a/server/api/dashboardItem/dashboardItem.socket.js
+++ b/server/api/dashboardItem/dashboardItem.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/dashboardItem/index.js b/server/api/dashboardItem/index.js
index 3457499..5ee5af0 100644
--- a/server/api/dashboardItem/index.js
+++ b/server/api/dashboardItem/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/disposition/disposition.attributes.js b/server/api/disposition/disposition.attributes.js
index 5350b36..5a3a019 100644
--- a/server/api/disposition/disposition.attributes.js
+++ b/server/api/disposition/disposition.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xbe04=['STRING','sequelize','exports'];(function(_0x47fd7c,_0x3baee4){var _0x66923a=function(_0x510e3f){while(--_0x510e3f){_0x47fd7c['push'](_0x47fd7c['shift']());}};_0x66923a(++_0x3baee4);}(_0xbe04,0x9d));var _0x4be0=function(_0x36bfe3,_0x358938){_0x36bfe3=_0x36bfe3-0x0;var _0x9b0436=_0xbe04[_0x36bfe3];return _0x9b0436;};'use strict';var Sequelize=require(_0x4be0('0x0'));module[_0x4be0('0x1')]={'name':{'type':Sequelize[_0x4be0('0x2')],'allowNull':![]}};
\ No newline at end of file
+var _0x58e0=['sequelize','STRING'];(function(_0x3c5ca7,_0x753ead){var _0x369aa1=function(_0x5094ad){while(--_0x5094ad){_0x3c5ca7['push'](_0x3c5ca7['shift']());}};_0x369aa1(++_0x753ead);}(_0x58e0,0x98));var _0x058e=function(_0x36884e,_0x48008f){_0x36884e=_0x36884e-0x0;var _0x1cc367=_0x58e0[_0x36884e];return _0x1cc367;};'use strict';var Sequelize=require(_0x058e('0x0'));module['exports']={'name':{'type':Sequelize[_0x058e('0x1')],'allowNull':![]}};
\ No newline at end of file
diff --git a/server/api/disposition/disposition.controller.js b/server/api/disposition/disposition.controller.js
index 6395000..51def68 100644
--- a/server/api/disposition/disposition.controller.js
+++ b/server/api/disposition/disposition.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/disposition/disposition.model.js b/server/api/disposition/disposition.model.js
index abd906f..2e69e71 100644
--- a/server/api/disposition/disposition.model.js
+++ b/server/api/disposition/disposition.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/disposition/disposition.rpc.js b/server/api/disposition/disposition.rpc.js
index 2a7997b..47d4d1e 100644
--- a/server/api/disposition/disposition.rpc.js
+++ b/server/api/disposition/disposition.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/disposition/index.js b/server/api/disposition/index.js
index 5ebca6c..83fe639 100644
--- a/server/api/disposition/index.js
+++ b/server/api/disposition/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxAccount/faxAccount.attributes.js b/server/api/faxAccount/faxAccount.attributes.js
index 69a6bc9..bbaaaa6 100644
--- a/server/api/faxAccount/faxAccount.attributes.js
+++ b/server/api/faxAccount/faxAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxAccount/faxAccount.controller.js b/server/api/faxAccount/faxAccount.controller.js
index bdd3318..83c33d7 100644
--- a/server/api/faxAccount/faxAccount.controller.js
+++ b/server/api/faxAccount/faxAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxAccount/faxAccount.events.js b/server/api/faxAccount/faxAccount.events.js
index 419b78d..ff1447b 100644
--- a/server/api/faxAccount/faxAccount.events.js
+++ b/server/api/faxAccount/faxAccount.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxAccount/faxAccount.model.js b/server/api/faxAccount/faxAccount.model.js
index a1dc792..a334dfd 100644
--- a/server/api/faxAccount/faxAccount.model.js
+++ b/server/api/faxAccount/faxAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxAccount/faxAccount.rpc.js b/server/api/faxAccount/faxAccount.rpc.js
index 27ab614..267860f 100644
--- a/server/api/faxAccount/faxAccount.rpc.js
+++ b/server/api/faxAccount/faxAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxAccount/faxAccount.socket.js b/server/api/faxAccount/faxAccount.socket.js
index 54ab39b..a92a6d4 100644
--- a/server/api/faxAccount/faxAccount.socket.js
+++ b/server/api/faxAccount/faxAccount.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxAccount/index.js b/server/api/faxAccount/index.js
index e2d83d9..eb2513a 100644
--- a/server/api/faxAccount/index.js
+++ b/server/api/faxAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxApplication/faxApplication.attributes.js b/server/api/faxApplication/faxApplication.attributes.js
index 84620d1..3174545 100644
--- a/server/api/faxApplication/faxApplication.attributes.js
+++ b/server/api/faxApplication/faxApplication.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxApplication/faxApplication.controller.js b/server/api/faxApplication/faxApplication.controller.js
index e58f260..c0269b0 100644
--- a/server/api/faxApplication/faxApplication.controller.js
+++ b/server/api/faxApplication/faxApplication.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxApplication/faxApplication.model.js b/server/api/faxApplication/faxApplication.model.js
index a7ebfd9..339377f 100644
--- a/server/api/faxApplication/faxApplication.model.js
+++ b/server/api/faxApplication/faxApplication.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxApplication/faxApplication.rpc.js b/server/api/faxApplication/faxApplication.rpc.js
index ca8b5fb..8162026 100644
--- a/server/api/faxApplication/faxApplication.rpc.js
+++ b/server/api/faxApplication/faxApplication.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxApplication/index.js b/server/api/faxApplication/index.js
index d4df613..f556b8b 100644
--- a/server/api/faxApplication/index.js
+++ b/server/api/faxApplication/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxInteraction/faxInteraction.attributes.js b/server/api/faxInteraction/faxInteraction.attributes.js
index d331127..ea60bc4 100644
--- a/server/api/faxInteraction/faxInteraction.attributes.js
+++ b/server/api/faxInteraction/faxInteraction.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxInteraction/faxInteraction.controller.js b/server/api/faxInteraction/faxInteraction.controller.js
index 39b39f6..b3c521e 100644
--- a/server/api/faxInteraction/faxInteraction.controller.js
+++ b/server/api/faxInteraction/faxInteraction.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxInteraction/faxInteraction.events.js b/server/api/faxInteraction/faxInteraction.events.js
index e98f2ea..d2adbaa 100644
--- a/server/api/faxInteraction/faxInteraction.events.js
+++ b/server/api/faxInteraction/faxInteraction.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxInteraction/faxInteraction.model.js b/server/api/faxInteraction/faxInteraction.model.js
index d87cb3f..c02d133 100644
--- a/server/api/faxInteraction/faxInteraction.model.js
+++ b/server/api/faxInteraction/faxInteraction.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxInteraction/faxInteraction.rpc.js b/server/api/faxInteraction/faxInteraction.rpc.js
index fabc9e9..6bd816c 100644
--- a/server/api/faxInteraction/faxInteraction.rpc.js
+++ b/server/api/faxInteraction/faxInteraction.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxInteraction/faxInteraction.socket.js b/server/api/faxInteraction/faxInteraction.socket.js
index ff47988..6a234ec 100644
--- a/server/api/faxInteraction/faxInteraction.socket.js
+++ b/server/api/faxInteraction/faxInteraction.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxInteraction/index.js b/server/api/faxInteraction/index.js
index e57c02d..43dfa34 100644
--- a/server/api/faxInteraction/index.js
+++ b/server/api/faxInteraction/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxMessage/faxMessage.attributes.js b/server/api/faxMessage/faxMessage.attributes.js
index 3798e8a..ee96ce6 100644
--- a/server/api/faxMessage/faxMessage.attributes.js
+++ b/server/api/faxMessage/faxMessage.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxMessage/faxMessage.controller.js b/server/api/faxMessage/faxMessage.controller.js
index 1293188..7fca21e 100644
--- a/server/api/faxMessage/faxMessage.controller.js
+++ b/server/api/faxMessage/faxMessage.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxMessage/faxMessage.events.js b/server/api/faxMessage/faxMessage.events.js
index 4014afe..6d3f2fb 100644
--- a/server/api/faxMessage/faxMessage.events.js
+++ b/server/api/faxMessage/faxMessage.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxMessage/faxMessage.model.js b/server/api/faxMessage/faxMessage.model.js
index 16db047..170c6aa 100644
--- a/server/api/faxMessage/faxMessage.model.js
+++ b/server/api/faxMessage/faxMessage.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxMessage/faxMessage.rpc.js b/server/api/faxMessage/faxMessage.rpc.js
index 4b70470..65bb108 100644
--- a/server/api/faxMessage/faxMessage.rpc.js
+++ b/server/api/faxMessage/faxMessage.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxMessage/faxMessage.socket.js b/server/api/faxMessage/faxMessage.socket.js
index 662eff1..90d52e9 100644
--- a/server/api/faxMessage/faxMessage.socket.js
+++ b/server/api/faxMessage/faxMessage.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxMessage/index.js b/server/api/faxMessage/index.js
index b8afcfa..70c1f8c 100644
--- a/server/api/faxMessage/index.js
+++ b/server/api/faxMessage/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueue/faxQueue.attributes.js b/server/api/faxQueue/faxQueue.attributes.js
index 875c39f..a5e2c62 100644
--- a/server/api/faxQueue/faxQueue.attributes.js
+++ b/server/api/faxQueue/faxQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueue/faxQueue.controller.js b/server/api/faxQueue/faxQueue.controller.js
index 39830df..1188ef9 100644
--- a/server/api/faxQueue/faxQueue.controller.js
+++ b/server/api/faxQueue/faxQueue.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueue/faxQueue.events.js b/server/api/faxQueue/faxQueue.events.js
index b44fae9..69fdcfd 100644
--- a/server/api/faxQueue/faxQueue.events.js
+++ b/server/api/faxQueue/faxQueue.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueue/faxQueue.model.js b/server/api/faxQueue/faxQueue.model.js
index cb771fd..93f036e 100644
--- a/server/api/faxQueue/faxQueue.model.js
+++ b/server/api/faxQueue/faxQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueue/faxQueue.rpc.js b/server/api/faxQueue/faxQueue.rpc.js
index d7a4da9..c2532b9 100644
--- a/server/api/faxQueue/faxQueue.rpc.js
+++ b/server/api/faxQueue/faxQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueue/faxQueue.socket.js b/server/api/faxQueue/faxQueue.socket.js
index 4f7db21..51f108d 100644
--- a/server/api/faxQueue/faxQueue.socket.js
+++ b/server/api/faxQueue/faxQueue.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueue/index.js b/server/api/faxQueue/index.js
index 6ec1d18..f64e180 100644
--- a/server/api/faxQueue/index.js
+++ b/server/api/faxQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueueReport/faxQueueReport.attributes.js b/server/api/faxQueueReport/faxQueueReport.attributes.js
index ea29f9e..86baee4 100644
--- a/server/api/faxQueueReport/faxQueueReport.attributes.js
+++ b/server/api/faxQueueReport/faxQueueReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueueReport/faxQueueReport.controller.js b/server/api/faxQueueReport/faxQueueReport.controller.js
index 92b70f1..eb2ebbf 100644
--- a/server/api/faxQueueReport/faxQueueReport.controller.js
+++ b/server/api/faxQueueReport/faxQueueReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueueReport/faxQueueReport.model.js b/server/api/faxQueueReport/faxQueueReport.model.js
index bc52b1a..df15cad 100644
--- a/server/api/faxQueueReport/faxQueueReport.model.js
+++ b/server/api/faxQueueReport/faxQueueReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueueReport/faxQueueReport.rpc.js b/server/api/faxQueueReport/faxQueueReport.rpc.js
index 65562fa..08a3847 100644
--- a/server/api/faxQueueReport/faxQueueReport.rpc.js
+++ b/server/api/faxQueueReport/faxQueueReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxQueueReport/index.js b/server/api/faxQueueReport/index.js
index 4299346..1fa5a97 100644
--- a/server/api/faxQueueReport/index.js
+++ b/server/api/faxQueueReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxTransferReport/faxTransferReport.attributes.js b/server/api/faxTransferReport/faxTransferReport.attributes.js
index 3d7feae..2c02298 100644
--- a/server/api/faxTransferReport/faxTransferReport.attributes.js
+++ b/server/api/faxTransferReport/faxTransferReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxTransferReport/faxTransferReport.controller.js b/server/api/faxTransferReport/faxTransferReport.controller.js
index 23d9577..94653a7 100644
--- a/server/api/faxTransferReport/faxTransferReport.controller.js
+++ b/server/api/faxTransferReport/faxTransferReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxTransferReport/faxTransferReport.model.js b/server/api/faxTransferReport/faxTransferReport.model.js
index bdc4b71..9dcf408 100644
--- a/server/api/faxTransferReport/faxTransferReport.model.js
+++ b/server/api/faxTransferReport/faxTransferReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxTransferReport/faxTransferReport.rpc.js b/server/api/faxTransferReport/faxTransferReport.rpc.js
index 4b0294b..e643a8c 100644
--- a/server/api/faxTransferReport/faxTransferReport.rpc.js
+++ b/server/api/faxTransferReport/faxTransferReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/faxTransferReport/index.js b/server/api/faxTransferReport/index.js
index 36f56f9..65e7b84 100644
--- a/server/api/faxTransferReport/index.js
+++ b/server/api/faxTransferReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskAccount/index.js b/server/api/intDeskAccount/index.js
index 05b5ffb..18a848c 100644
--- a/server/api/intDeskAccount/index.js
+++ b/server/api/intDeskAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskAccount/intDeskAccount.attributes.js b/server/api/intDeskAccount/intDeskAccount.attributes.js
index 979ec78..e4184da 100644
--- a/server/api/intDeskAccount/intDeskAccount.attributes.js
+++ b/server/api/intDeskAccount/intDeskAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskAccount/intDeskAccount.controller.js b/server/api/intDeskAccount/intDeskAccount.controller.js
index cde3cda..6106f82 100644
--- a/server/api/intDeskAccount/intDeskAccount.controller.js
+++ b/server/api/intDeskAccount/intDeskAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskAccount/intDeskAccount.model.js b/server/api/intDeskAccount/intDeskAccount.model.js
index 70ee8f6..7488a05 100644
--- a/server/api/intDeskAccount/intDeskAccount.model.js
+++ b/server/api/intDeskAccount/intDeskAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskAccount/intDeskAccount.rpc.js b/server/api/intDeskAccount/intDeskAccount.rpc.js
index cb77000..705d585 100644
--- a/server/api/intDeskAccount/intDeskAccount.rpc.js
+++ b/server/api/intDeskAccount/intDeskAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskConfiguration/index.js b/server/api/intDeskConfiguration/index.js
index b11f553..2a6f5c9 100644
--- a/server/api/intDeskConfiguration/index.js
+++ b/server/api/intDeskConfiguration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskConfiguration/intDeskConfiguration.attributes.js b/server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
index b85efa8..a688135 100644
--- a/server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
+++ b/server/api/intDeskConfiguration/intDeskConfiguration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x66e9=['STRING','sequelize','exports'];(function(_0x5805d7,_0x3d584a){var _0x170fe4=function(_0x3b9b73){while(--_0x3b9b73){_0x5805d7['push'](_0x5805d7['shift']());}};_0x170fe4(++_0x3d584a);}(_0x66e9,0x76));var _0x966e=function(_0x4ce028,_0x526d4b){_0x4ce028=_0x4ce028-0x0;var _0x583d0c=_0x66e9[_0x4ce028];return _0x583d0c;};'use strict';var Sequelize=require(_0x966e('0x0'));module[_0x966e('0x1')]={'name':{'type':Sequelize[_0x966e('0x2')]},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
+'use strict';var Sequelize=require('sequelize');module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize['STRING']}};
\ No newline at end of file
diff --git a/server/api/intDeskConfiguration/intDeskConfiguration.controller.js b/server/api/intDeskConfiguration/intDeskConfiguration.controller.js
index b517d54..ef70178 100644
--- a/server/api/intDeskConfiguration/intDeskConfiguration.controller.js
+++ b/server/api/intDeskConfiguration/intDeskConfiguration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskConfiguration/intDeskConfiguration.model.js b/server/api/intDeskConfiguration/intDeskConfiguration.model.js
index 587fcb9..31e38a1 100644
--- a/server/api/intDeskConfiguration/intDeskConfiguration.model.js
+++ b/server/api/intDeskConfiguration/intDeskConfiguration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskConfiguration/intDeskConfiguration.rpc.js b/server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
index 3e0c059..2a5ff08 100644
--- a/server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
+++ b/server/api/intDeskConfiguration/intDeskConfiguration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskField/index.js b/server/api/intDeskField/index.js
index 46d7c5a..0cb57b4 100644
--- a/server/api/intDeskField/index.js
+++ b/server/api/intDeskField/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskField/intDeskField.attributes.js b/server/api/intDeskField/intDeskField.attributes.js
index 355be03..d8d8927 100644
--- a/server/api/intDeskField/intDeskField.attributes.js
+++ b/server/api/intDeskField/intDeskField.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskField/intDeskField.controller.js b/server/api/intDeskField/intDeskField.controller.js
index 2d24a48..5c45061 100644
--- a/server/api/intDeskField/intDeskField.controller.js
+++ b/server/api/intDeskField/intDeskField.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskField/intDeskField.model.js b/server/api/intDeskField/intDeskField.model.js
index 657452e..569660e 100644
--- a/server/api/intDeskField/intDeskField.model.js
+++ b/server/api/intDeskField/intDeskField.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDeskField/intDeskField.rpc.js b/server/api/intDeskField/intDeskField.rpc.js
index e719659..5a541fd 100644
--- a/server/api/intDeskField/intDeskField.rpc.js
+++ b/server/api/intDeskField/intDeskField.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Account/index.js b/server/api/intDynamics365Account/index.js
index b4ea0c9..8b80d19 100644
--- a/server/api/intDynamics365Account/index.js
+++ b/server/api/intDynamics365Account/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Account/intDynamics365Account.attributes.js b/server/api/intDynamics365Account/intDynamics365Account.attributes.js
index 91e42c3..f679ba1 100644
--- a/server/api/intDynamics365Account/intDynamics365Account.attributes.js
+++ b/server/api/intDynamics365Account/intDynamics365Account.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Account/intDynamics365Account.controller.js b/server/api/intDynamics365Account/intDynamics365Account.controller.js
index 6469695..6709c01 100644
--- a/server/api/intDynamics365Account/intDynamics365Account.controller.js
+++ b/server/api/intDynamics365Account/intDynamics365Account.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Account/intDynamics365Account.model.js b/server/api/intDynamics365Account/intDynamics365Account.model.js
index 411a809..e41c7cd 100644
--- a/server/api/intDynamics365Account/intDynamics365Account.model.js
+++ b/server/api/intDynamics365Account/intDynamics365Account.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Account/intDynamics365Account.rpc.js b/server/api/intDynamics365Account/intDynamics365Account.rpc.js
index af06d0b..011cdec 100644
--- a/server/api/intDynamics365Account/intDynamics365Account.rpc.js
+++ b/server/api/intDynamics365Account/intDynamics365Account.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Configuration/index.js b/server/api/intDynamics365Configuration/index.js
index d736cfb..b333198 100644
--- a/server/api/intDynamics365Configuration/index.js
+++ b/server/api/intDynamics365Configuration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js b/server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
index d6ab2af..4b589c9 100644
--- a/server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
+++ b/server/api/intDynamics365Configuration/intDynamics365Configuration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js b/server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
index 178c456..f795a9c 100644
--- a/server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
+++ b/server/api/intDynamics365Configuration/intDynamics365Configuration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Configuration/intDynamics365Configuration.model.js b/server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
index e131514..3f436f8 100644
--- a/server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
+++ b/server/api/intDynamics365Configuration/intDynamics365Configuration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js b/server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
index 9166bad..0e08209 100644
--- a/server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
+++ b/server/api/intDynamics365Configuration/intDynamics365Configuration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Field/index.js b/server/api/intDynamics365Field/index.js
index cfed87a..912db27 100644
--- a/server/api/intDynamics365Field/index.js
+++ b/server/api/intDynamics365Field/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Field/intDynamics365Field.attributes.js b/server/api/intDynamics365Field/intDynamics365Field.attributes.js
index 333a12b..c470e17 100644
--- a/server/api/intDynamics365Field/intDynamics365Field.attributes.js
+++ b/server/api/intDynamics365Field/intDynamics365Field.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Field/intDynamics365Field.controller.js b/server/api/intDynamics365Field/intDynamics365Field.controller.js
index 109295f..569257a 100644
--- a/server/api/intDynamics365Field/intDynamics365Field.controller.js
+++ b/server/api/intDynamics365Field/intDynamics365Field.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Field/intDynamics365Field.model.js b/server/api/intDynamics365Field/intDynamics365Field.model.js
index ea10f40..48951ea 100644
--- a/server/api/intDynamics365Field/intDynamics365Field.model.js
+++ b/server/api/intDynamics365Field/intDynamics365Field.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intDynamics365Field/intDynamics365Field.rpc.js b/server/api/intDynamics365Field/intDynamics365Field.rpc.js
index 6f89c6e..ef4030e 100644
--- a/server/api/intDynamics365Field/intDynamics365Field.rpc.js
+++ b/server/api/intDynamics365Field/intDynamics365Field.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskAccount/index.js b/server/api/intFreshdeskAccount/index.js
index 0fd8cb4..8562a3d 100644
--- a/server/api/intFreshdeskAccount/index.js
+++ b/server/api/intFreshdeskAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js b/server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
index 53e6d67..2286884 100644
--- a/server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
+++ b/server/api/intFreshdeskAccount/intFreshdeskAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js b/server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
index f3e4443..a4467ec 100644
--- a/server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
+++ b/server/api/intFreshdeskAccount/intFreshdeskAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskAccount/intFreshdeskAccount.model.js b/server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
index af5637f..a6317ba 100644
--- a/server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
+++ b/server/api/intFreshdeskAccount/intFreshdeskAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js b/server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
index 74035a0..ff0f11b 100644
--- a/server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
+++ b/server/api/intFreshdeskAccount/intFreshdeskAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskConfiguration/index.js b/server/api/intFreshdeskConfiguration/index.js
index b7d0043..bb4e977 100644
--- a/server/api/intFreshdeskConfiguration/index.js
+++ b/server/api/intFreshdeskConfiguration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
index 76d4ead..07d0da8 100644
--- a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
+++ b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xa497=['sequelize','STRING'];(function(_0x5a3abf,_0x5448c6){var _0xf02c9b=function(_0x7af518){while(--_0x7af518){_0x5a3abf['push'](_0x5a3abf['shift']());}};_0xf02c9b(++_0x5448c6);}(_0xa497,0x9e));var _0x7a49=function(_0x1d472a,_0x18bef2){_0x1d472a=_0x1d472a-0x0;var _0x50f16e=_0xa497[_0x1d472a];return _0x50f16e;};'use strict';var Sequelize=require(_0x7a49('0x0'));module['exports']={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x7a49('0x1')]}};
\ No newline at end of file
+var _0xa806=['STRING','sequelize','exports'];(function(_0x11c361,_0x4f5b42){var _0x1f5355=function(_0x259200){while(--_0x259200){_0x11c361['push'](_0x11c361['shift']());}};_0x1f5355(++_0x4f5b42);}(_0xa806,0x100));var _0x6a80=function(_0x230951,_0x4dad52){_0x230951=_0x230951-0x0;var _0xeb26b1=_0xa806[_0x230951];return _0xeb26b1;};'use strict';var Sequelize=require(_0x6a80('0x0'));module[_0x6a80('0x1')]={'name':{'type':Sequelize[_0x6a80('0x2')]},'description':{'type':Sequelize[_0x6a80('0x2')]}};
\ No newline at end of file
diff --git a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
index 00556e4..b48e646 100644
--- a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
+++ b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
index b410884..ed9fa51 100644
--- a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
+++ b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
index c367cbd..80f38ad 100644
--- a/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
+++ b/server/api/intFreshdeskConfiguration/intFreshdeskConfiguration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskField/index.js b/server/api/intFreshdeskField/index.js
index 1576afb..5dce9c2 100644
--- a/server/api/intFreshdeskField/index.js
+++ b/server/api/intFreshdeskField/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskField/intFreshdeskField.attributes.js b/server/api/intFreshdeskField/intFreshdeskField.attributes.js
index 4ca2448..5f398a4 100644
--- a/server/api/intFreshdeskField/intFreshdeskField.attributes.js
+++ b/server/api/intFreshdeskField/intFreshdeskField.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskField/intFreshdeskField.controller.js b/server/api/intFreshdeskField/intFreshdeskField.controller.js
index 85597a6..9562935 100644
--- a/server/api/intFreshdeskField/intFreshdeskField.controller.js
+++ b/server/api/intFreshdeskField/intFreshdeskField.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskField/intFreshdeskField.model.js b/server/api/intFreshdeskField/intFreshdeskField.model.js
index 5d85d6f..90e2801 100644
--- a/server/api/intFreshdeskField/intFreshdeskField.model.js
+++ b/server/api/intFreshdeskField/intFreshdeskField.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshdeskField/intFreshdeskField.rpc.js b/server/api/intFreshdeskField/intFreshdeskField.rpc.js
index 9518682..8f218f2 100644
--- a/server/api/intFreshdeskField/intFreshdeskField.rpc.js
+++ b/server/api/intFreshdeskField/intFreshdeskField.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesAccount/index.js b/server/api/intFreshsalesAccount/index.js
index e986c75..8604e93 100644
--- a/server/api/intFreshsalesAccount/index.js
+++ b/server/api/intFreshsalesAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js b/server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
index cf03b11..b2e15d1 100644
--- a/server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
+++ b/server/api/intFreshsalesAccount/intFreshsalesAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js b/server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
index 3608eb5..7fd6336 100644
--- a/server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
+++ b/server/api/intFreshsalesAccount/intFreshsalesAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesAccount/intFreshsalesAccount.model.js b/server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
index b3c6fdb..31413ea 100644
--- a/server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
+++ b/server/api/intFreshsalesAccount/intFreshsalesAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js b/server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
index d828f9f..32e34fe 100644
--- a/server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
+++ b/server/api/intFreshsalesAccount/intFreshsalesAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesConfiguration/index.js b/server/api/intFreshsalesConfiguration/index.js
index b855552..9f5f0c0 100644
--- a/server/api/intFreshsalesConfiguration/index.js
+++ b/server/api/intFreshsalesConfiguration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
index 32e96cc..7375451 100644
--- a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
+++ b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x8500=['exports','STRING'];(function(_0x5d7955,_0x4c808f){var _0x71f885=function(_0x4db924){while(--_0x4db924){_0x5d7955['push'](_0x5d7955['shift']());}};_0x71f885(++_0x4c808f);}(_0x8500,0x1ac));var _0x0850=function(_0x2b368b,_0x5c1600){_0x2b368b=_0x2b368b-0x0;var _0x2adabf=_0x8500[_0x2b368b];return _0x2adabf;};'use strict';var Sequelize=require('sequelize');module[_0x0850('0x0')]={'name':{'type':Sequelize[_0x0850('0x1')]},'description':{'type':Sequelize[_0x0850('0x1')]}};
\ No newline at end of file
+var _0xdcb4=['STRING','sequelize','exports'];(function(_0x30fd21,_0x243160){var _0x9b474a=function(_0x20f2b2){while(--_0x20f2b2){_0x30fd21['push'](_0x30fd21['shift']());}};_0x9b474a(++_0x243160);}(_0xdcb4,0x17b));var _0x4dcb=function(_0x5a423c,_0x520993){_0x5a423c=_0x5a423c-0x0;var _0x2bcdd8=_0xdcb4[_0x5a423c];return _0x2bcdd8;};'use strict';var Sequelize=require(_0x4dcb('0x0'));module[_0x4dcb('0x1')]={'name':{'type':Sequelize[_0x4dcb('0x2')]},'description':{'type':Sequelize[_0x4dcb('0x2')]}};
\ No newline at end of file
diff --git a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
index 0ce3873..76ad152 100644
--- a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
+++ b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
index d7c1021..2fdbe89 100644
--- a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
+++ b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
index 5cb997a..15b458c 100644
--- a/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
+++ b/server/api/intFreshsalesConfiguration/intFreshsalesConfiguration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesField/index.js b/server/api/intFreshsalesField/index.js
index 6e661ab..fb32be4 100644
--- a/server/api/intFreshsalesField/index.js
+++ b/server/api/intFreshsalesField/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesField/intFreshsalesField.attributes.js b/server/api/intFreshsalesField/intFreshsalesField.attributes.js
index a7a264d..b0ad1ae 100644
--- a/server/api/intFreshsalesField/intFreshsalesField.attributes.js
+++ b/server/api/intFreshsalesField/intFreshsalesField.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesField/intFreshsalesField.controller.js b/server/api/intFreshsalesField/intFreshsalesField.controller.js
index 33aa27e..7d95a60 100644
--- a/server/api/intFreshsalesField/intFreshsalesField.controller.js
+++ b/server/api/intFreshsalesField/intFreshsalesField.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesField/intFreshsalesField.model.js b/server/api/intFreshsalesField/intFreshsalesField.model.js
index 9dae3e5..b363868 100644
--- a/server/api/intFreshsalesField/intFreshsalesField.model.js
+++ b/server/api/intFreshsalesField/intFreshsalesField.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intFreshsalesField/intFreshsalesField.rpc.js b/server/api/intFreshsalesField/intFreshsalesField.rpc.js
index fc08732..007edb0 100644
--- a/server/api/intFreshsalesField/intFreshsalesField.rpc.js
+++ b/server/api/intFreshsalesField/intFreshsalesField.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceAccount/index.js b/server/api/intSalesforceAccount/index.js
index a5475d2..60ceafa 100644
--- a/server/api/intSalesforceAccount/index.js
+++ b/server/api/intSalesforceAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceAccount/intSalesforceAccount.attributes.js b/server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
index 4b433aa..2a13bb0 100644
--- a/server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
+++ b/server/api/intSalesforceAccount/intSalesforceAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceAccount/intSalesforceAccount.controller.js b/server/api/intSalesforceAccount/intSalesforceAccount.controller.js
index ca33833..bd0c465 100644
--- a/server/api/intSalesforceAccount/intSalesforceAccount.controller.js
+++ b/server/api/intSalesforceAccount/intSalesforceAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceAccount/intSalesforceAccount.model.js b/server/api/intSalesforceAccount/intSalesforceAccount.model.js
index 58cc793..20c04ea 100644
--- a/server/api/intSalesforceAccount/intSalesforceAccount.model.js
+++ b/server/api/intSalesforceAccount/intSalesforceAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceAccount/intSalesforceAccount.rpc.js b/server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
index 4a5f8f7..5531bb6 100644
--- a/server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
+++ b/server/api/intSalesforceAccount/intSalesforceAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceConfiguration/index.js b/server/api/intSalesforceConfiguration/index.js
index d0f1976..b1376e9 100644
--- a/server/api/intSalesforceConfiguration/index.js
+++ b/server/api/intSalesforceConfiguration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
index 5a899af..8019bfb 100644
--- a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
+++ b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
index 06cd3ec..8118c10 100644
--- a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
+++ b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
index 094ac6c..22500aa 100644
--- a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
+++ b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
index 213ca89..d07b701 100644
--- a/server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
+++ b/server/api/intSalesforceConfiguration/intSalesforceConfiguration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceField/index.js b/server/api/intSalesforceField/index.js
index ed64dfa..93ab561 100644
--- a/server/api/intSalesforceField/index.js
+++ b/server/api/intSalesforceField/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceField/intSalesforceField.attributes.js b/server/api/intSalesforceField/intSalesforceField.attributes.js
index c22bf36..9993744 100644
--- a/server/api/intSalesforceField/intSalesforceField.attributes.js
+++ b/server/api/intSalesforceField/intSalesforceField.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceField/intSalesforceField.controller.js b/server/api/intSalesforceField/intSalesforceField.controller.js
index 7ac7bc1..3010157 100644
--- a/server/api/intSalesforceField/intSalesforceField.controller.js
+++ b/server/api/intSalesforceField/intSalesforceField.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceField/intSalesforceField.model.js b/server/api/intSalesforceField/intSalesforceField.model.js
index bccebff..7614124 100644
--- a/server/api/intSalesforceField/intSalesforceField.model.js
+++ b/server/api/intSalesforceField/intSalesforceField.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSalesforceField/intSalesforceField.rpc.js b/server/api/intSalesforceField/intSalesforceField.rpc.js
index 2b910de..6587405 100644
--- a/server/api/intSalesforceField/intSalesforceField.rpc.js
+++ b/server/api/intSalesforceField/intSalesforceField.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowAccount/index.js b/server/api/intServicenowAccount/index.js
index b513b35..387eb15 100644
--- a/server/api/intServicenowAccount/index.js
+++ b/server/api/intServicenowAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowAccount/intServicenowAccount.attributes.js b/server/api/intServicenowAccount/intServicenowAccount.attributes.js
index e63dbeb..c6a1492 100644
--- a/server/api/intServicenowAccount/intServicenowAccount.attributes.js
+++ b/server/api/intServicenowAccount/intServicenowAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowAccount/intServicenowAccount.controller.js b/server/api/intServicenowAccount/intServicenowAccount.controller.js
index 4759ebf..e55a3d2 100644
--- a/server/api/intServicenowAccount/intServicenowAccount.controller.js
+++ b/server/api/intServicenowAccount/intServicenowAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowAccount/intServicenowAccount.model.js b/server/api/intServicenowAccount/intServicenowAccount.model.js
index c0a00a7..93da568 100644
--- a/server/api/intServicenowAccount/intServicenowAccount.model.js
+++ b/server/api/intServicenowAccount/intServicenowAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowAccount/intServicenowAccount.rpc.js b/server/api/intServicenowAccount/intServicenowAccount.rpc.js
index c2c3378..fbccdc2 100644
--- a/server/api/intServicenowAccount/intServicenowAccount.rpc.js
+++ b/server/api/intServicenowAccount/intServicenowAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowConfiguration/index.js b/server/api/intServicenowConfiguration/index.js
index 46dc755..200f04b 100644
--- a/server/api/intServicenowConfiguration/index.js
+++ b/server/api/intServicenowConfiguration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js b/server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
index e827014..8523200 100644
--- a/server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
+++ b/server/api/intServicenowConfiguration/intServicenowConfiguration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x3100=['STRING','sequelize','exports'];(function(_0x125c96,_0x22f7f7){var _0x4f8412=function(_0x5c69f1){while(--_0x5c69f1){_0x125c96['push'](_0x125c96['shift']());}};_0x4f8412(++_0x22f7f7);}(_0x3100,0x106));var _0x0310=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x3100[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x0310('0x0'));module[_0x0310('0x1')]={'name':{'type':Sequelize[_0x0310('0x2')]},'description':{'type':Sequelize[_0x0310('0x2')]}};
\ No newline at end of file
+var _0x0968=['sequelize','exports','STRING'];(function(_0x6eeb,_0x2d4507){var _0x42a9fb=function(_0x50fc59){while(--_0x50fc59){_0x6eeb['push'](_0x6eeb['shift']());}};_0x42a9fb(++_0x2d4507);}(_0x0968,0x192));var _0x8096=function(_0x2b0281,_0x280e52){_0x2b0281=_0x2b0281-0x0;var _0x1ca7b4=_0x0968[_0x2b0281];return _0x1ca7b4;};'use strict';var Sequelize=require(_0x8096('0x0'));module[_0x8096('0x1')]={'name':{'type':Sequelize['STRING']},'description':{'type':Sequelize[_0x8096('0x2')]}};
\ No newline at end of file
diff --git a/server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js b/server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
index db5646f..0e27b50 100644
--- a/server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
+++ b/server/api/intServicenowConfiguration/intServicenowConfiguration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowConfiguration/intServicenowConfiguration.model.js b/server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
index 42020fc..2bed8d0 100644
--- a/server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
+++ b/server/api/intServicenowConfiguration/intServicenowConfiguration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js b/server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
index 9554ab9..642fad3 100644
--- a/server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
+++ b/server/api/intServicenowConfiguration/intServicenowConfiguration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowField/index.js b/server/api/intServicenowField/index.js
index 6f9dedf..5dbbbad 100644
--- a/server/api/intServicenowField/index.js
+++ b/server/api/intServicenowField/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowField/intServicenowField.attributes.js b/server/api/intServicenowField/intServicenowField.attributes.js
index ff01b34..7d9f122 100644
--- a/server/api/intServicenowField/intServicenowField.attributes.js
+++ b/server/api/intServicenowField/intServicenowField.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowField/intServicenowField.controller.js b/server/api/intServicenowField/intServicenowField.controller.js
index 9a7e798..b4312e8 100644
--- a/server/api/intServicenowField/intServicenowField.controller.js
+++ b/server/api/intServicenowField/intServicenowField.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowField/intServicenowField.model.js b/server/api/intServicenowField/intServicenowField.model.js
index c180c39..fb43e9a 100644
--- a/server/api/intServicenowField/intServicenowField.model.js
+++ b/server/api/intServicenowField/intServicenowField.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intServicenowField/intServicenowField.rpc.js b/server/api/intServicenowField/intServicenowField.rpc.js
index 7c4eb8c..ecaf15f 100644
--- a/server/api/intServicenowField/intServicenowField.rpc.js
+++ b/server/api/intServicenowField/intServicenowField.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmAccount/index.js b/server/api/intSugarcrmAccount/index.js
index a3feede..6e4af4a 100644
--- a/server/api/intSugarcrmAccount/index.js
+++ b/server/api/intSugarcrmAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js b/server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
index 1193210..c17ea10 100644
--- a/server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
+++ b/server/api/intSugarcrmAccount/intSugarcrmAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js b/server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
index fcd26d7..3da4ff2 100644
--- a/server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
+++ b/server/api/intSugarcrmAccount/intSugarcrmAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmAccount/intSugarcrmAccount.model.js b/server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
index b720a42..4f0243e 100644
--- a/server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
+++ b/server/api/intSugarcrmAccount/intSugarcrmAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js b/server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
index 29f2feb..6c7003b 100644
--- a/server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
+++ b/server/api/intSugarcrmAccount/intSugarcrmAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmConfiguration/index.js b/server/api/intSugarcrmConfiguration/index.js
index 6b3c596..4fc1c16 100644
--- a/server/api/intSugarcrmConfiguration/index.js
+++ b/server/api/intSugarcrmConfiguration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
index 1f7926e..877bdf0 100644
--- a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
+++ b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xc6bb=['exports','STRING','sequelize'];(function(_0x1f2390,_0x5d3f5f){var _0xe19912=function(_0x185653){while(--_0x185653){_0x1f2390['push'](_0x1f2390['shift']());}};_0xe19912(++_0x5d3f5f);}(_0xc6bb,0x8f));var _0xbc6b=function(_0x533747,_0x2c2225){_0x533747=_0x533747-0x0;var _0x4fda7b=_0xc6bb[_0x533747];return _0x4fda7b;};'use strict';var Sequelize=require(_0xbc6b('0x0'));module[_0xbc6b('0x1')]={'name':{'type':Sequelize[_0xbc6b('0x2')]},'description':{'type':Sequelize[_0xbc6b('0x2')]}};
\ No newline at end of file
+var _0xce36=['STRING','sequelize','exports'];(function(_0xbf93ae,_0x3ea545){var _0x4e1196=function(_0x222ea4){while(--_0x222ea4){_0xbf93ae['push'](_0xbf93ae['shift']());}};_0x4e1196(++_0x3ea545);}(_0xce36,0x1d5));var _0x6ce3=function(_0x3bd52b,_0xbbc735){_0x3bd52b=_0x3bd52b-0x0;var _0x1e5b89=_0xce36[_0x3bd52b];return _0x1e5b89;};'use strict';var Sequelize=require(_0x6ce3('0x0'));module[_0x6ce3('0x1')]={'name':{'type':Sequelize[_0x6ce3('0x2')]},'description':{'type':Sequelize[_0x6ce3('0x2')]}};
\ No newline at end of file
diff --git a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
index 943e255..6292f84 100644
--- a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
+++ b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
index 8ca281d..67ae8db 100644
--- a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
+++ b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
index 4c9a3ba..b9eb929 100644
--- a/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
+++ b/server/api/intSugarcrmConfiguration/intSugarcrmConfiguration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmField/index.js b/server/api/intSugarcrmField/index.js
index 6cbfd5d..671209b 100644
--- a/server/api/intSugarcrmField/index.js
+++ b/server/api/intSugarcrmField/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmField/intSugarcrmField.attributes.js b/server/api/intSugarcrmField/intSugarcrmField.attributes.js
index 355db5b..89166c7 100644
--- a/server/api/intSugarcrmField/intSugarcrmField.attributes.js
+++ b/server/api/intSugarcrmField/intSugarcrmField.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmField/intSugarcrmField.controller.js b/server/api/intSugarcrmField/intSugarcrmField.controller.js
index f7b94cb..3489c1a 100644
--- a/server/api/intSugarcrmField/intSugarcrmField.controller.js
+++ b/server/api/intSugarcrmField/intSugarcrmField.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmField/intSugarcrmField.model.js b/server/api/intSugarcrmField/intSugarcrmField.model.js
index 37edbc8..2b1e47e 100644
--- a/server/api/intSugarcrmField/intSugarcrmField.model.js
+++ b/server/api/intSugarcrmField/intSugarcrmField.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intSugarcrmField/intSugarcrmField.rpc.js b/server/api/intSugarcrmField/intSugarcrmField.rpc.js
index cd19f3b..a668e25 100644
--- a/server/api/intSugarcrmField/intSugarcrmField.rpc.js
+++ b/server/api/intSugarcrmField/intSugarcrmField.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerAccount/index.js b/server/api/intVtigerAccount/index.js
index 9b1636c..84fa9c9 100644
--- a/server/api/intVtigerAccount/index.js
+++ b/server/api/intVtigerAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerAccount/intVtigerAccount.attributes.js b/server/api/intVtigerAccount/intVtigerAccount.attributes.js
index 7ef3344..6933356 100644
--- a/server/api/intVtigerAccount/intVtigerAccount.attributes.js
+++ b/server/api/intVtigerAccount/intVtigerAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerAccount/intVtigerAccount.controller.js b/server/api/intVtigerAccount/intVtigerAccount.controller.js
index c24a7bb..35de5ae 100644
--- a/server/api/intVtigerAccount/intVtigerAccount.controller.js
+++ b/server/api/intVtigerAccount/intVtigerAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerAccount/intVtigerAccount.model.js b/server/api/intVtigerAccount/intVtigerAccount.model.js
index 3a9ce0d..db0e033 100644
--- a/server/api/intVtigerAccount/intVtigerAccount.model.js
+++ b/server/api/intVtigerAccount/intVtigerAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerAccount/intVtigerAccount.rpc.js b/server/api/intVtigerAccount/intVtigerAccount.rpc.js
index 41360fa..e57b7dd 100644
--- a/server/api/intVtigerAccount/intVtigerAccount.rpc.js
+++ b/server/api/intVtigerAccount/intVtigerAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerConfiguration/index.js b/server/api/intVtigerConfiguration/index.js
index 6418090..5cd936b 100644
--- a/server/api/intVtigerConfiguration/index.js
+++ b/server/api/intVtigerConfiguration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js b/server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
index 4e82483..f25e8e1 100644
--- a/server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
+++ b/server/api/intVtigerConfiguration/intVtigerConfiguration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xdb53=['sequelize','exports','STRING'];(function(_0x24237f,_0x4cf32c){var _0x48298e=function(_0x3f7511){while(--_0x3f7511){_0x24237f['push'](_0x24237f['shift']());}};_0x48298e(++_0x4cf32c);}(_0xdb53,0x8d));var _0x3db5=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0xdb53[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x3db5('0x0'));module[_0x3db5('0x1')]={'name':{'type':Sequelize[_0x3db5('0x2')]},'description':{'type':Sequelize[_0x3db5('0x2')]}};
\ No newline at end of file
+var _0x2055=['exports','STRING'];(function(_0xa4cefb,_0x3fb7e3){var _0x3cb0a5=function(_0x13489e){while(--_0x13489e){_0xa4cefb['push'](_0xa4cefb['shift']());}};_0x3cb0a5(++_0x3fb7e3);}(_0x2055,0xb0));var _0x5205=function(_0x3efd86,_0x2df2de){_0x3efd86=_0x3efd86-0x0;var _0x5488b1=_0x2055[_0x3efd86];return _0x5488b1;};'use strict';var Sequelize=require('sequelize');module[_0x5205('0x0')]={'name':{'type':Sequelize[_0x5205('0x1')]},'description':{'type':Sequelize[_0x5205('0x1')]}};
\ No newline at end of file
diff --git a/server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js b/server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
index ad33780..a2f35eb 100644
--- a/server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
+++ b/server/api/intVtigerConfiguration/intVtigerConfiguration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerConfiguration/intVtigerConfiguration.model.js b/server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
index c47f362..cc156b9 100644
--- a/server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
+++ b/server/api/intVtigerConfiguration/intVtigerConfiguration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js b/server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
index 40879f0..d9eac26 100644
--- a/server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
+++ b/server/api/intVtigerConfiguration/intVtigerConfiguration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerField/index.js b/server/api/intVtigerField/index.js
index 2e60b02..15b8fc0 100644
--- a/server/api/intVtigerField/index.js
+++ b/server/api/intVtigerField/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerField/intVtigerField.attributes.js b/server/api/intVtigerField/intVtigerField.attributes.js
index e8e1113..13a47d7 100644
--- a/server/api/intVtigerField/intVtigerField.attributes.js
+++ b/server/api/intVtigerField/intVtigerField.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerField/intVtigerField.controller.js b/server/api/intVtigerField/intVtigerField.controller.js
index 0158eab..86c74f7 100644
--- a/server/api/intVtigerField/intVtigerField.controller.js
+++ b/server/api/intVtigerField/intVtigerField.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerField/intVtigerField.model.js b/server/api/intVtigerField/intVtigerField.model.js
index 433edf9..a82e0b5 100644
--- a/server/api/intVtigerField/intVtigerField.model.js
+++ b/server/api/intVtigerField/intVtigerField.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intVtigerField/intVtigerField.rpc.js b/server/api/intVtigerField/intVtigerField.rpc.js
index 149a7cf..901a8f2 100644
--- a/server/api/intVtigerField/intVtigerField.rpc.js
+++ b/server/api/intVtigerField/intVtigerField.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskAccount/index.js b/server/api/intZendeskAccount/index.js
index 6783bc9..9f98046 100644
--- a/server/api/intZendeskAccount/index.js
+++ b/server/api/intZendeskAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskAccount/intZendeskAccount.attributes.js b/server/api/intZendeskAccount/intZendeskAccount.attributes.js
index 3a829a3..eacbba5 100644
--- a/server/api/intZendeskAccount/intZendeskAccount.attributes.js
+++ b/server/api/intZendeskAccount/intZendeskAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskAccount/intZendeskAccount.controller.js b/server/api/intZendeskAccount/intZendeskAccount.controller.js
index cd314a2..c3061c0 100644
--- a/server/api/intZendeskAccount/intZendeskAccount.controller.js
+++ b/server/api/intZendeskAccount/intZendeskAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskAccount/intZendeskAccount.model.js b/server/api/intZendeskAccount/intZendeskAccount.model.js
index 1ea0376..122e746 100644
--- a/server/api/intZendeskAccount/intZendeskAccount.model.js
+++ b/server/api/intZendeskAccount/intZendeskAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskAccount/intZendeskAccount.rpc.js b/server/api/intZendeskAccount/intZendeskAccount.rpc.js
index 2525d82..89d4d27 100644
--- a/server/api/intZendeskAccount/intZendeskAccount.rpc.js
+++ b/server/api/intZendeskAccount/intZendeskAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskConfiguration/index.js b/server/api/intZendeskConfiguration/index.js
index d3fc6c1..ea5b73a 100644
--- a/server/api/intZendeskConfiguration/index.js
+++ b/server/api/intZendeskConfiguration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js b/server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
index 8d0ac2d..816f9c5 100644
--- a/server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
+++ b/server/api/intZendeskConfiguration/intZendeskConfiguration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x364e=['STRING','sequelize','exports'];(function(_0x4dc63a,_0x2b4f2f){var _0xee072b=function(_0x2c0e18){while(--_0x2c0e18){_0x4dc63a['push'](_0x4dc63a['shift']());}};_0xee072b(++_0x2b4f2f);}(_0x364e,0x67));var _0xe364=function(_0x58afd5,_0x534a48){_0x58afd5=_0x58afd5-0x0;var _0x3e503b=_0x364e[_0x58afd5];return _0x3e503b;};'use strict';var Sequelize=require(_0xe364('0x0'));module[_0xe364('0x1')]={'name':{'type':Sequelize[_0xe364('0x2')]},'description':{'type':Sequelize[_0xe364('0x2')]}};
\ No newline at end of file
+var _0x5f43=['sequelize','exports','STRING'];(function(_0x56bc60,_0x1170d6){var _0x27b648=function(_0x214958){while(--_0x214958){_0x56bc60['push'](_0x56bc60['shift']());}};_0x27b648(++_0x1170d6);}(_0x5f43,0x174));var _0x35f4=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5f43[_0x3dd15e];return _0x231fd0;};'use strict';var Sequelize=require(_0x35f4('0x0'));module[_0x35f4('0x1')]={'name':{'type':Sequelize[_0x35f4('0x2')]},'description':{'type':Sequelize[_0x35f4('0x2')]}};
\ No newline at end of file
diff --git a/server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js b/server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
index ac6ef9e..baf5893 100644
--- a/server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
+++ b/server/api/intZendeskConfiguration/intZendeskConfiguration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskConfiguration/intZendeskConfiguration.model.js b/server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
index b9cec25..3d3c27f 100644
--- a/server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
+++ b/server/api/intZendeskConfiguration/intZendeskConfiguration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js b/server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
index d510c48..76a0184 100644
--- a/server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
+++ b/server/api/intZendeskConfiguration/intZendeskConfiguration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskField/index.js b/server/api/intZendeskField/index.js
index de115d5..9677e70 100644
--- a/server/api/intZendeskField/index.js
+++ b/server/api/intZendeskField/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskField/intZendeskField.attributes.js b/server/api/intZendeskField/intZendeskField.attributes.js
index 60f550b..715ca30 100644
--- a/server/api/intZendeskField/intZendeskField.attributes.js
+++ b/server/api/intZendeskField/intZendeskField.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskField/intZendeskField.controller.js b/server/api/intZendeskField/intZendeskField.controller.js
index 033068a..c71e803 100644
--- a/server/api/intZendeskField/intZendeskField.controller.js
+++ b/server/api/intZendeskField/intZendeskField.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskField/intZendeskField.model.js b/server/api/intZendeskField/intZendeskField.model.js
index cfb6710..87b4464 100644
--- a/server/api/intZendeskField/intZendeskField.model.js
+++ b/server/api/intZendeskField/intZendeskField.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZendeskField/intZendeskField.rpc.js b/server/api/intZendeskField/intZendeskField.rpc.js
index b03e668..4c9336a 100644
--- a/server/api/intZendeskField/intZendeskField.rpc.js
+++ b/server/api/intZendeskField/intZendeskField.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoAccount/index.js b/server/api/intZohoAccount/index.js
index c4fa8c6..1f62c65 100644
--- a/server/api/intZohoAccount/index.js
+++ b/server/api/intZohoAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoAccount/intZohoAccount.attributes.js b/server/api/intZohoAccount/intZohoAccount.attributes.js
index c85cde5..44797a3 100644
--- a/server/api/intZohoAccount/intZohoAccount.attributes.js
+++ b/server/api/intZohoAccount/intZohoAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoAccount/intZohoAccount.controller.js b/server/api/intZohoAccount/intZohoAccount.controller.js
index 60323a7..f264e5f 100644
--- a/server/api/intZohoAccount/intZohoAccount.controller.js
+++ b/server/api/intZohoAccount/intZohoAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoAccount/intZohoAccount.model.js b/server/api/intZohoAccount/intZohoAccount.model.js
index b70c48b..20ba05c 100644
--- a/server/api/intZohoAccount/intZohoAccount.model.js
+++ b/server/api/intZohoAccount/intZohoAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoAccount/intZohoAccount.rpc.js b/server/api/intZohoAccount/intZohoAccount.rpc.js
index ac9af55..f049003 100644
--- a/server/api/intZohoAccount/intZohoAccount.rpc.js
+++ b/server/api/intZohoAccount/intZohoAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoConfiguration/index.js b/server/api/intZohoConfiguration/index.js
index 1e26e1b..a05044b 100644
--- a/server/api/intZohoConfiguration/index.js
+++ b/server/api/intZohoConfiguration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoConfiguration/intZohoConfiguration.attributes.js b/server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
index 8249c1f..ba7eeef 100644
--- a/server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
+++ b/server/api/intZohoConfiguration/intZohoConfiguration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoConfiguration/intZohoConfiguration.controller.js b/server/api/intZohoConfiguration/intZohoConfiguration.controller.js
index 5ddee10..456739e 100644
--- a/server/api/intZohoConfiguration/intZohoConfiguration.controller.js
+++ b/server/api/intZohoConfiguration/intZohoConfiguration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoConfiguration/intZohoConfiguration.model.js b/server/api/intZohoConfiguration/intZohoConfiguration.model.js
index 443a18b..2b69842 100644
--- a/server/api/intZohoConfiguration/intZohoConfiguration.model.js
+++ b/server/api/intZohoConfiguration/intZohoConfiguration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoConfiguration/intZohoConfiguration.rpc.js b/server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
index 2e1adbc..d5491d0 100644
--- a/server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
+++ b/server/api/intZohoConfiguration/intZohoConfiguration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoField/index.js b/server/api/intZohoField/index.js
index f2fed10..c2f1c41 100644
--- a/server/api/intZohoField/index.js
+++ b/server/api/intZohoField/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoField/intZohoField.attributes.js b/server/api/intZohoField/intZohoField.attributes.js
index a6720ab..b82f9d8 100644
--- a/server/api/intZohoField/intZohoField.attributes.js
+++ b/server/api/intZohoField/intZohoField.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoField/intZohoField.controller.js b/server/api/intZohoField/intZohoField.controller.js
index 47e19b0..f7511f3 100644
--- a/server/api/intZohoField/intZohoField.controller.js
+++ b/server/api/intZohoField/intZohoField.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoField/intZohoField.model.js b/server/api/intZohoField/intZohoField.model.js
index 2794635..45008c6 100644
--- a/server/api/intZohoField/intZohoField.model.js
+++ b/server/api/intZohoField/intZohoField.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/intZohoField/intZohoField.rpc.js b/server/api/intZohoField/intZohoField.rpc.js
index f4c5479..37c1e57 100644
--- a/server/api/intZohoField/intZohoField.rpc.js
+++ b/server/api/intZohoField/intZohoField.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/integration/index.js b/server/api/integration/index.js
index 215ecdc..369bc23 100644
--- a/server/api/integration/index.js
+++ b/server/api/integration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/integration/integration.attributes.js b/server/api/integration/integration.attributes.js
index f92e9c5..d9be6e0 100644
--- a/server/api/integration/integration.attributes.js
+++ b/server/api/integration/integration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/integration/integration.controller.js b/server/api/integration/integration.controller.js
index fb37f61..45ec4a7 100644
--- a/server/api/integration/integration.controller.js
+++ b/server/api/integration/integration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/integration/integration.model.js b/server/api/integration/integration.model.js
index def37ec..5619adb 100644
--- a/server/api/integration/integration.model.js
+++ b/server/api/integration/integration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/integration/integration.rpc.js b/server/api/integration/integration.rpc.js
index ae42f61..7238ca3 100644
--- a/server/api/integration/integration.rpc.js
+++ b/server/api/integration/integration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/integrationReport/index.js b/server/api/integrationReport/index.js
index 146e386..ad1bf8b 100644
--- a/server/api/integrationReport/index.js
+++ b/server/api/integrationReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/integrationReport/integrationReport.attributes.js b/server/api/integrationReport/integrationReport.attributes.js
index 40183ac..d4454ad 100644
--- a/server/api/integrationReport/integrationReport.attributes.js
+++ b/server/api/integrationReport/integrationReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/integrationReport/integrationReport.controller.js b/server/api/integrationReport/integrationReport.controller.js
index 3f9a2bd..23edf0c 100644
--- a/server/api/integrationReport/integrationReport.controller.js
+++ b/server/api/integrationReport/integrationReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/integrationReport/integrationReport.model.js b/server/api/integrationReport/integrationReport.model.js
index 0d5d688..b9733ea 100644
--- a/server/api/integrationReport/integrationReport.model.js
+++ b/server/api/integrationReport/integrationReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/integrationReport/integrationReport.rpc.js b/server/api/integrationReport/integrationReport.rpc.js
index 7789250..813bea9 100644
--- a/server/api/integrationReport/integrationReport.rpc.js
+++ b/server/api/integrationReport/integrationReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/interval/index.js b/server/api/interval/index.js
index 5b3bce4..a33026b 100644
--- a/server/api/interval/index.js
+++ b/server/api/interval/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/interval/interval.attributes.js b/server/api/interval/interval.attributes.js
index c8a20d4..36ac736 100644
--- a/server/api/interval/interval.attributes.js
+++ b/server/api/interval/interval.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/interval/interval.controller.js b/server/api/interval/interval.controller.js
index 057b839..1a5024b 100644
--- a/server/api/interval/interval.controller.js
+++ b/server/api/interval/interval.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/interval/interval.model.js b/server/api/interval/interval.model.js
index 7b697fd..0e09a6f 100644
--- a/server/api/interval/interval.model.js
+++ b/server/api/interval/interval.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/interval/interval.rpc.js b/server/api/interval/interval.rpc.js
index 7b046ab..940cb21 100644
--- a/server/api/interval/interval.rpc.js
+++ b/server/api/interval/interval.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jira/index.js b/server/api/jira/index.js
index bdffae0..d09d25b 100644
--- a/server/api/jira/index.js
+++ b/server/api/jira/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jira/jira.controller.js b/server/api/jira/jira.controller.js
index 07c9943..eaccc60 100644
--- a/server/api/jira/jira.controller.js
+++ b/server/api/jira/jira.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyAnswerReport/index.js b/server/api/jscriptyAnswerReport/index.js
index 12b4ad6..4de4981 100644
--- a/server/api/jscriptyAnswerReport/index.js
+++ b/server/api/jscriptyAnswerReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
index 190169a..4b9ddce 100644
--- a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
+++ b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
index 131e058..f549ff5 100644
--- a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
+++ b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
index b703374..386eae4 100644
--- a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
+++ b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
index 3a59d05..20574b7 100644
--- a/server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
+++ b/server/api/jscriptyAnswerReport/jscriptyAnswerReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyProject/index.js b/server/api/jscriptyProject/index.js
index 1685468..3f99e33 100644
--- a/server/api/jscriptyProject/index.js
+++ b/server/api/jscriptyProject/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyProject/jscriptyProject.attributes.js b/server/api/jscriptyProject/jscriptyProject.attributes.js
index 4f4fbed..cf0dad4 100644
--- a/server/api/jscriptyProject/jscriptyProject.attributes.js
+++ b/server/api/jscriptyProject/jscriptyProject.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyProject/jscriptyProject.controller.js b/server/api/jscriptyProject/jscriptyProject.controller.js
index 579e3d0..27bc1a4 100644
--- a/server/api/jscriptyProject/jscriptyProject.controller.js
+++ b/server/api/jscriptyProject/jscriptyProject.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyProject/jscriptyProject.model.js b/server/api/jscriptyProject/jscriptyProject.model.js
index 62d5503..bb35a5d 100644
--- a/server/api/jscriptyProject/jscriptyProject.model.js
+++ b/server/api/jscriptyProject/jscriptyProject.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyProject/jscriptyProject.rpc.js b/server/api/jscriptyProject/jscriptyProject.rpc.js
index d35a214..ded76a0 100644
--- a/server/api/jscriptyProject/jscriptyProject.rpc.js
+++ b/server/api/jscriptyProject/jscriptyProject.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyQuestionReport/index.js b/server/api/jscriptyQuestionReport/index.js
index 634520f..25b485e 100644
--- a/server/api/jscriptyQuestionReport/index.js
+++ b/server/api/jscriptyQuestionReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
index 11d2e96..3af3767 100644
--- a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
+++ b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
index 9464284..9e148c1 100644
--- a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
+++ b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
index 03c5a4c..c15a425 100644
--- a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
+++ b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
index 0f0bebc..15e9f51 100644
--- a/server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
+++ b/server/api/jscriptyQuestionReport/jscriptyQuestionReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptySessionReport/index.js b/server/api/jscriptySessionReport/index.js
index ea02ffc..3ee723e 100644
--- a/server/api/jscriptySessionReport/index.js
+++ b/server/api/jscriptySessionReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptySessionReport/jscriptySessionReport.attributes.js b/server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
index 12e8bea..2e1a299 100644
--- a/server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
+++ b/server/api/jscriptySessionReport/jscriptySessionReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptySessionReport/jscriptySessionReport.controller.js b/server/api/jscriptySessionReport/jscriptySessionReport.controller.js
index 6b31395..c089cc1 100644
--- a/server/api/jscriptySessionReport/jscriptySessionReport.controller.js
+++ b/server/api/jscriptySessionReport/jscriptySessionReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptySessionReport/jscriptySessionReport.model.js b/server/api/jscriptySessionReport/jscriptySessionReport.model.js
index 3112c8f..9633920 100644
--- a/server/api/jscriptySessionReport/jscriptySessionReport.model.js
+++ b/server/api/jscriptySessionReport/jscriptySessionReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/jscriptySessionReport/jscriptySessionReport.rpc.js b/server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
index 2dd750f..3f85bc3 100644
--- a/server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
+++ b/server/api/jscriptySessionReport/jscriptySessionReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/license/index.js b/server/api/license/index.js
index f7103d3..dfbe80a 100644
--- a/server/api/license/index.js
+++ b/server/api/license/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/license/license.attributes.js b/server/api/license/license.attributes.js
index 40435cd..99e6d4b 100644
--- a/server/api/license/license.attributes.js
+++ b/server/api/license/license.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/license/license.controller.js b/server/api/license/license.controller.js
index f689763..6480266 100644
--- a/server/api/license/license.controller.js
+++ b/server/api/license/license.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/license/license.model.js b/server/api/license/license.model.js
index b6aee70..ac9be81 100644
--- a/server/api/license/license.model.js
+++ b/server/api/license/license.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/license/license.rpc.js b/server/api/license/license.rpc.js
index 585c3e7..f0dd2b6 100644
--- a/server/api/license/license.rpc.js
+++ b/server/api/license/license.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailAccount/index.js b/server/api/mailAccount/index.js
index c18726c..8c9f725 100644
--- a/server/api/mailAccount/index.js
+++ b/server/api/mailAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailAccount/mailAccount.attributes.js b/server/api/mailAccount/mailAccount.attributes.js
index fa3ca74..f1de168 100644
--- a/server/api/mailAccount/mailAccount.attributes.js
+++ b/server/api/mailAccount/mailAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailAccount/mailAccount.controller.js b/server/api/mailAccount/mailAccount.controller.js
index d0083cf..eb63b9b 100644
--- a/server/api/mailAccount/mailAccount.controller.js
+++ b/server/api/mailAccount/mailAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailAccount/mailAccount.events.js b/server/api/mailAccount/mailAccount.events.js
index 5a37387..1aac11c 100644
--- a/server/api/mailAccount/mailAccount.events.js
+++ b/server/api/mailAccount/mailAccount.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailAccount/mailAccount.model.js b/server/api/mailAccount/mailAccount.model.js
index 71368d4..4ea1777 100644
--- a/server/api/mailAccount/mailAccount.model.js
+++ b/server/api/mailAccount/mailAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailAccount/mailAccount.rpc.js b/server/api/mailAccount/mailAccount.rpc.js
index 43660f3..0ced88a 100644
--- a/server/api/mailAccount/mailAccount.rpc.js
+++ b/server/api/mailAccount/mailAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailAccount/mailAccount.socket.js b/server/api/mailAccount/mailAccount.socket.js
index b140b65..27d9e1d 100644
--- a/server/api/mailAccount/mailAccount.socket.js
+++ b/server/api/mailAccount/mailAccount.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailApplication/index.js b/server/api/mailApplication/index.js
index 108af9c..95c0d73 100644
--- a/server/api/mailApplication/index.js
+++ b/server/api/mailApplication/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailApplication/mailApplication.attributes.js b/server/api/mailApplication/mailApplication.attributes.js
index 62833e0..21d1002 100644
--- a/server/api/mailApplication/mailApplication.attributes.js
+++ b/server/api/mailApplication/mailApplication.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailApplication/mailApplication.controller.js b/server/api/mailApplication/mailApplication.controller.js
index 16ae328..c7738bf 100644
--- a/server/api/mailApplication/mailApplication.controller.js
+++ b/server/api/mailApplication/mailApplication.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailApplication/mailApplication.model.js b/server/api/mailApplication/mailApplication.model.js
index ac19d39..beb1f83 100644
--- a/server/api/mailApplication/mailApplication.model.js
+++ b/server/api/mailApplication/mailApplication.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailApplication/mailApplication.rpc.js b/server/api/mailApplication/mailApplication.rpc.js
index cae6ed8..02ef154 100644
--- a/server/api/mailApplication/mailApplication.rpc.js
+++ b/server/api/mailApplication/mailApplication.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailInteraction/index.js b/server/api/mailInteraction/index.js
index e8c56c7..74a7e34 100644
--- a/server/api/mailInteraction/index.js
+++ b/server/api/mailInteraction/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailInteraction/mailInteraction.attributes.js b/server/api/mailInteraction/mailInteraction.attributes.js
index a0deebb..fc20276 100644
--- a/server/api/mailInteraction/mailInteraction.attributes.js
+++ b/server/api/mailInteraction/mailInteraction.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailInteraction/mailInteraction.controller.js b/server/api/mailInteraction/mailInteraction.controller.js
index 5566f1d..94da93d 100644
--- a/server/api/mailInteraction/mailInteraction.controller.js
+++ b/server/api/mailInteraction/mailInteraction.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailInteraction/mailInteraction.events.js b/server/api/mailInteraction/mailInteraction.events.js
index 1f6569a..9ccca9e 100644
--- a/server/api/mailInteraction/mailInteraction.events.js
+++ b/server/api/mailInteraction/mailInteraction.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailInteraction/mailInteraction.model.js b/server/api/mailInteraction/mailInteraction.model.js
index 044a403..721ebb0 100644
--- a/server/api/mailInteraction/mailInteraction.model.js
+++ b/server/api/mailInteraction/mailInteraction.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailInteraction/mailInteraction.rpc.js b/server/api/mailInteraction/mailInteraction.rpc.js
index 611883b..0845972 100644
--- a/server/api/mailInteraction/mailInteraction.rpc.js
+++ b/server/api/mailInteraction/mailInteraction.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailInteraction/mailInteraction.socket.js b/server/api/mailInteraction/mailInteraction.socket.js
index adf3ca4..d21dbeb 100644
--- a/server/api/mailInteraction/mailInteraction.socket.js
+++ b/server/api/mailInteraction/mailInteraction.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailMessage/index.js b/server/api/mailMessage/index.js
index 05288d0..f6b91f2 100644
--- a/server/api/mailMessage/index.js
+++ b/server/api/mailMessage/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailMessage/mailMessage.attributes.js b/server/api/mailMessage/mailMessage.attributes.js
index 9cd79c2..a00c0ec 100644
--- a/server/api/mailMessage/mailMessage.attributes.js
+++ b/server/api/mailMessage/mailMessage.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailMessage/mailMessage.controller.js b/server/api/mailMessage/mailMessage.controller.js
index ef1dd1b..96306c4 100644
--- a/server/api/mailMessage/mailMessage.controller.js
+++ b/server/api/mailMessage/mailMessage.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailMessage/mailMessage.events.js b/server/api/mailMessage/mailMessage.events.js
index d59e45f..2a92a97 100644
--- a/server/api/mailMessage/mailMessage.events.js
+++ b/server/api/mailMessage/mailMessage.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailMessage/mailMessage.model.js b/server/api/mailMessage/mailMessage.model.js
index 1402ec8..5263c50 100644
--- a/server/api/mailMessage/mailMessage.model.js
+++ b/server/api/mailMessage/mailMessage.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailMessage/mailMessage.rpc.js b/server/api/mailMessage/mailMessage.rpc.js
index ac2fd8b..9e9498d 100644
--- a/server/api/mailMessage/mailMessage.rpc.js
+++ b/server/api/mailMessage/mailMessage.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailMessage/mailMessage.socket.js b/server/api/mailMessage/mailMessage.socket.js
index 8d6f82e..85d0792 100644
--- a/server/api/mailMessage/mailMessage.socket.js
+++ b/server/api/mailMessage/mailMessage.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueue/index.js b/server/api/mailQueue/index.js
index 8cfa3a2..bd51d78 100644
--- a/server/api/mailQueue/index.js
+++ b/server/api/mailQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueue/mailQueue.attributes.js b/server/api/mailQueue/mailQueue.attributes.js
index 2c495dd..a81347b 100644
--- a/server/api/mailQueue/mailQueue.attributes.js
+++ b/server/api/mailQueue/mailQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueue/mailQueue.controller.js b/server/api/mailQueue/mailQueue.controller.js
index 1b4998f..fb5273a 100644
--- a/server/api/mailQueue/mailQueue.controller.js
+++ b/server/api/mailQueue/mailQueue.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueue/mailQueue.events.js b/server/api/mailQueue/mailQueue.events.js
index 42f87d1..996a832 100644
--- a/server/api/mailQueue/mailQueue.events.js
+++ b/server/api/mailQueue/mailQueue.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueue/mailQueue.model.js b/server/api/mailQueue/mailQueue.model.js
index 666c9f0..f3cbeb6 100644
--- a/server/api/mailQueue/mailQueue.model.js
+++ b/server/api/mailQueue/mailQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueue/mailQueue.rpc.js b/server/api/mailQueue/mailQueue.rpc.js
index fd0cdbb..e61eeaf 100644
--- a/server/api/mailQueue/mailQueue.rpc.js
+++ b/server/api/mailQueue/mailQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueue/mailQueue.socket.js b/server/api/mailQueue/mailQueue.socket.js
index 1bcd461..ed32cf7 100644
--- a/server/api/mailQueue/mailQueue.socket.js
+++ b/server/api/mailQueue/mailQueue.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueueReport/index.js b/server/api/mailQueueReport/index.js
index 6de3cdf..184326e 100644
--- a/server/api/mailQueueReport/index.js
+++ b/server/api/mailQueueReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueueReport/mailQueueReport.attributes.js b/server/api/mailQueueReport/mailQueueReport.attributes.js
index c4cd2a8..f5f5dda 100644
--- a/server/api/mailQueueReport/mailQueueReport.attributes.js
+++ b/server/api/mailQueueReport/mailQueueReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueueReport/mailQueueReport.controller.js b/server/api/mailQueueReport/mailQueueReport.controller.js
index 8bb3732..dac5f2a 100644
--- a/server/api/mailQueueReport/mailQueueReport.controller.js
+++ b/server/api/mailQueueReport/mailQueueReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueueReport/mailQueueReport.model.js b/server/api/mailQueueReport/mailQueueReport.model.js
index 5a2473c..8d80338 100644
--- a/server/api/mailQueueReport/mailQueueReport.model.js
+++ b/server/api/mailQueueReport/mailQueueReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailQueueReport/mailQueueReport.rpc.js b/server/api/mailQueueReport/mailQueueReport.rpc.js
index a4bdecc..85f684b 100644
--- a/server/api/mailQueueReport/mailQueueReport.rpc.js
+++ b/server/api/mailQueueReport/mailQueueReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailServerIn/index.js b/server/api/mailServerIn/index.js
index 3d03893..96e774f 100644
--- a/server/api/mailServerIn/index.js
+++ b/server/api/mailServerIn/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailServerIn/mailServerIn.attributes.js b/server/api/mailServerIn/mailServerIn.attributes.js
index 3c1c93d..3b96abc 100644
--- a/server/api/mailServerIn/mailServerIn.attributes.js
+++ b/server/api/mailServerIn/mailServerIn.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailServerIn/mailServerIn.model.js b/server/api/mailServerIn/mailServerIn.model.js
index 959b143..a6fae0f 100644
--- a/server/api/mailServerIn/mailServerIn.model.js
+++ b/server/api/mailServerIn/mailServerIn.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailServerIn/mailServerIn.rpc.js b/server/api/mailServerIn/mailServerIn.rpc.js
index bc2eb4c..1e8de18 100644
--- a/server/api/mailServerIn/mailServerIn.rpc.js
+++ b/server/api/mailServerIn/mailServerIn.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailServerOut/index.js b/server/api/mailServerOut/index.js
index 19edcde..4ab64a4 100644
--- a/server/api/mailServerOut/index.js
+++ b/server/api/mailServerOut/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailServerOut/mailServerOut.attributes.js b/server/api/mailServerOut/mailServerOut.attributes.js
index d7beddf..fdb5e51 100644
--- a/server/api/mailServerOut/mailServerOut.attributes.js
+++ b/server/api/mailServerOut/mailServerOut.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailServerOut/mailServerOut.controller.js b/server/api/mailServerOut/mailServerOut.controller.js
index 7c1c878..bd851fc 100644
--- a/server/api/mailServerOut/mailServerOut.controller.js
+++ b/server/api/mailServerOut/mailServerOut.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailServerOut/mailServerOut.model.js b/server/api/mailServerOut/mailServerOut.model.js
index 75a6cbf..28f0224 100644
--- a/server/api/mailServerOut/mailServerOut.model.js
+++ b/server/api/mailServerOut/mailServerOut.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailServerOut/mailServerOut.rpc.js b/server/api/mailServerOut/mailServerOut.rpc.js
index 02b5bf7..e713435 100644
--- a/server/api/mailServerOut/mailServerOut.rpc.js
+++ b/server/api/mailServerOut/mailServerOut.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailSubstatus/index.js b/server/api/mailSubstatus/index.js
index afc94a6..3c8293c 100644
--- a/server/api/mailSubstatus/index.js
+++ b/server/api/mailSubstatus/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailSubstatus/mailSubstatus.attributes.js b/server/api/mailSubstatus/mailSubstatus.attributes.js
index 41932b2..d73f34a 100644
--- a/server/api/mailSubstatus/mailSubstatus.attributes.js
+++ b/server/api/mailSubstatus/mailSubstatus.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailSubstatus/mailSubstatus.controller.js b/server/api/mailSubstatus/mailSubstatus.controller.js
index d6d5c72..45f2385 100644
--- a/server/api/mailSubstatus/mailSubstatus.controller.js
+++ b/server/api/mailSubstatus/mailSubstatus.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailSubstatus/mailSubstatus.model.js b/server/api/mailSubstatus/mailSubstatus.model.js
index 9fa059e..83805ed 100644
--- a/server/api/mailSubstatus/mailSubstatus.model.js
+++ b/server/api/mailSubstatus/mailSubstatus.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailSubstatus/mailSubstatus.rpc.js b/server/api/mailSubstatus/mailSubstatus.rpc.js
index 14b5e5d..dab92f5 100644
--- a/server/api/mailSubstatus/mailSubstatus.rpc.js
+++ b/server/api/mailSubstatus/mailSubstatus.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailTransferReport/index.js b/server/api/mailTransferReport/index.js
index 0334ca4..01cf24a 100644
--- a/server/api/mailTransferReport/index.js
+++ b/server/api/mailTransferReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailTransferReport/mailTransferReport.attributes.js b/server/api/mailTransferReport/mailTransferReport.attributes.js
index 847203d..12b57b1 100644
--- a/server/api/mailTransferReport/mailTransferReport.attributes.js
+++ b/server/api/mailTransferReport/mailTransferReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailTransferReport/mailTransferReport.controller.js b/server/api/mailTransferReport/mailTransferReport.controller.js
index 220ff6e..5977ea4 100644
--- a/server/api/mailTransferReport/mailTransferReport.controller.js
+++ b/server/api/mailTransferReport/mailTransferReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailTransferReport/mailTransferReport.model.js b/server/api/mailTransferReport/mailTransferReport.model.js
index 851fe27..9fb8fef 100644
--- a/server/api/mailTransferReport/mailTransferReport.model.js
+++ b/server/api/mailTransferReport/mailTransferReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/mailTransferReport/mailTransferReport.rpc.js b/server/api/mailTransferReport/mailTransferReport.rpc.js
index 0f55b00..f0faffe 100644
--- a/server/api/mailTransferReport/mailTransferReport.rpc.js
+++ b/server/api/mailTransferReport/mailTransferReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/memberReport/index.js b/server/api/memberReport/index.js
index 39f438c..757c50c 100644
--- a/server/api/memberReport/index.js
+++ b/server/api/memberReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/memberReport/memberReport.attributes.js b/server/api/memberReport/memberReport.attributes.js
index 3a6f91e..38f6abe 100644
--- a/server/api/memberReport/memberReport.attributes.js
+++ b/server/api/memberReport/memberReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/memberReport/memberReport.controller.js b/server/api/memberReport/memberReport.controller.js
index f3d5ba6..d2acc08 100644
--- a/server/api/memberReport/memberReport.controller.js
+++ b/server/api/memberReport/memberReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/memberReport/memberReport.model.js b/server/api/memberReport/memberReport.model.js
index 9a07dfd..86fe9ca 100644
--- a/server/api/memberReport/memberReport.model.js
+++ b/server/api/memberReport/memberReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/memberReport/memberReport.rpc.js b/server/api/memberReport/memberReport.rpc.js
index 8e32f06..4c6871e 100644
--- a/server/api/memberReport/memberReport.rpc.js
+++ b/server/api/memberReport/memberReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/migration/index.js b/server/api/migration/index.js
index a0e8289..e187cde 100644
--- a/server/api/migration/index.js
+++ b/server/api/migration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/migration/migration.attributes.js b/server/api/migration/migration.attributes.js
index 97cc8b3..5814cfb 100644
--- a/server/api/migration/migration.attributes.js
+++ b/server/api/migration/migration.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xd45c=['STRING','version','sequelize','exports'];(function(_0x3dd15e,_0x1f0015){var _0x231fd0=function(_0x4f680a){while(--_0x4f680a){_0x3dd15e['push'](_0x3dd15e['shift']());}};_0x231fd0(++_0x1f0015);}(_0xd45c,0x9e));var _0xcd45=function(_0x2c91e9,_0x2fb965){_0x2c91e9=_0x2c91e9-0x0;var _0x13f0ff=_0xd45c[_0x2c91e9];return _0x13f0ff;};'use strict';var Sequelize=require(_0xcd45('0x0'));module[_0xcd45('0x1')]={'version':{'type':Sequelize[_0xcd45('0x2')],'unique':_0xcd45('0x3')}};
\ No newline at end of file
+var _0xff33=['version','exports','STRING'];(function(_0x193e28,_0x3dac1d){var _0x20ef59=function(_0x48047e){while(--_0x48047e){_0x193e28['push'](_0x193e28['shift']());}};_0x20ef59(++_0x3dac1d);}(_0xff33,0x1c0));var _0x3ff3=function(_0x4d8a8f,_0x2afd4c){_0x4d8a8f=_0x4d8a8f-0x0;var _0xfc4adc=_0xff33[_0x4d8a8f];return _0xfc4adc;};'use strict';var Sequelize=require('sequelize');module[_0x3ff3('0x0')]={'version':{'type':Sequelize[_0x3ff3('0x1')],'unique':_0x3ff3('0x2')}};
\ No newline at end of file
diff --git a/server/api/migration/migration.controller.js b/server/api/migration/migration.controller.js
index 1853c26..12b646f 100644
--- a/server/api/migration/migration.controller.js
+++ b/server/api/migration/migration.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/migration/migration.model.js b/server/api/migration/migration.model.js
index 533f666..598625b 100644
--- a/server/api/migration/migration.model.js
+++ b/server/api/migration/migration.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/migration/migration.rpc.js b/server/api/migration/migration.rpc.js
index 3510143..7e1ba8c 100644
--- a/server/api/migration/migration.rpc.js
+++ b/server/api/migration/migration.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/network/index.js b/server/api/network/index.js
index 9532105..3788011 100644
--- a/server/api/network/index.js
+++ b/server/api/network/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/network/network.attributes.js b/server/api/network/network.attributes.js
index b8e7925..010fab1 100644
--- a/server/api/network/network.attributes.js
+++ b/server/api/network/network.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/network/network.controller.js b/server/api/network/network.controller.js
index 9c97897..2ee78d2 100644
--- a/server/api/network/network.controller.js
+++ b/server/api/network/network.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/network/network.model.js b/server/api/network/network.model.js
index 322e557..682950c 100644
--- a/server/api/network/network.model.js
+++ b/server/api/network/network.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/network/network.rpc.js b/server/api/network/network.rpc.js
index 10ce859..33841c1 100644
--- a/server/api/network/network.rpc.js
+++ b/server/api/network/network.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/notification/index.js b/server/api/notification/index.js
index 5f8b930..289386f 100644
--- a/server/api/notification/index.js
+++ b/server/api/notification/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/notification/notification.attributes.js b/server/api/notification/notification.attributes.js
index b911686..2fbc682 100644
--- a/server/api/notification/notification.attributes.js
+++ b/server/api/notification/notification.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/notification/notification.controller.js b/server/api/notification/notification.controller.js
index 8eda267..6d02104 100644
--- a/server/api/notification/notification.controller.js
+++ b/server/api/notification/notification.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/notification/notification.events.js b/server/api/notification/notification.events.js
index 64da8fb..b3ee496 100644
--- a/server/api/notification/notification.events.js
+++ b/server/api/notification/notification.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/notification/notification.model.js b/server/api/notification/notification.model.js
index 02cec48..ac1f2db 100644
--- a/server/api/notification/notification.model.js
+++ b/server/api/notification/notification.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/notification/notification.rpc.js b/server/api/notification/notification.rpc.js
index f72e556..a173a4a 100644
--- a/server/api/notification/notification.rpc.js
+++ b/server/api/notification/notification.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/notification/notification.socket.js b/server/api/notification/notification.socket.js
index 1556d24..c7a6c23 100644
--- a/server/api/notification/notification.socket.js
+++ b/server/api/notification/notification.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelAccount/index.js b/server/api/openchannelAccount/index.js
index c852f94..5bd48e5 100644
--- a/server/api/openchannelAccount/index.js
+++ b/server/api/openchannelAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelAccount/openchannelAccount.attributes.js b/server/api/openchannelAccount/openchannelAccount.attributes.js
index efb9233..9539746 100644
--- a/server/api/openchannelAccount/openchannelAccount.attributes.js
+++ b/server/api/openchannelAccount/openchannelAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelAccount/openchannelAccount.controller.js b/server/api/openchannelAccount/openchannelAccount.controller.js
index 5c2c514..e901a08 100644
--- a/server/api/openchannelAccount/openchannelAccount.controller.js
+++ b/server/api/openchannelAccount/openchannelAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelAccount/openchannelAccount.events.js b/server/api/openchannelAccount/openchannelAccount.events.js
index b786ba7..06a44f6 100644
--- a/server/api/openchannelAccount/openchannelAccount.events.js
+++ b/server/api/openchannelAccount/openchannelAccount.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelAccount/openchannelAccount.model.js b/server/api/openchannelAccount/openchannelAccount.model.js
index 514d383..6c8d0ac 100644
--- a/server/api/openchannelAccount/openchannelAccount.model.js
+++ b/server/api/openchannelAccount/openchannelAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelAccount/openchannelAccount.rpc.js b/server/api/openchannelAccount/openchannelAccount.rpc.js
index ad70cc9..c55e2a0 100644
--- a/server/api/openchannelAccount/openchannelAccount.rpc.js
+++ b/server/api/openchannelAccount/openchannelAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelAccount/openchannelAccount.socket.js b/server/api/openchannelAccount/openchannelAccount.socket.js
index 27f98fa..993e47b 100644
--- a/server/api/openchannelAccount/openchannelAccount.socket.js
+++ b/server/api/openchannelAccount/openchannelAccount.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelApplication/index.js b/server/api/openchannelApplication/index.js
index f0c0e66..fae47c0 100644
--- a/server/api/openchannelApplication/index.js
+++ b/server/api/openchannelApplication/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelApplication/openchannelApplication.attributes.js b/server/api/openchannelApplication/openchannelApplication.attributes.js
index 437c293..a0c6a0a 100644
--- a/server/api/openchannelApplication/openchannelApplication.attributes.js
+++ b/server/api/openchannelApplication/openchannelApplication.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelApplication/openchannelApplication.controller.js b/server/api/openchannelApplication/openchannelApplication.controller.js
index 9440cd4..28cd0e1 100644
--- a/server/api/openchannelApplication/openchannelApplication.controller.js
+++ b/server/api/openchannelApplication/openchannelApplication.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelApplication/openchannelApplication.model.js b/server/api/openchannelApplication/openchannelApplication.model.js
index 732b976..e4dba41 100644
--- a/server/api/openchannelApplication/openchannelApplication.model.js
+++ b/server/api/openchannelApplication/openchannelApplication.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelApplication/openchannelApplication.rpc.js b/server/api/openchannelApplication/openchannelApplication.rpc.js
index d3d5cd3..cc46f3a 100644
--- a/server/api/openchannelApplication/openchannelApplication.rpc.js
+++ b/server/api/openchannelApplication/openchannelApplication.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelInteraction/index.js b/server/api/openchannelInteraction/index.js
index a2afe5b..c34b185 100644
--- a/server/api/openchannelInteraction/index.js
+++ b/server/api/openchannelInteraction/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelInteraction/openchannelInteraction.attributes.js b/server/api/openchannelInteraction/openchannelInteraction.attributes.js
index 1b14cec..21aa27a 100644
--- a/server/api/openchannelInteraction/openchannelInteraction.attributes.js
+++ b/server/api/openchannelInteraction/openchannelInteraction.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelInteraction/openchannelInteraction.controller.js b/server/api/openchannelInteraction/openchannelInteraction.controller.js
index 7ecf782..7eeba86 100644
--- a/server/api/openchannelInteraction/openchannelInteraction.controller.js
+++ b/server/api/openchannelInteraction/openchannelInteraction.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelInteraction/openchannelInteraction.events.js b/server/api/openchannelInteraction/openchannelInteraction.events.js
index 5d17333..d5f82c2 100644
--- a/server/api/openchannelInteraction/openchannelInteraction.events.js
+++ b/server/api/openchannelInteraction/openchannelInteraction.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelInteraction/openchannelInteraction.model.js b/server/api/openchannelInteraction/openchannelInteraction.model.js
index 8407481..2d3a087 100644
--- a/server/api/openchannelInteraction/openchannelInteraction.model.js
+++ b/server/api/openchannelInteraction/openchannelInteraction.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelInteraction/openchannelInteraction.rpc.js b/server/api/openchannelInteraction/openchannelInteraction.rpc.js
index 612e674..0413154 100644
--- a/server/api/openchannelInteraction/openchannelInteraction.rpc.js
+++ b/server/api/openchannelInteraction/openchannelInteraction.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelInteraction/openchannelInteraction.socket.js b/server/api/openchannelInteraction/openchannelInteraction.socket.js
index dae4628..ddae2c7 100644
--- a/server/api/openchannelInteraction/openchannelInteraction.socket.js
+++ b/server/api/openchannelInteraction/openchannelInteraction.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelMessage/index.js b/server/api/openchannelMessage/index.js
index 77d61b4..bc2393a 100644
--- a/server/api/openchannelMessage/index.js
+++ b/server/api/openchannelMessage/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelMessage/openchannelMessage.attributes.js b/server/api/openchannelMessage/openchannelMessage.attributes.js
index 34f6d42..b94da6d 100644
--- a/server/api/openchannelMessage/openchannelMessage.attributes.js
+++ b/server/api/openchannelMessage/openchannelMessage.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelMessage/openchannelMessage.controller.js b/server/api/openchannelMessage/openchannelMessage.controller.js
index cb8e8c7..db29b2e 100644
--- a/server/api/openchannelMessage/openchannelMessage.controller.js
+++ b/server/api/openchannelMessage/openchannelMessage.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelMessage/openchannelMessage.events.js b/server/api/openchannelMessage/openchannelMessage.events.js
index 36b2659..439626e 100644
--- a/server/api/openchannelMessage/openchannelMessage.events.js
+++ b/server/api/openchannelMessage/openchannelMessage.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelMessage/openchannelMessage.model.js b/server/api/openchannelMessage/openchannelMessage.model.js
index a756305..6048287 100644
--- a/server/api/openchannelMessage/openchannelMessage.model.js
+++ b/server/api/openchannelMessage/openchannelMessage.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelMessage/openchannelMessage.rpc.js b/server/api/openchannelMessage/openchannelMessage.rpc.js
index dbce175..9c10ac5 100644
--- a/server/api/openchannelMessage/openchannelMessage.rpc.js
+++ b/server/api/openchannelMessage/openchannelMessage.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelMessage/openchannelMessage.socket.js b/server/api/openchannelMessage/openchannelMessage.socket.js
index 53fd0d6..0a03304 100644
--- a/server/api/openchannelMessage/openchannelMessage.socket.js
+++ b/server/api/openchannelMessage/openchannelMessage.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueue/index.js b/server/api/openchannelQueue/index.js
index 51fa0cf..a18f278 100644
--- a/server/api/openchannelQueue/index.js
+++ b/server/api/openchannelQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueue/openchannelQueue.attributes.js b/server/api/openchannelQueue/openchannelQueue.attributes.js
index 03d4f3a..14279a2 100644
--- a/server/api/openchannelQueue/openchannelQueue.attributes.js
+++ b/server/api/openchannelQueue/openchannelQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueue/openchannelQueue.controller.js b/server/api/openchannelQueue/openchannelQueue.controller.js
index 33c7de7..32c6f48 100644
--- a/server/api/openchannelQueue/openchannelQueue.controller.js
+++ b/server/api/openchannelQueue/openchannelQueue.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueue/openchannelQueue.events.js b/server/api/openchannelQueue/openchannelQueue.events.js
index b1660ee..20a41b3 100644
--- a/server/api/openchannelQueue/openchannelQueue.events.js
+++ b/server/api/openchannelQueue/openchannelQueue.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueue/openchannelQueue.model.js b/server/api/openchannelQueue/openchannelQueue.model.js
index 44995b1..3c2758b 100644
--- a/server/api/openchannelQueue/openchannelQueue.model.js
+++ b/server/api/openchannelQueue/openchannelQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueue/openchannelQueue.rpc.js b/server/api/openchannelQueue/openchannelQueue.rpc.js
index 7547287..9b5a08f 100644
--- a/server/api/openchannelQueue/openchannelQueue.rpc.js
+++ b/server/api/openchannelQueue/openchannelQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueue/openchannelQueue.socket.js b/server/api/openchannelQueue/openchannelQueue.socket.js
index 92dadac..3eb7eae 100644
--- a/server/api/openchannelQueue/openchannelQueue.socket.js
+++ b/server/api/openchannelQueue/openchannelQueue.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueueReport/index.js b/server/api/openchannelQueueReport/index.js
index 101b8bf..a5f5e98 100644
--- a/server/api/openchannelQueueReport/index.js
+++ b/server/api/openchannelQueueReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueueReport/openchannelQueueReport.attributes.js b/server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
index d1e89e7..ba752ae 100644
--- a/server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
+++ b/server/api/openchannelQueueReport/openchannelQueueReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueueReport/openchannelQueueReport.controller.js b/server/api/openchannelQueueReport/openchannelQueueReport.controller.js
index a49dc68..49eeb7c 100644
--- a/server/api/openchannelQueueReport/openchannelQueueReport.controller.js
+++ b/server/api/openchannelQueueReport/openchannelQueueReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueueReport/openchannelQueueReport.model.js b/server/api/openchannelQueueReport/openchannelQueueReport.model.js
index fdeede4..e050781 100644
--- a/server/api/openchannelQueueReport/openchannelQueueReport.model.js
+++ b/server/api/openchannelQueueReport/openchannelQueueReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelQueueReport/openchannelQueueReport.rpc.js b/server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
index a368a12..ad55871 100644
--- a/server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
+++ b/server/api/openchannelQueueReport/openchannelQueueReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelTransferReport/index.js b/server/api/openchannelTransferReport/index.js
index 554e816..87fe060 100644
--- a/server/api/openchannelTransferReport/index.js
+++ b/server/api/openchannelTransferReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelTransferReport/openchannelTransferReport.attributes.js b/server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
index b1d2990..40fe09e 100644
--- a/server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
+++ b/server/api/openchannelTransferReport/openchannelTransferReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelTransferReport/openchannelTransferReport.controller.js b/server/api/openchannelTransferReport/openchannelTransferReport.controller.js
index ff1d1a8..88b1e63 100644
--- a/server/api/openchannelTransferReport/openchannelTransferReport.controller.js
+++ b/server/api/openchannelTransferReport/openchannelTransferReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelTransferReport/openchannelTransferReport.model.js b/server/api/openchannelTransferReport/openchannelTransferReport.model.js
index 8528fa6..261309b 100644
--- a/server/api/openchannelTransferReport/openchannelTransferReport.model.js
+++ b/server/api/openchannelTransferReport/openchannelTransferReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/openchannelTransferReport/openchannelTransferReport.rpc.js b/server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
index 053541f..70d452a 100644
--- a/server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
+++ b/server/api/openchannelTransferReport/openchannelTransferReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/pause/index.js b/server/api/pause/index.js
index 455e3b7..fb87a5e 100644
--- a/server/api/pause/index.js
+++ b/server/api/pause/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/pause/pause.attributes.js b/server/api/pause/pause.attributes.js
index 729c949..7e84077 100644
--- a/server/api/pause/pause.attributes.js
+++ b/server/api/pause/pause.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/pause/pause.controller.js b/server/api/pause/pause.controller.js
index 0c10601..a2c30f9 100644
--- a/server/api/pause/pause.controller.js
+++ b/server/api/pause/pause.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/pause/pause.model.js b/server/api/pause/pause.model.js
index f3099e7..b37001d 100644
--- a/server/api/pause/pause.model.js
+++ b/server/api/pause/pause.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/pause/pause.rpc.js b/server/api/pause/pause.rpc.js
index af18846..bfdd0a4 100644
--- a/server/api/pause/pause.rpc.js
+++ b/server/api/pause/pause.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/plugin/index.js b/server/api/plugin/index.js
index 8cda410..e796c8b 100644
--- a/server/api/plugin/index.js
+++ b/server/api/plugin/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/plugin/plugin.attributes.js b/server/api/plugin/plugin.attributes.js
index 8053362..207fe1e 100644
--- a/server/api/plugin/plugin.attributes.js
+++ b/server/api/plugin/plugin.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/plugin/plugin.controller.js b/server/api/plugin/plugin.controller.js
index a273238..bf99080 100644
--- a/server/api/plugin/plugin.controller.js
+++ b/server/api/plugin/plugin.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/plugin/plugin.events.js b/server/api/plugin/plugin.events.js
index 38eaad9..adfa71f 100644
--- a/server/api/plugin/plugin.events.js
+++ b/server/api/plugin/plugin.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/plugin/plugin.model.js b/server/api/plugin/plugin.model.js
index 7b2bdd6..5436fa3 100644
--- a/server/api/plugin/plugin.model.js
+++ b/server/api/plugin/plugin.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/plugin/plugin.rpc.js b/server/api/plugin/plugin.rpc.js
index 15e553c..d4d8e62 100644
--- a/server/api/plugin/plugin.rpc.js
+++ b/server/api/plugin/plugin.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/plugin/plugin.socket.js b/server/api/plugin/plugin.socket.js
index be1516f..8521cf3 100644
--- a/server/api/plugin/plugin.socket.js
+++ b/server/api/plugin/plugin.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/pm2/index.js b/server/api/pm2/index.js
index 9fc9827..24a8e41 100644
--- a/server/api/pm2/index.js
+++ b/server/api/pm2/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/pm2/pm2.controller.js b/server/api/pm2/pm2.controller.js
index ca149f7..31a4fea 100644
--- a/server/api/pm2/pm2.controller.js
+++ b/server/api/pm2/pm2.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/reportAgentPreview/index.js b/server/api/reportAgentPreview/index.js
index 5406062..3cb2717 100644
--- a/server/api/reportAgentPreview/index.js
+++ b/server/api/reportAgentPreview/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/reportAgentPreview/reportAgentPreview.attributes.js b/server/api/reportAgentPreview/reportAgentPreview.attributes.js
index adeb386..5692924 100644
--- a/server/api/reportAgentPreview/reportAgentPreview.attributes.js
+++ b/server/api/reportAgentPreview/reportAgentPreview.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/reportAgentPreview/reportAgentPreview.model.js b/server/api/reportAgentPreview/reportAgentPreview.model.js
index 4ca0efb..3c5d9ed 100644
--- a/server/api/reportAgentPreview/reportAgentPreview.model.js
+++ b/server/api/reportAgentPreview/reportAgentPreview.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/reportAgentPreview/reportAgentPreview.rpc.js b/server/api/reportAgentPreview/reportAgentPreview.rpc.js
index 95c1abd..545caac 100644
--- a/server/api/reportAgentPreview/reportAgentPreview.rpc.js
+++ b/server/api/reportAgentPreview/reportAgentPreview.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/rpc/index.js b/server/api/rpc/index.js
index 8ecebfb..63d0f47 100644
--- a/server/api/rpc/index.js
+++ b/server/api/rpc/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/rpc/rpc.controller.js b/server/api/rpc/rpc.controller.js
index 1cda1ff..9a8ba3d 100644
--- a/server/api/rpc/rpc.controller.js
+++ b/server/api/rpc/rpc.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/schedule/index.js b/server/api/schedule/index.js
index c20d7e0..3a4c981 100644
--- a/server/api/schedule/index.js
+++ b/server/api/schedule/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/schedule/schedule.attributes.js b/server/api/schedule/schedule.attributes.js
index 9b913ff..a9a67e5 100644
--- a/server/api/schedule/schedule.attributes.js
+++ b/server/api/schedule/schedule.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/schedule/schedule.controller.js b/server/api/schedule/schedule.controller.js
index eb8804a..ee043f3 100644
--- a/server/api/schedule/schedule.controller.js
+++ b/server/api/schedule/schedule.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/schedule/schedule.model.js b/server/api/schedule/schedule.model.js
index 08464a1..cc73ca8 100644
--- a/server/api/schedule/schedule.model.js
+++ b/server/api/schedule/schedule.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/schedule/schedule.rpc.js b/server/api/schedule/schedule.rpc.js
index 82e0ba1..df9cad8 100644
--- a/server/api/schedule/schedule.rpc.js
+++ b/server/api/schedule/schedule.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/screenRecording/index.js b/server/api/screenRecording/index.js
index 0dacbe7..6b045fb 100644
--- a/server/api/screenRecording/index.js
+++ b/server/api/screenRecording/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/screenRecording/screenRecording.attributes.js b/server/api/screenRecording/screenRecording.attributes.js
index 4ba3a7d..4561bea 100644
--- a/server/api/screenRecording/screenRecording.attributes.js
+++ b/server/api/screenRecording/screenRecording.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/screenRecording/screenRecording.controller.js b/server/api/screenRecording/screenRecording.controller.js
index 13aea97..66647e1 100644
--- a/server/api/screenRecording/screenRecording.controller.js
+++ b/server/api/screenRecording/screenRecording.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/screenRecording/screenRecording.model.js b/server/api/screenRecording/screenRecording.model.js
index e6093a2..519b1b7 100644
--- a/server/api/screenRecording/screenRecording.model.js
+++ b/server/api/screenRecording/screenRecording.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/screenRecording/screenRecording.rpc.js b/server/api/screenRecording/screenRecording.rpc.js
index cba72f1..444f0fe 100644
--- a/server/api/screenRecording/screenRecording.rpc.js
+++ b/server/api/screenRecording/screenRecording.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/setting/index.js b/server/api/setting/index.js
index a92d34e..f6b061a 100644
--- a/server/api/setting/index.js
+++ b/server/api/setting/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/setting/setting.attributes.js b/server/api/setting/setting.attributes.js
index 5592c58..c3908b5 100644
--- a/server/api/setting/setting.attributes.js
+++ b/server/api/setting/setting.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/setting/setting.controller.js b/server/api/setting/setting.controller.js
index 2e841e8..9a44c2b 100644
--- a/server/api/setting/setting.controller.js
+++ b/server/api/setting/setting.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/setting/setting.model.js b/server/api/setting/setting.model.js
index fbc1fe5..602f295 100644
--- a/server/api/setting/setting.model.js
+++ b/server/api/setting/setting.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/setting/setting.rpc.js b/server/api/setting/setting.rpc.js
index 4a7df4a..f6f2903 100644
--- a/server/api/setting/setting.rpc.js
+++ b/server/api/setting/setting.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsAccount/index.js b/server/api/smsAccount/index.js
index 32d3368..d4b5e12 100644
--- a/server/api/smsAccount/index.js
+++ b/server/api/smsAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsAccount/smsAccount.attributes.js b/server/api/smsAccount/smsAccount.attributes.js
index d0277ae..fcb4333 100644
--- a/server/api/smsAccount/smsAccount.attributes.js
+++ b/server/api/smsAccount/smsAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsAccount/smsAccount.controller.js b/server/api/smsAccount/smsAccount.controller.js
index d4ec321..1a25296 100644
--- a/server/api/smsAccount/smsAccount.controller.js
+++ b/server/api/smsAccount/smsAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsAccount/smsAccount.events.js b/server/api/smsAccount/smsAccount.events.js
index d3ef02c..ba58f0e 100644
--- a/server/api/smsAccount/smsAccount.events.js
+++ b/server/api/smsAccount/smsAccount.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsAccount/smsAccount.model.js b/server/api/smsAccount/smsAccount.model.js
index 1ccbb1e..e151e6b 100644
--- a/server/api/smsAccount/smsAccount.model.js
+++ b/server/api/smsAccount/smsAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsAccount/smsAccount.rpc.js b/server/api/smsAccount/smsAccount.rpc.js
index e7d8153..0a6c29f 100644
--- a/server/api/smsAccount/smsAccount.rpc.js
+++ b/server/api/smsAccount/smsAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsAccount/smsAccount.socket.js b/server/api/smsAccount/smsAccount.socket.js
index 2660d6a..294b080 100644
--- a/server/api/smsAccount/smsAccount.socket.js
+++ b/server/api/smsAccount/smsAccount.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsApplication/index.js b/server/api/smsApplication/index.js
index c28c91b..78a999e 100644
--- a/server/api/smsApplication/index.js
+++ b/server/api/smsApplication/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsApplication/smsApplication.attributes.js b/server/api/smsApplication/smsApplication.attributes.js
index 70766b8..37c5b10 100644
--- a/server/api/smsApplication/smsApplication.attributes.js
+++ b/server/api/smsApplication/smsApplication.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsApplication/smsApplication.controller.js b/server/api/smsApplication/smsApplication.controller.js
index 068b22c..9defe26 100644
--- a/server/api/smsApplication/smsApplication.controller.js
+++ b/server/api/smsApplication/smsApplication.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsApplication/smsApplication.model.js b/server/api/smsApplication/smsApplication.model.js
index 5d2e17a..b4d0f3e 100644
--- a/server/api/smsApplication/smsApplication.model.js
+++ b/server/api/smsApplication/smsApplication.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsApplication/smsApplication.rpc.js b/server/api/smsApplication/smsApplication.rpc.js
index 87196ae..cad8dbf 100644
--- a/server/api/smsApplication/smsApplication.rpc.js
+++ b/server/api/smsApplication/smsApplication.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsInteraction/index.js b/server/api/smsInteraction/index.js
index 5343122..e0f25cb 100644
--- a/server/api/smsInteraction/index.js
+++ b/server/api/smsInteraction/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsInteraction/smsInteraction.attributes.js b/server/api/smsInteraction/smsInteraction.attributes.js
index f1f71f6..7a94dc6 100644
--- a/server/api/smsInteraction/smsInteraction.attributes.js
+++ b/server/api/smsInteraction/smsInteraction.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsInteraction/smsInteraction.controller.js b/server/api/smsInteraction/smsInteraction.controller.js
index 192d453..dd87342 100644
--- a/server/api/smsInteraction/smsInteraction.controller.js
+++ b/server/api/smsInteraction/smsInteraction.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsInteraction/smsInteraction.events.js b/server/api/smsInteraction/smsInteraction.events.js
index b815c53..fca0db0 100644
--- a/server/api/smsInteraction/smsInteraction.events.js
+++ b/server/api/smsInteraction/smsInteraction.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsInteraction/smsInteraction.model.js b/server/api/smsInteraction/smsInteraction.model.js
index bba87b2..09e290f 100644
--- a/server/api/smsInteraction/smsInteraction.model.js
+++ b/server/api/smsInteraction/smsInteraction.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsInteraction/smsInteraction.rpc.js b/server/api/smsInteraction/smsInteraction.rpc.js
index bc66303..b98b37d 100644
--- a/server/api/smsInteraction/smsInteraction.rpc.js
+++ b/server/api/smsInteraction/smsInteraction.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsInteraction/smsInteraction.socket.js b/server/api/smsInteraction/smsInteraction.socket.js
index a8d92dc..00d9aeb 100644
--- a/server/api/smsInteraction/smsInteraction.socket.js
+++ b/server/api/smsInteraction/smsInteraction.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsMessage/index.js b/server/api/smsMessage/index.js
index e14f79d..318c076 100644
--- a/server/api/smsMessage/index.js
+++ b/server/api/smsMessage/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsMessage/smsMessage.attributes.js b/server/api/smsMessage/smsMessage.attributes.js
index eb3900f..9a34363 100644
--- a/server/api/smsMessage/smsMessage.attributes.js
+++ b/server/api/smsMessage/smsMessage.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsMessage/smsMessage.controller.js b/server/api/smsMessage/smsMessage.controller.js
index 19a993a..d7803cf 100644
--- a/server/api/smsMessage/smsMessage.controller.js
+++ b/server/api/smsMessage/smsMessage.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsMessage/smsMessage.events.js b/server/api/smsMessage/smsMessage.events.js
index 4a26bc0..0e1b926 100644
--- a/server/api/smsMessage/smsMessage.events.js
+++ b/server/api/smsMessage/smsMessage.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsMessage/smsMessage.model.js b/server/api/smsMessage/smsMessage.model.js
index c9502f6..89b2e9a 100644
--- a/server/api/smsMessage/smsMessage.model.js
+++ b/server/api/smsMessage/smsMessage.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsMessage/smsMessage.rpc.js b/server/api/smsMessage/smsMessage.rpc.js
index c90c211..8b49d05 100644
--- a/server/api/smsMessage/smsMessage.rpc.js
+++ b/server/api/smsMessage/smsMessage.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsMessage/smsMessage.socket.js b/server/api/smsMessage/smsMessage.socket.js
index 2b8b990..cfad554 100644
--- a/server/api/smsMessage/smsMessage.socket.js
+++ b/server/api/smsMessage/smsMessage.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueue/index.js b/server/api/smsQueue/index.js
index 5626a72..12c844b 100644
--- a/server/api/smsQueue/index.js
+++ b/server/api/smsQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueue/smsQueue.attributes.js b/server/api/smsQueue/smsQueue.attributes.js
index ab7a5d1..5b314a3 100644
--- a/server/api/smsQueue/smsQueue.attributes.js
+++ b/server/api/smsQueue/smsQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueue/smsQueue.controller.js b/server/api/smsQueue/smsQueue.controller.js
index 84616f3..3b88297 100644
--- a/server/api/smsQueue/smsQueue.controller.js
+++ b/server/api/smsQueue/smsQueue.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueue/smsQueue.events.js b/server/api/smsQueue/smsQueue.events.js
index 0c5bdf8..60d457b 100644
--- a/server/api/smsQueue/smsQueue.events.js
+++ b/server/api/smsQueue/smsQueue.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueue/smsQueue.model.js b/server/api/smsQueue/smsQueue.model.js
index ca3829a..1c5e165 100644
--- a/server/api/smsQueue/smsQueue.model.js
+++ b/server/api/smsQueue/smsQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueue/smsQueue.rpc.js b/server/api/smsQueue/smsQueue.rpc.js
index c0dc18f..c44e28f 100644
--- a/server/api/smsQueue/smsQueue.rpc.js
+++ b/server/api/smsQueue/smsQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueue/smsQueue.socket.js b/server/api/smsQueue/smsQueue.socket.js
index 0271860..c7c80c1 100644
--- a/server/api/smsQueue/smsQueue.socket.js
+++ b/server/api/smsQueue/smsQueue.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueueReport/index.js b/server/api/smsQueueReport/index.js
index c910338..4020b24 100644
--- a/server/api/smsQueueReport/index.js
+++ b/server/api/smsQueueReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueueReport/smsQueueReport.attributes.js b/server/api/smsQueueReport/smsQueueReport.attributes.js
index 0ec6f36..c208da8 100644
--- a/server/api/smsQueueReport/smsQueueReport.attributes.js
+++ b/server/api/smsQueueReport/smsQueueReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueueReport/smsQueueReport.controller.js b/server/api/smsQueueReport/smsQueueReport.controller.js
index 5684f53..676945c 100644
--- a/server/api/smsQueueReport/smsQueueReport.controller.js
+++ b/server/api/smsQueueReport/smsQueueReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueueReport/smsQueueReport.model.js b/server/api/smsQueueReport/smsQueueReport.model.js
index 8933927..969303e 100644
--- a/server/api/smsQueueReport/smsQueueReport.model.js
+++ b/server/api/smsQueueReport/smsQueueReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsQueueReport/smsQueueReport.rpc.js b/server/api/smsQueueReport/smsQueueReport.rpc.js
index d0ad259..7f6490a 100644
--- a/server/api/smsQueueReport/smsQueueReport.rpc.js
+++ b/server/api/smsQueueReport/smsQueueReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsTransferReport/index.js b/server/api/smsTransferReport/index.js
index e882cc4..52d5b24 100644
--- a/server/api/smsTransferReport/index.js
+++ b/server/api/smsTransferReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsTransferReport/smsTransferReport.attributes.js b/server/api/smsTransferReport/smsTransferReport.attributes.js
index 2d3a52c..75b17c3 100644
--- a/server/api/smsTransferReport/smsTransferReport.attributes.js
+++ b/server/api/smsTransferReport/smsTransferReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsTransferReport/smsTransferReport.controller.js b/server/api/smsTransferReport/smsTransferReport.controller.js
index d2b5464..fde9f7b 100644
--- a/server/api/smsTransferReport/smsTransferReport.controller.js
+++ b/server/api/smsTransferReport/smsTransferReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsTransferReport/smsTransferReport.model.js b/server/api/smsTransferReport/smsTransferReport.model.js
index e120736..2caa4ee 100644
--- a/server/api/smsTransferReport/smsTransferReport.model.js
+++ b/server/api/smsTransferReport/smsTransferReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/smsTransferReport/smsTransferReport.rpc.js b/server/api/smsTransferReport/smsTransferReport.rpc.js
index 057f40a..74614aa 100644
--- a/server/api/smsTransferReport/smsTransferReport.rpc.js
+++ b/server/api/smsTransferReport/smsTransferReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/sound/index.js b/server/api/sound/index.js
index ac155f2..b813b61 100644
--- a/server/api/sound/index.js
+++ b/server/api/sound/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/sound/sound.attributes.js b/server/api/sound/sound.attributes.js
index a72f353..9dd7f46 100644
--- a/server/api/sound/sound.attributes.js
+++ b/server/api/sound/sound.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/sound/sound.controller.js b/server/api/sound/sound.controller.js
index 60afad5..c587f61 100644
--- a/server/api/sound/sound.controller.js
+++ b/server/api/sound/sound.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/sound/sound.model.js b/server/api/sound/sound.model.js
index 72d623f..3c15f78 100644
--- a/server/api/sound/sound.model.js
+++ b/server/api/sound/sound.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/sound/sound.rpc.js b/server/api/sound/sound.rpc.js
index d798d5c..9b5b793 100644
--- a/server/api/sound/sound.rpc.js
+++ b/server/api/sound/sound.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareMessage/index.js b/server/api/squareMessage/index.js
index 6a27843..3ee4006 100644
--- a/server/api/squareMessage/index.js
+++ b/server/api/squareMessage/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareMessage/squareMessage.attributes.js b/server/api/squareMessage/squareMessage.attributes.js
index 48b6b0f..af8e40e 100644
--- a/server/api/squareMessage/squareMessage.attributes.js
+++ b/server/api/squareMessage/squareMessage.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareMessage/squareMessage.controller.js b/server/api/squareMessage/squareMessage.controller.js
index 87beeac..274e01b 100644
--- a/server/api/squareMessage/squareMessage.controller.js
+++ b/server/api/squareMessage/squareMessage.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareMessage/squareMessage.model.js b/server/api/squareMessage/squareMessage.model.js
index 8375519..385a652 100644
--- a/server/api/squareMessage/squareMessage.model.js
+++ b/server/api/squareMessage/squareMessage.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareMessage/squareMessage.rpc.js b/server/api/squareMessage/squareMessage.rpc.js
index 511b784..445d65e 100644
--- a/server/api/squareMessage/squareMessage.rpc.js
+++ b/server/api/squareMessage/squareMessage.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareOdbc/index.js b/server/api/squareOdbc/index.js
index 792080c..2086d1b 100644
--- a/server/api/squareOdbc/index.js
+++ b/server/api/squareOdbc/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareOdbc/squareOdbc.attributes.js b/server/api/squareOdbc/squareOdbc.attributes.js
index 0675f1b..6991a3a 100644
--- a/server/api/squareOdbc/squareOdbc.attributes.js
+++ b/server/api/squareOdbc/squareOdbc.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareOdbc/squareOdbc.controller.js b/server/api/squareOdbc/squareOdbc.controller.js
index 08436b8..a046314 100644
--- a/server/api/squareOdbc/squareOdbc.controller.js
+++ b/server/api/squareOdbc/squareOdbc.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareOdbc/squareOdbc.model.js b/server/api/squareOdbc/squareOdbc.model.js
index b5ef97e..85306b2 100644
--- a/server/api/squareOdbc/squareOdbc.model.js
+++ b/server/api/squareOdbc/squareOdbc.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareOdbc/squareOdbc.rpc.js b/server/api/squareOdbc/squareOdbc.rpc.js
index b6266f6..d0e3917 100644
--- a/server/api/squareOdbc/squareOdbc.rpc.js
+++ b/server/api/squareOdbc/squareOdbc.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareProject/index.js b/server/api/squareProject/index.js
index eaf7d94..77c614e 100644
--- a/server/api/squareProject/index.js
+++ b/server/api/squareProject/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareProject/squareProject.attributes.js b/server/api/squareProject/squareProject.attributes.js
index 62a3d8f..5679cd8 100644
--- a/server/api/squareProject/squareProject.attributes.js
+++ b/server/api/squareProject/squareProject.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareProject/squareProject.controller.js b/server/api/squareProject/squareProject.controller.js
index 27512a6..361127a 100644
--- a/server/api/squareProject/squareProject.controller.js
+++ b/server/api/squareProject/squareProject.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareProject/squareProject.events.js b/server/api/squareProject/squareProject.events.js
index 4fc2794..8e26b43 100644
--- a/server/api/squareProject/squareProject.events.js
+++ b/server/api/squareProject/squareProject.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareProject/squareProject.model.js b/server/api/squareProject/squareProject.model.js
index 2c045b9..866aa0f 100644
--- a/server/api/squareProject/squareProject.model.js
+++ b/server/api/squareProject/squareProject.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareProject/squareProject.rpc.js b/server/api/squareProject/squareProject.rpc.js
index 220a960..06d63f6 100644
--- a/server/api/squareProject/squareProject.rpc.js
+++ b/server/api/squareProject/squareProject.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareProject/squareProject.socket.js b/server/api/squareProject/squareProject.socket.js
index a62d87a..bf7100b 100644
--- a/server/api/squareProject/squareProject.socket.js
+++ b/server/api/squareProject/squareProject.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareRecording/index.js b/server/api/squareRecording/index.js
index 07ce554..e0de75f 100644
--- a/server/api/squareRecording/index.js
+++ b/server/api/squareRecording/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareRecording/squareRecording.attributes.js b/server/api/squareRecording/squareRecording.attributes.js
index 3ecf687..4e3e889 100644
--- a/server/api/squareRecording/squareRecording.attributes.js
+++ b/server/api/squareRecording/squareRecording.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareRecording/squareRecording.controller.js b/server/api/squareRecording/squareRecording.controller.js
index 763ea45..4f13f71 100644
--- a/server/api/squareRecording/squareRecording.controller.js
+++ b/server/api/squareRecording/squareRecording.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareRecording/squareRecording.model.js b/server/api/squareRecording/squareRecording.model.js
index f0ac0a4..c584763 100644
--- a/server/api/squareRecording/squareRecording.model.js
+++ b/server/api/squareRecording/squareRecording.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareRecording/squareRecording.rpc.js b/server/api/squareRecording/squareRecording.rpc.js
index fd05751..7dd03fa 100644
--- a/server/api/squareRecording/squareRecording.rpc.js
+++ b/server/api/squareRecording/squareRecording.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareReport/index.js b/server/api/squareReport/index.js
index e2b6c2b..8d33393 100644
--- a/server/api/squareReport/index.js
+++ b/server/api/squareReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareReport/squareReport.attributes.js b/server/api/squareReport/squareReport.attributes.js
index c4e2b64..626345e 100644
--- a/server/api/squareReport/squareReport.attributes.js
+++ b/server/api/squareReport/squareReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareReport/squareReport.controller.js b/server/api/squareReport/squareReport.controller.js
index a8d7ef5..f2baaa5 100644
--- a/server/api/squareReport/squareReport.controller.js
+++ b/server/api/squareReport/squareReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareReport/squareReport.model.js b/server/api/squareReport/squareReport.model.js
index fc0a198..0cd7c8c 100644
--- a/server/api/squareReport/squareReport.model.js
+++ b/server/api/squareReport/squareReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareReport/squareReport.rpc.js b/server/api/squareReport/squareReport.rpc.js
index 07985b3..e31d042 100644
--- a/server/api/squareReport/squareReport.rpc.js
+++ b/server/api/squareReport/squareReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareReportDetail/index.js b/server/api/squareReportDetail/index.js
index dfeae0c..c4f80ec 100644
--- a/server/api/squareReportDetail/index.js
+++ b/server/api/squareReportDetail/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareReportDetail/squareReportDetail.attributes.js b/server/api/squareReportDetail/squareReportDetail.attributes.js
index aea8af7..c1cec70 100644
--- a/server/api/squareReportDetail/squareReportDetail.attributes.js
+++ b/server/api/squareReportDetail/squareReportDetail.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareReportDetail/squareReportDetail.controller.js b/server/api/squareReportDetail/squareReportDetail.controller.js
index babd40e..e66a486 100644
--- a/server/api/squareReportDetail/squareReportDetail.controller.js
+++ b/server/api/squareReportDetail/squareReportDetail.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareReportDetail/squareReportDetail.model.js b/server/api/squareReportDetail/squareReportDetail.model.js
index ece7e9d..8997a07 100644
--- a/server/api/squareReportDetail/squareReportDetail.model.js
+++ b/server/api/squareReportDetail/squareReportDetail.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/squareReportDetail/squareReportDetail.rpc.js b/server/api/squareReportDetail/squareReportDetail.rpc.js
index eff3264..5aac87f 100644
--- a/server/api/squareReportDetail/squareReportDetail.rpc.js
+++ b/server/api/squareReportDetail/squareReportDetail.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/system/index.js b/server/api/system/index.js
index c03c51f..10c77c0 100644
--- a/server/api/system/index.js
+++ b/server/api/system/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/system/system.controller.js b/server/api/system/system.controller.js
index 6f09e85..2fb4a09 100644
--- a/server/api/system/system.controller.js
+++ b/server/api/system/system.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/tag/index.js b/server/api/tag/index.js
index 38073c3..2fb58bb 100644
--- a/server/api/tag/index.js
+++ b/server/api/tag/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/tag/tag.attributes.js b/server/api/tag/tag.attributes.js
index 4c10f90..beb50f0 100644
--- a/server/api/tag/tag.attributes.js
+++ b/server/api/tag/tag.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/tag/tag.controller.js b/server/api/tag/tag.controller.js
index 48eb53b..b1e7c38 100644
--- a/server/api/tag/tag.controller.js
+++ b/server/api/tag/tag.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/tag/tag.model.js b/server/api/tag/tag.model.js
index 81ee7c3..faca945 100644
--- a/server/api/tag/tag.model.js
+++ b/server/api/tag/tag.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/tag/tag.rpc.js b/server/api/tag/tag.rpc.js
index 6ba878a..254f69d 100644
--- a/server/api/tag/tag.rpc.js
+++ b/server/api/tag/tag.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/team/index.js b/server/api/team/index.js
index 3945026..1a7cdca 100644
--- a/server/api/team/index.js
+++ b/server/api/team/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/team/team.attributes.js b/server/api/team/team.attributes.js
index d30a7f9..3e0d90f 100644
--- a/server/api/team/team.attributes.js
+++ b/server/api/team/team.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/team/team.controller.js b/server/api/team/team.controller.js
index 99de749..1d71d11 100644
--- a/server/api/team/team.controller.js
+++ b/server/api/team/team.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/team/team.events.js b/server/api/team/team.events.js
index 1cabffd..a831aac 100644
--- a/server/api/team/team.events.js
+++ b/server/api/team/team.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/team/team.model.js b/server/api/team/team.model.js
index 43ed0df..f4a77f2 100644
--- a/server/api/team/team.model.js
+++ b/server/api/team/team.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/team/team.rpc.js b/server/api/team/team.rpc.js
index 03dfaac..1ca2d33 100644
--- a/server/api/team/team.rpc.js
+++ b/server/api/team/team.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/team/team.socket.js b/server/api/team/team.socket.js
index ade4e93..9365a22 100644
--- a/server/api/team/team.socket.js
+++ b/server/api/team/team.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/template/index.js b/server/api/template/index.js
index 10a67c1..d92ce96 100644
--- a/server/api/template/index.js
+++ b/server/api/template/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/template/template.attributes.js b/server/api/template/template.attributes.js
index 23acc0e..7a275f3 100644
--- a/server/api/template/template.attributes.js
+++ b/server/api/template/template.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/template/template.controller.js b/server/api/template/template.controller.js
index 6976e40..d77d653 100644
--- a/server/api/template/template.controller.js
+++ b/server/api/template/template.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/template/template.model.js b/server/api/template/template.model.js
index 4a9e9bb..d38ca44 100644
--- a/server/api/template/template.model.js
+++ b/server/api/template/template.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/template/template.rpc.js b/server/api/template/template.rpc.js
index 4b346e1..2773ca3 100644
--- a/server/api/template/template.rpc.js
+++ b/server/api/template/template.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/trigger/index.js b/server/api/trigger/index.js
index f1ea062..157dadb 100644
--- a/server/api/trigger/index.js
+++ b/server/api/trigger/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/trigger/trigger.attributes.js b/server/api/trigger/trigger.attributes.js
index 4399a26..f56ab97 100644
--- a/server/api/trigger/trigger.attributes.js
+++ b/server/api/trigger/trigger.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/trigger/trigger.controller.js b/server/api/trigger/trigger.controller.js
index 399d1d4..9a0a08a 100644
--- a/server/api/trigger/trigger.controller.js
+++ b/server/api/trigger/trigger.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/trigger/trigger.model.js b/server/api/trigger/trigger.model.js
index bcb3bb7..8cee0ce 100644
--- a/server/api/trigger/trigger.model.js
+++ b/server/api/trigger/trigger.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/trigger/trigger.rpc.js b/server/api/trigger/trigger.rpc.js
index 1a079b3..a043943 100644
--- a/server/api/trigger/trigger.rpc.js
+++ b/server/api/trigger/trigger.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/trunk/index.js b/server/api/trunk/index.js
index f752daa..10e8b90 100644
--- a/server/api/trunk/index.js
+++ b/server/api/trunk/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/trunk/trunk.attributes.js b/server/api/trunk/trunk.attributes.js
index 59255db..135589c 100644
--- a/server/api/trunk/trunk.attributes.js
+++ b/server/api/trunk/trunk.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/trunk/trunk.controller.js b/server/api/trunk/trunk.controller.js
index 0982704..e37810a 100644
--- a/server/api/trunk/trunk.controller.js
+++ b/server/api/trunk/trunk.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/trunk/trunk.model.js b/server/api/trunk/trunk.model.js
index a7cc9a4..5088266 100644
--- a/server/api/trunk/trunk.model.js
+++ b/server/api/trunk/trunk.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/trunk/trunk.rpc.js b/server/api/trunk/trunk.rpc.js
index 77552bf..96aee0c 100644
--- a/server/api/trunk/trunk.rpc.js
+++ b/server/api/trunk/trunk.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/user/index.js b/server/api/user/index.js
index ed10829..e20884e 100644
--- a/server/api/user/index.js
+++ b/server/api/user/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/user/user.attributes.js b/server/api/user/user.attributes.js
index 7d17836..dd97616 100644
--- a/server/api/user/user.attributes.js
+++ b/server/api/user/user.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/user/user.controller.js b/server/api/user/user.controller.js
index 34621ed..899fcb3 100644
--- a/server/api/user/user.controller.js
+++ b/server/api/user/user.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/user/user.events.js b/server/api/user/user.events.js
index e93d950..abfd211 100644
--- a/server/api/user/user.events.js
+++ b/server/api/user/user.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/user/user.model.js b/server/api/user/user.model.js
index 189defd..523b597 100644
--- a/server/api/user/user.model.js
+++ b/server/api/user/user.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/user/user.rpc.js b/server/api/user/user.rpc.js
index b2aa5c5..c6c1024 100644
--- a/server/api/user/user.rpc.js
+++ b/server/api/user/user.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/user/user.socket.js b/server/api/user/user.socket.js
index af4cf96..07934a9 100644
--- a/server/api/user/user.socket.js
+++ b/server/api/user/user.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userChatQueue/index.js b/server/api/userChatQueue/index.js
index e04ceed..9dae59d 100644
--- a/server/api/userChatQueue/index.js
+++ b/server/api/userChatQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userChatQueue/userChatQueue.attributes.js b/server/api/userChatQueue/userChatQueue.attributes.js
index 24a2f20..de09ec2 100644
--- a/server/api/userChatQueue/userChatQueue.attributes.js
+++ b/server/api/userChatQueue/userChatQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xa9e0=['sequelize','exports','INTEGER'];(function(_0x397781,_0x2436a5){var _0x4647f1=function(_0x1a4736){while(--_0x1a4736){_0x397781['push'](_0x397781['shift']());}};_0x4647f1(++_0x2436a5);}(_0xa9e0,0x123));var _0x0a9e=function(_0x187ee1,_0x3fd1e6){_0x187ee1=_0x187ee1-0x0;var _0x388160=_0xa9e0[_0x187ee1];return _0x388160;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'penalty':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbaf0=['exports','INTEGER'];(function(_0x329664,_0x130748){var _0x4e346e=function(_0x172b0d){while(--_0x172b0d){_0x329664['push'](_0x329664['shift']());}};_0x4e346e(++_0x130748);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xbaf0[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'penalty':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':0x0}};
\ No newline at end of file
diff --git a/server/api/userChatQueue/userChatQueue.model.js b/server/api/userChatQueue/userChatQueue.model.js
index bf7f0cb..007cc35 100644
--- a/server/api/userChatQueue/userChatQueue.model.js
+++ b/server/api/userChatQueue/userChatQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userChatQueue/userChatQueue.rpc.js b/server/api/userChatQueue/userChatQueue.rpc.js
index 91ac327..79157b2 100644
--- a/server/api/userChatQueue/userChatQueue.rpc.js
+++ b/server/api/userChatQueue/userChatQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userFaxQueue/index.js b/server/api/userFaxQueue/index.js
index b7c6112..3a0d2ed 100644
--- a/server/api/userFaxQueue/index.js
+++ b/server/api/userFaxQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userFaxQueue/userFaxQueue.attributes.js b/server/api/userFaxQueue/userFaxQueue.attributes.js
index c7aab5c..7694e20 100644
--- a/server/api/userFaxQueue/userFaxQueue.attributes.js
+++ b/server/api/userFaxQueue/userFaxQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userFaxQueue/userFaxQueue.model.js b/server/api/userFaxQueue/userFaxQueue.model.js
index 3494669..a7b4413 100644
--- a/server/api/userFaxQueue/userFaxQueue.model.js
+++ b/server/api/userFaxQueue/userFaxQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userFaxQueue/userFaxQueue.rpc.js b/server/api/userFaxQueue/userFaxQueue.rpc.js
index a7ac3a6..84f5c1c 100644
--- a/server/api/userFaxQueue/userFaxQueue.rpc.js
+++ b/server/api/userFaxQueue/userFaxQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userMailQueue/index.js b/server/api/userMailQueue/index.js
index 260ff1d..f8180fe 100644
--- a/server/api/userMailQueue/index.js
+++ b/server/api/userMailQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userMailQueue/userMailQueue.attributes.js b/server/api/userMailQueue/userMailQueue.attributes.js
index d967545..dd6c129 100644
--- a/server/api/userMailQueue/userMailQueue.attributes.js
+++ b/server/api/userMailQueue/userMailQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['exports','INTEGER'];(function(_0xea343d,_0x311197){var _0x2c6e9c=function(_0x454bd6){while(--_0x454bd6){_0xea343d['push'](_0xea343d['shift']());}};_0x2c6e9c(++_0x311197);}(_0xbaf0,0x12a));var _0x0baf=function(_0x4cf98e,_0xba4b79){_0x4cf98e=_0x4cf98e-0x0;var _0x1623ac=_0xbaf0[_0x4cf98e];return _0x1623ac;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'penalty':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe706=['INTEGER','sequelize','exports'];(function(_0x1a6b04,_0x5005f2){var _0x1b17c5=function(_0x2b30fd){while(--_0x2b30fd){_0x1a6b04['push'](_0x1a6b04['shift']());}};_0x1b17c5(++_0x5005f2);}(_0xe706,0xa3));var _0x6e70=function(_0x2a9202,_0x5e68cb){_0x2a9202=_0x2a9202-0x0;var _0x316625=_0xe706[_0x2a9202];return _0x316625;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'penalty':{'type':Sequelize[_0x6e70('0x2')],'defaultValue':0x0}};
\ No newline at end of file
diff --git a/server/api/userMailQueue/userMailQueue.model.js b/server/api/userMailQueue/userMailQueue.model.js
index 445e1e8..e2abfb1 100644
--- a/server/api/userMailQueue/userMailQueue.model.js
+++ b/server/api/userMailQueue/userMailQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userMailQueue/userMailQueue.rpc.js b/server/api/userMailQueue/userMailQueue.rpc.js
index 89a3036..7a6432f 100644
--- a/server/api/userMailQueue/userMailQueue.rpc.js
+++ b/server/api/userMailQueue/userMailQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userOpenchannelQueue/index.js b/server/api/userOpenchannelQueue/index.js
index 7459fb4..c1adf28 100644
--- a/server/api/userOpenchannelQueue/index.js
+++ b/server/api/userOpenchannelQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js b/server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
index cc3ad9a..48525c1 100644
--- a/server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
+++ b/server/api/userOpenchannelQueue/userOpenchannelQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['exports','INTEGER'];(function(_0x3be7ff,_0x12e714){var _0x186721=function(_0x2bc9e1){while(--_0x2bc9e1){_0x3be7ff['push'](_0x3be7ff['shift']());}};_0x186721(++_0x12e714);}(_0xbaf0,0x12a));var _0x0baf=function(_0x1facfa,_0x1acf7d){_0x1facfa=_0x1facfa-0x0;var _0x9ec701=_0xbaf0[_0x1facfa];return _0x9ec701;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'penalty':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe706=['INTEGER','sequelize','exports'];(function(_0x5b8d17,_0x36d00a){var _0x2131c5=function(_0x55cc28){while(--_0x55cc28){_0x5b8d17['push'](_0x5b8d17['shift']());}};_0x2131c5(++_0x36d00a);}(_0xe706,0xa3));var _0x6e70=function(_0x2c0ded,_0x3de22c){_0x2c0ded=_0x2c0ded-0x0;var _0x4473e5=_0xe706[_0x2c0ded];return _0x4473e5;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'penalty':{'type':Sequelize[_0x6e70('0x2')],'defaultValue':0x0}};
\ No newline at end of file
diff --git a/server/api/userOpenchannelQueue/userOpenchannelQueue.model.js b/server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
index bb3192d..f7693f1 100644
--- a/server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
+++ b/server/api/userOpenchannelQueue/userOpenchannelQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js b/server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
index 05f9768..3a2fca1 100644
--- a/server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
+++ b/server/api/userOpenchannelQueue/userOpenchannelQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfile/index.js b/server/api/userProfile/index.js
index 2022d63..d36c1ed 100644
--- a/server/api/userProfile/index.js
+++ b/server/api/userProfile/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfile/userProfile.attributes.js b/server/api/userProfile/userProfile.attributes.js
index b986980..840916b 100644
--- a/server/api/userProfile/userProfile.attributes.js
+++ b/server/api/userProfile/userProfile.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfile/userProfile.controller.js b/server/api/userProfile/userProfile.controller.js
index 0caec20..89ebb3e 100644
--- a/server/api/userProfile/userProfile.controller.js
+++ b/server/api/userProfile/userProfile.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfile/userProfile.events.js b/server/api/userProfile/userProfile.events.js
index ac352ab..9fc5313 100644
--- a/server/api/userProfile/userProfile.events.js
+++ b/server/api/userProfile/userProfile.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfile/userProfile.model.js b/server/api/userProfile/userProfile.model.js
index f2099d2..07acdc8 100644
--- a/server/api/userProfile/userProfile.model.js
+++ b/server/api/userProfile/userProfile.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfile/userProfile.rpc.js b/server/api/userProfile/userProfile.rpc.js
index 3bc188c..d17f312 100644
--- a/server/api/userProfile/userProfile.rpc.js
+++ b/server/api/userProfile/userProfile.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfile/userProfile.socket.js b/server/api/userProfile/userProfile.socket.js
index 45b7bda..dfc9be6 100644
--- a/server/api/userProfile/userProfile.socket.js
+++ b/server/api/userProfile/userProfile.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfileResource/index.js b/server/api/userProfileResource/index.js
index 1ed4913..bfb1731 100644
--- a/server/api/userProfileResource/index.js
+++ b/server/api/userProfileResource/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfileResource/userProfileResource.attributes.js b/server/api/userProfileResource/userProfileResource.attributes.js
index 0229028..2ec0dea 100644
--- a/server/api/userProfileResource/userProfileResource.attributes.js
+++ b/server/api/userProfileResource/userProfileResource.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfileResource/userProfileResource.controller.js b/server/api/userProfileResource/userProfileResource.controller.js
index cbfd75c..ee41e05 100644
--- a/server/api/userProfileResource/userProfileResource.controller.js
+++ b/server/api/userProfileResource/userProfileResource.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfileResource/userProfileResource.model.js b/server/api/userProfileResource/userProfileResource.model.js
index 92323a6..aadadce 100644
--- a/server/api/userProfileResource/userProfileResource.model.js
+++ b/server/api/userProfileResource/userProfileResource.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfileResource/userProfileResource.rpc.js b/server/api/userProfileResource/userProfileResource.rpc.js
index b49d5bc..4568d66 100644
--- a/server/api/userProfileResource/userProfileResource.rpc.js
+++ b/server/api/userProfileResource/userProfileResource.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfileSection/index.js b/server/api/userProfileSection/index.js
index 0d12ad6..717730b 100644
--- a/server/api/userProfileSection/index.js
+++ b/server/api/userProfileSection/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfileSection/userProfileSection.attributes.js b/server/api/userProfileSection/userProfileSection.attributes.js
index 1d8df76..eb6a2ec 100644
--- a/server/api/userProfileSection/userProfileSection.attributes.js
+++ b/server/api/userProfileSection/userProfileSection.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfileSection/userProfileSection.controller.js b/server/api/userProfileSection/userProfileSection.controller.js
index 6dc0336..d4ae35a 100644
--- a/server/api/userProfileSection/userProfileSection.controller.js
+++ b/server/api/userProfileSection/userProfileSection.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfileSection/userProfileSection.model.js b/server/api/userProfileSection/userProfileSection.model.js
index 5110d2e..f3eda01 100644
--- a/server/api/userProfileSection/userProfileSection.model.js
+++ b/server/api/userProfileSection/userProfileSection.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userProfileSection/userProfileSection.rpc.js b/server/api/userProfileSection/userProfileSection.rpc.js
index 8bcf3df..7fc3be8 100644
--- a/server/api/userProfileSection/userProfileSection.rpc.js
+++ b/server/api/userProfileSection/userProfileSection.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userSmsQueue/index.js b/server/api/userSmsQueue/index.js
index 6deae5f..34945e1 100644
--- a/server/api/userSmsQueue/index.js
+++ b/server/api/userSmsQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userSmsQueue/userSmsQueue.attributes.js b/server/api/userSmsQueue/userSmsQueue.attributes.js
index f690ca4..a277a01 100644
--- a/server/api/userSmsQueue/userSmsQueue.attributes.js
+++ b/server/api/userSmsQueue/userSmsQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xe706=['INTEGER','sequelize','exports'];(function(_0x5655af,_0x4d0d1d){var _0x25ace5=function(_0x2e6ed8){while(--_0x2e6ed8){_0x5655af['push'](_0x5655af['shift']());}};_0x25ace5(++_0x4d0d1d);}(_0xe706,0xa3));var _0x6e70=function(_0x240c9a,_0x100d6d){_0x240c9a=_0x240c9a-0x0;var _0xb239e9=_0xe706[_0x240c9a];return _0xb239e9;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'penalty':{'type':Sequelize[_0x6e70('0x2')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xbaf0=['exports','INTEGER'];(function(_0x52e363,_0x48062a){var _0x3fc2b5=function(_0x1b0cf9){while(--_0x1b0cf9){_0x52e363['push'](_0x52e363['shift']());}};_0x3fc2b5(++_0x48062a);}(_0xbaf0,0x12a));var _0x0baf=function(_0x2f5ac5,_0x1ee939){_0x2f5ac5=_0x2f5ac5-0x0;var _0x37c9a8=_0xbaf0[_0x2f5ac5];return _0x37c9a8;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'penalty':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':0x0}};
\ No newline at end of file
diff --git a/server/api/userSmsQueue/userSmsQueue.model.js b/server/api/userSmsQueue/userSmsQueue.model.js
index 297443b..83e820c 100644
--- a/server/api/userSmsQueue/userSmsQueue.model.js
+++ b/server/api/userSmsQueue/userSmsQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userSmsQueue/userSmsQueue.rpc.js b/server/api/userSmsQueue/userSmsQueue.rpc.js
index 4ac0693..586e2fe 100644
--- a/server/api/userSmsQueue/userSmsQueue.rpc.js
+++ b/server/api/userSmsQueue/userSmsQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userVoiceQueue/index.js b/server/api/userVoiceQueue/index.js
index 69b5047..953ff43 100644
--- a/server/api/userVoiceQueue/index.js
+++ b/server/api/userVoiceQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userVoiceQueue/userVoiceQueue.attributes.js b/server/api/userVoiceQueue/userVoiceQueue.attributes.js
index e2cde8e..b5cc52d 100644
--- a/server/api/userVoiceQueue/userVoiceQueue.attributes.js
+++ b/server/api/userVoiceQueue/userVoiceQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xd8b0=['exports','sequelize'];(function(_0x395d59,_0x3aa7d1){var _0x45f776=function(_0x298b5d){while(--_0x298b5d){_0x395d59['push'](_0x395d59['shift']());}};_0x45f776(++_0x3aa7d1);}(_0xd8b0,0xad));var _0x0d8b=function(_0x20a584,_0xe384a5){_0x20a584=_0x20a584-0x0;var _0x4b41a8=_0xd8b0[_0x20a584];return _0x4b41a8;};'use strict';var Sequelize=require(_0x0d8b('0x0'));module[_0x0d8b('0x1')]={'penalty':{'type':Sequelize['INTEGER'],'defaultValue':0x0}};
\ No newline at end of file
+var _0xe706=['INTEGER','sequelize','exports'];(function(_0x598b78,_0xf4ee7e){var _0x6392fa=function(_0x810353){while(--_0x810353){_0x598b78['push'](_0x598b78['shift']());}};_0x6392fa(++_0xf4ee7e);}(_0xe706,0xa3));var _0x6e70=function(_0x2e9d2c,_0x2e97ad){_0x2e9d2c=_0x2e9d2c-0x0;var _0x233caa=_0xe706[_0x2e9d2c];return _0x233caa;};'use strict';var Sequelize=require(_0x6e70('0x0'));module[_0x6e70('0x1')]={'penalty':{'type':Sequelize[_0x6e70('0x2')],'defaultValue':0x0}};
\ No newline at end of file
diff --git a/server/api/userVoiceQueue/userVoiceQueue.model.js b/server/api/userVoiceQueue/userVoiceQueue.model.js
index 2fb3a0c..fe6029c 100644
--- a/server/api/userVoiceQueue/userVoiceQueue.model.js
+++ b/server/api/userVoiceQueue/userVoiceQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userVoiceQueue/userVoiceQueue.rpc.js b/server/api/userVoiceQueue/userVoiceQueue.rpc.js
index 1f20ad4..636aa0d 100644
--- a/server/api/userVoiceQueue/userVoiceQueue.rpc.js
+++ b/server/api/userVoiceQueue/userVoiceQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userVoiceQueueRt/index.js b/server/api/userVoiceQueueRt/index.js
index 4ca46eb..8378236 100644
--- a/server/api/userVoiceQueueRt/index.js
+++ b/server/api/userVoiceQueueRt/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js b/server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
index 1de42c9..4e88a00 100644
--- a/server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
+++ b/server/api/userVoiceQueueRt/userVoiceQueueRt.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userVoiceQueueRt/userVoiceQueueRt.events.js b/server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
index 6568e54..72ffda6 100644
--- a/server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
+++ b/server/api/userVoiceQueueRt/userVoiceQueueRt.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userVoiceQueueRt/userVoiceQueueRt.model.js b/server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
index 51f215f..5512c47 100644
--- a/server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
+++ b/server/api/userVoiceQueueRt/userVoiceQueueRt.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js b/server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
index 8fd4aa4..2b5eb89 100644
--- a/server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
+++ b/server/api/userVoiceQueueRt/userVoiceQueueRt.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js b/server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
index 0e7e222..8f4b299 100644
--- a/server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
+++ b/server/api/userVoiceQueueRt/userVoiceQueueRt.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userWhatsappQueue/index.js b/server/api/userWhatsappQueue/index.js
index a4f575b..30bf1e5 100644
--- a/server/api/userWhatsappQueue/index.js
+++ b/server/api/userWhatsappQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userWhatsappQueue/userWhatsappQueue.attributes.js b/server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
index 993fa78..71c3e27 100644
--- a/server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
+++ b/server/api/userWhatsappQueue/userWhatsappQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xbaf0=['exports','INTEGER'];(function(_0x11bc40,_0x537bbc){var _0x2b7a99=function(_0x50135b){while(--_0x50135b){_0x11bc40['push'](_0x11bc40['shift']());}};_0x2b7a99(++_0x537bbc);}(_0xbaf0,0x12a));var _0x0baf=function(_0x465028,_0x4570ac){_0x465028=_0x465028-0x0;var _0xb783d4=_0xbaf0[_0x465028];return _0xb783d4;};'use strict';var Sequelize=require('sequelize');module[_0x0baf('0x0')]={'penalty':{'type':Sequelize[_0x0baf('0x1')],'defaultValue':0x0}};
\ No newline at end of file
+var _0xa9e0=['sequelize','exports','INTEGER'];(function(_0x4852ef,_0x825616){var _0x24391e=function(_0x28e63e){while(--_0x28e63e){_0x4852ef['push'](_0x4852ef['shift']());}};_0x24391e(++_0x825616);}(_0xa9e0,0x123));var _0x0a9e=function(_0x1da04e,_0x31024b){_0x1da04e=_0x1da04e-0x0;var _0xdd8c41=_0xa9e0[_0x1da04e];return _0xdd8c41;};'use strict';var Sequelize=require(_0x0a9e('0x0'));module[_0x0a9e('0x1')]={'penalty':{'type':Sequelize[_0x0a9e('0x2')],'defaultValue':0x0}};
\ No newline at end of file
diff --git a/server/api/userWhatsappQueue/userWhatsappQueue.model.js b/server/api/userWhatsappQueue/userWhatsappQueue.model.js
index 8d91f94..2c16214 100644
--- a/server/api/userWhatsappQueue/userWhatsappQueue.model.js
+++ b/server/api/userWhatsappQueue/userWhatsappQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/userWhatsappQueue/userWhatsappQueue.rpc.js b/server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
index 3ee3c22..8580a27 100644
--- a/server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
+++ b/server/api/userWhatsappQueue/userWhatsappQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/variable/index.js b/server/api/variable/index.js
index ec1f18e..f16686a 100644
--- a/server/api/variable/index.js
+++ b/server/api/variable/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/variable/variable.attributes.js b/server/api/variable/variable.attributes.js
index 0f0be53..6278fe5 100644
--- a/server/api/variable/variable.attributes.js
+++ b/server/api/variable/variable.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/variable/variable.controller.js b/server/api/variable/variable.controller.js
index aceee9c..3d5b02e 100644
--- a/server/api/variable/variable.controller.js
+++ b/server/api/variable/variable.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/variable/variable.model.js b/server/api/variable/variable.model.js
index 3c54354..7b2887a 100644
--- a/server/api/variable/variable.model.js
+++ b/server/api/variable/variable.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/variable/variable.rpc.js b/server/api/variable/variable.rpc.js
index 4978b32..7c78073 100644
--- a/server/api/variable/variable.rpc.js
+++ b/server/api/variable/variable.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/version/index.js b/server/api/version/index.js
index 80a659a..1a94f07 100644
--- a/server/api/version/index.js
+++ b/server/api/version/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/version/version.controller.js b/server/api/version/version.controller.js
index 8c02d83..9a96826 100644
--- a/server/api/version/version.controller.js
+++ b/server/api/version/version.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceAgentReport/index.js b/server/api/voiceAgentReport/index.js
index f395078..9f5da38 100644
--- a/server/api/voiceAgentReport/index.js
+++ b/server/api/voiceAgentReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceAgentReport/voiceAgentReport.attributes.js b/server/api/voiceAgentReport/voiceAgentReport.attributes.js
index a253c6c..7b313a9 100644
--- a/server/api/voiceAgentReport/voiceAgentReport.attributes.js
+++ b/server/api/voiceAgentReport/voiceAgentReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceAgentReport/voiceAgentReport.controller.js b/server/api/voiceAgentReport/voiceAgentReport.controller.js
index 738e233..e6ef059 100644
--- a/server/api/voiceAgentReport/voiceAgentReport.controller.js
+++ b/server/api/voiceAgentReport/voiceAgentReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceAgentReport/voiceAgentReport.model.js b/server/api/voiceAgentReport/voiceAgentReport.model.js
index 325ffce..de15456 100644
--- a/server/api/voiceAgentReport/voiceAgentReport.model.js
+++ b/server/api/voiceAgentReport/voiceAgentReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceAgentReport/voiceAgentReport.rpc.js b/server/api/voiceAgentReport/voiceAgentReport.rpc.js
index 1672fb2..49ea0c9 100644
--- a/server/api/voiceAgentReport/voiceAgentReport.rpc.js
+++ b/server/api/voiceAgentReport/voiceAgentReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceCallReport/index.js b/server/api/voiceCallReport/index.js
index 62e066d..890c96b 100644
--- a/server/api/voiceCallReport/index.js
+++ b/server/api/voiceCallReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceCallReport/voiceCallReport.attributes.js b/server/api/voiceCallReport/voiceCallReport.attributes.js
index 3be58b1..8589be0 100644
--- a/server/api/voiceCallReport/voiceCallReport.attributes.js
+++ b/server/api/voiceCallReport/voiceCallReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceCallReport/voiceCallReport.controller.js b/server/api/voiceCallReport/voiceCallReport.controller.js
index 2fcb681..da49f8e 100644
--- a/server/api/voiceCallReport/voiceCallReport.controller.js
+++ b/server/api/voiceCallReport/voiceCallReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceCallReport/voiceCallReport.model.js b/server/api/voiceCallReport/voiceCallReport.model.js
index 9d0d74e..501f2d3 100644
--- a/server/api/voiceCallReport/voiceCallReport.model.js
+++ b/server/api/voiceCallReport/voiceCallReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceCallReport/voiceCallReport.rpc.js b/server/api/voiceCallReport/voiceCallReport.rpc.js
index f051fed..4daa54f 100644
--- a/server/api/voiceCallReport/voiceCallReport.rpc.js
+++ b/server/api/voiceCallReport/voiceCallReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceChanSpy/index.js b/server/api/voiceChanSpy/index.js
index caf482e..4dd6c6b 100644
--- a/server/api/voiceChanSpy/index.js
+++ b/server/api/voiceChanSpy/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceChanSpy/voiceChanSpy.attributes.js b/server/api/voiceChanSpy/voiceChanSpy.attributes.js
index e34a7b7..2c58e45 100644
--- a/server/api/voiceChanSpy/voiceChanSpy.attributes.js
+++ b/server/api/voiceChanSpy/voiceChanSpy.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceChanSpy/voiceChanSpy.controller.js b/server/api/voiceChanSpy/voiceChanSpy.controller.js
index db8be6e..968e2da 100644
--- a/server/api/voiceChanSpy/voiceChanSpy.controller.js
+++ b/server/api/voiceChanSpy/voiceChanSpy.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceChanSpy/voiceChanSpy.model.js b/server/api/voiceChanSpy/voiceChanSpy.model.js
index b957009..1f6da77 100644
--- a/server/api/voiceChanSpy/voiceChanSpy.model.js
+++ b/server/api/voiceChanSpy/voiceChanSpy.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceChanSpy/voiceChanSpy.rpc.js b/server/api/voiceChanSpy/voiceChanSpy.rpc.js
index 983414b..6bc579b 100644
--- a/server/api/voiceChanSpy/voiceChanSpy.rpc.js
+++ b/server/api/voiceChanSpy/voiceChanSpy.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceContext/index.js b/server/api/voiceContext/index.js
index 9ed1883..aa3a14c 100644
--- a/server/api/voiceContext/index.js
+++ b/server/api/voiceContext/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceContext/voiceContext.attributes.js b/server/api/voiceContext/voiceContext.attributes.js
index 04bbb93..2495dbd 100644
--- a/server/api/voiceContext/voiceContext.attributes.js
+++ b/server/api/voiceContext/voiceContext.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceContext/voiceContext.controller.js b/server/api/voiceContext/voiceContext.controller.js
index 2bb7cde..9e09317 100644
--- a/server/api/voiceContext/voiceContext.controller.js
+++ b/server/api/voiceContext/voiceContext.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceContext/voiceContext.model.js b/server/api/voiceContext/voiceContext.model.js
index f78ffa7..6d89529 100644
--- a/server/api/voiceContext/voiceContext.model.js
+++ b/server/api/voiceContext/voiceContext.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceContext/voiceContext.rpc.js b/server/api/voiceContext/voiceContext.rpc.js
index 25e17a5..f4843e2 100644
--- a/server/api/voiceContext/voiceContext.rpc.js
+++ b/server/api/voiceContext/voiceContext.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceDialReport/index.js b/server/api/voiceDialReport/index.js
index e007c83..eb73a2c 100644
--- a/server/api/voiceDialReport/index.js
+++ b/server/api/voiceDialReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceDialReport/voiceDialReport.attributes.js b/server/api/voiceDialReport/voiceDialReport.attributes.js
index 0e8cac8..a83e99a 100644
--- a/server/api/voiceDialReport/voiceDialReport.attributes.js
+++ b/server/api/voiceDialReport/voiceDialReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceDialReport/voiceDialReport.controller.js b/server/api/voiceDialReport/voiceDialReport.controller.js
index 8deb9a5..ce8dc26 100644
--- a/server/api/voiceDialReport/voiceDialReport.controller.js
+++ b/server/api/voiceDialReport/voiceDialReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceDialReport/voiceDialReport.model.js b/server/api/voiceDialReport/voiceDialReport.model.js
index eaffdad..8a16347 100644
--- a/server/api/voiceDialReport/voiceDialReport.model.js
+++ b/server/api/voiceDialReport/voiceDialReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceDialReport/voiceDialReport.rpc.js b/server/api/voiceDialReport/voiceDialReport.rpc.js
index a888d95..5afe5f2 100644
--- a/server/api/voiceDialReport/voiceDialReport.rpc.js
+++ b/server/api/voiceDialReport/voiceDialReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceExtension/index.js b/server/api/voiceExtension/index.js
index 7013745..df868a1 100644
--- a/server/api/voiceExtension/index.js
+++ b/server/api/voiceExtension/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceExtension/voiceExtension.attributes.js b/server/api/voiceExtension/voiceExtension.attributes.js
index a81f39d..6c20ddb 100644
--- a/server/api/voiceExtension/voiceExtension.attributes.js
+++ b/server/api/voiceExtension/voiceExtension.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceExtension/voiceExtension.controller.js b/server/api/voiceExtension/voiceExtension.controller.js
index 3406ecf..3a3a65c 100644
--- a/server/api/voiceExtension/voiceExtension.controller.js
+++ b/server/api/voiceExtension/voiceExtension.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceExtension/voiceExtension.events.js b/server/api/voiceExtension/voiceExtension.events.js
index 60dd62d..25a46d0 100644
--- a/server/api/voiceExtension/voiceExtension.events.js
+++ b/server/api/voiceExtension/voiceExtension.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceExtension/voiceExtension.model.js b/server/api/voiceExtension/voiceExtension.model.js
index 22d22de..1a19b4e 100644
--- a/server/api/voiceExtension/voiceExtension.model.js
+++ b/server/api/voiceExtension/voiceExtension.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceExtension/voiceExtension.rpc.js b/server/api/voiceExtension/voiceExtension.rpc.js
index 55e2c28..532feae 100644
--- a/server/api/voiceExtension/voiceExtension.rpc.js
+++ b/server/api/voiceExtension/voiceExtension.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceExtension/voiceExtension.socket.js b/server/api/voiceExtension/voiceExtension.socket.js
index eb950d1..5c1a29a 100644
--- a/server/api/voiceExtension/voiceExtension.socket.js
+++ b/server/api/voiceExtension/voiceExtension.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMail/index.js b/server/api/voiceMail/index.js
index 2967024..c78a1ac 100644
--- a/server/api/voiceMail/index.js
+++ b/server/api/voiceMail/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMail/voiceMail.attributes.js b/server/api/voiceMail/voiceMail.attributes.js
index f5496f1..76072fb 100644
--- a/server/api/voiceMail/voiceMail.attributes.js
+++ b/server/api/voiceMail/voiceMail.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMail/voiceMail.controller.js b/server/api/voiceMail/voiceMail.controller.js
index 8fc9340..2dbe9ef 100644
--- a/server/api/voiceMail/voiceMail.controller.js
+++ b/server/api/voiceMail/voiceMail.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMail/voiceMail.model.js b/server/api/voiceMail/voiceMail.model.js
index 26d675a..4ecd393 100644
--- a/server/api/voiceMail/voiceMail.model.js
+++ b/server/api/voiceMail/voiceMail.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMail/voiceMail.rpc.js b/server/api/voiceMail/voiceMail.rpc.js
index ffa2387..c8d85dd 100644
--- a/server/api/voiceMail/voiceMail.rpc.js
+++ b/server/api/voiceMail/voiceMail.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMailMessage/index.js b/server/api/voiceMailMessage/index.js
index f9870e7..a8843d8 100644
--- a/server/api/voiceMailMessage/index.js
+++ b/server/api/voiceMailMessage/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMailMessage/voiceMailMessage.attributes.js b/server/api/voiceMailMessage/voiceMailMessage.attributes.js
index 4c9543a..38a9a09 100644
--- a/server/api/voiceMailMessage/voiceMailMessage.attributes.js
+++ b/server/api/voiceMailMessage/voiceMailMessage.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMailMessage/voiceMailMessage.controller.js b/server/api/voiceMailMessage/voiceMailMessage.controller.js
index 8cb0f93..820b00c 100644
--- a/server/api/voiceMailMessage/voiceMailMessage.controller.js
+++ b/server/api/voiceMailMessage/voiceMailMessage.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMailMessage/voiceMailMessage.model.js b/server/api/voiceMailMessage/voiceMailMessage.model.js
index e90c451..f028ebd 100644
--- a/server/api/voiceMailMessage/voiceMailMessage.model.js
+++ b/server/api/voiceMailMessage/voiceMailMessage.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMailMessage/voiceMailMessage.rpc.js b/server/api/voiceMailMessage/voiceMailMessage.rpc.js
index bba50ba..011f426 100644
--- a/server/api/voiceMailMessage/voiceMailMessage.rpc.js
+++ b/server/api/voiceMailMessage/voiceMailMessage.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMusicOnHold/index.js b/server/api/voiceMusicOnHold/index.js
index 2df0c6e..9d73c0b 100644
--- a/server/api/voiceMusicOnHold/index.js
+++ b/server/api/voiceMusicOnHold/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js b/server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
index 7be34e1..74240ce 100644
--- a/server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
+++ b/server/api/voiceMusicOnHold/voiceMusicOnHold.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js b/server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
index ddb3a9f..cdd0471 100644
--- a/server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
+++ b/server/api/voiceMusicOnHold/voiceMusicOnHold.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMusicOnHold/voiceMusicOnHold.model.js b/server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
index 4e826a0..2cd44a8 100644
--- a/server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
+++ b/server/api/voiceMusicOnHold/voiceMusicOnHold.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js b/server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
index f6db3f4..1e9d7a2 100644
--- a/server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
+++ b/server/api/voiceMusicOnHold/voiceMusicOnHold.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voicePrefix/index.js b/server/api/voicePrefix/index.js
index 278b77d..d730534 100644
--- a/server/api/voicePrefix/index.js
+++ b/server/api/voicePrefix/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voicePrefix/voicePrefix.attributes.js b/server/api/voicePrefix/voicePrefix.attributes.js
index ec079a3..7984e61 100644
--- a/server/api/voicePrefix/voicePrefix.attributes.js
+++ b/server/api/voicePrefix/voicePrefix.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voicePrefix/voicePrefix.controller.js b/server/api/voicePrefix/voicePrefix.controller.js
index 5abfd93..48f6e3c 100644
--- a/server/api/voicePrefix/voicePrefix.controller.js
+++ b/server/api/voicePrefix/voicePrefix.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voicePrefix/voicePrefix.events.js b/server/api/voicePrefix/voicePrefix.events.js
index bdc39d9..01f902c 100644
--- a/server/api/voicePrefix/voicePrefix.events.js
+++ b/server/api/voicePrefix/voicePrefix.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voicePrefix/voicePrefix.model.js b/server/api/voicePrefix/voicePrefix.model.js
index 6757b65..ac9880a 100644
--- a/server/api/voicePrefix/voicePrefix.model.js
+++ b/server/api/voicePrefix/voicePrefix.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voicePrefix/voicePrefix.rpc.js b/server/api/voicePrefix/voicePrefix.rpc.js
index df5956b..96fb65c 100644
--- a/server/api/voicePrefix/voicePrefix.rpc.js
+++ b/server/api/voicePrefix/voicePrefix.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voicePrefix/voicePrefix.socket.js b/server/api/voicePrefix/voicePrefix.socket.js
index 9bfc1fd..e35422a 100644
--- a/server/api/voicePrefix/voicePrefix.socket.js
+++ b/server/api/voicePrefix/voicePrefix.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueue/index.js b/server/api/voiceQueue/index.js
index 7b24af2..37db489 100644
--- a/server/api/voiceQueue/index.js
+++ b/server/api/voiceQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueue/voiceQueue.attributes.js b/server/api/voiceQueue/voiceQueue.attributes.js
index ba5fbaa..9a54698 100644
--- a/server/api/voiceQueue/voiceQueue.attributes.js
+++ b/server/api/voiceQueue/voiceQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueue/voiceQueue.controller.js b/server/api/voiceQueue/voiceQueue.controller.js
index c534847..84a3915 100644
--- a/server/api/voiceQueue/voiceQueue.controller.js
+++ b/server/api/voiceQueue/voiceQueue.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueue/voiceQueue.events.js b/server/api/voiceQueue/voiceQueue.events.js
index 956af68..28eebb0 100644
--- a/server/api/voiceQueue/voiceQueue.events.js
+++ b/server/api/voiceQueue/voiceQueue.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueue/voiceQueue.model.js b/server/api/voiceQueue/voiceQueue.model.js
index a4ef59b..9da9cb1 100644
--- a/server/api/voiceQueue/voiceQueue.model.js
+++ b/server/api/voiceQueue/voiceQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueue/voiceQueue.rpc.js b/server/api/voiceQueue/voiceQueue.rpc.js
index 1a27ed7..82c8c5d 100644
--- a/server/api/voiceQueue/voiceQueue.rpc.js
+++ b/server/api/voiceQueue/voiceQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueue/voiceQueue.socket.js b/server/api/voiceQueue/voiceQueue.socket.js
index 03ca3f8..73a70d2 100644
--- a/server/api/voiceQueue/voiceQueue.socket.js
+++ b/server/api/voiceQueue/voiceQueue.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueueReport/index.js b/server/api/voiceQueueReport/index.js
index 9134fae..4c64148 100644
--- a/server/api/voiceQueueReport/index.js
+++ b/server/api/voiceQueueReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueueReport/voiceQueueReport.attributes.js b/server/api/voiceQueueReport/voiceQueueReport.attributes.js
index c6b4fca..67c91a3 100644
--- a/server/api/voiceQueueReport/voiceQueueReport.attributes.js
+++ b/server/api/voiceQueueReport/voiceQueueReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueueReport/voiceQueueReport.controller.js b/server/api/voiceQueueReport/voiceQueueReport.controller.js
index c94a161..87a5ff0 100644
--- a/server/api/voiceQueueReport/voiceQueueReport.controller.js
+++ b/server/api/voiceQueueReport/voiceQueueReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueueReport/voiceQueueReport.events.js b/server/api/voiceQueueReport/voiceQueueReport.events.js
index 6af6d38..210cb2c 100644
--- a/server/api/voiceQueueReport/voiceQueueReport.events.js
+++ b/server/api/voiceQueueReport/voiceQueueReport.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueueReport/voiceQueueReport.model.js b/server/api/voiceQueueReport/voiceQueueReport.model.js
index e0412cc..9697571 100644
--- a/server/api/voiceQueueReport/voiceQueueReport.model.js
+++ b/server/api/voiceQueueReport/voiceQueueReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueueReport/voiceQueueReport.rpc.js b/server/api/voiceQueueReport/voiceQueueReport.rpc.js
index ed76226..00f1091 100644
--- a/server/api/voiceQueueReport/voiceQueueReport.rpc.js
+++ b/server/api/voiceQueueReport/voiceQueueReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueueReport/voiceQueueReport.socket.js b/server/api/voiceQueueReport/voiceQueueReport.socket.js
index 129a8a2..9ad2c25 100644
--- a/server/api/voiceQueueReport/voiceQueueReport.socket.js
+++ b/server/api/voiceQueueReport/voiceQueueReport.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueuesLog/index.js b/server/api/voiceQueuesLog/index.js
index 400c4d4..a6c5121 100644
--- a/server/api/voiceQueuesLog/index.js
+++ b/server/api/voiceQueuesLog/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueuesLog/voiceQueuesLog.attributes.js b/server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
index d1a61b4..5633883 100644
--- a/server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
+++ b/server/api/voiceQueuesLog/voiceQueuesLog.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueuesLog/voiceQueuesLog.controller.js b/server/api/voiceQueuesLog/voiceQueuesLog.controller.js
index 89b320c..6475fd8 100644
--- a/server/api/voiceQueuesLog/voiceQueuesLog.controller.js
+++ b/server/api/voiceQueuesLog/voiceQueuesLog.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueuesLog/voiceQueuesLog.model.js b/server/api/voiceQueuesLog/voiceQueuesLog.model.js
index 609e589..04d6c53 100644
--- a/server/api/voiceQueuesLog/voiceQueuesLog.model.js
+++ b/server/api/voiceQueuesLog/voiceQueuesLog.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceQueuesLog/voiceQueuesLog.rpc.js b/server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
index 527e141..779bd7f 100644
--- a/server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
+++ b/server/api/voiceQueuesLog/voiceQueuesLog.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceRecording/index.js b/server/api/voiceRecording/index.js
index 37d64cb..eff755c 100644
--- a/server/api/voiceRecording/index.js
+++ b/server/api/voiceRecording/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceRecording/voiceRecording.attributes.js b/server/api/voiceRecording/voiceRecording.attributes.js
index d84056e..3f933e7 100644
--- a/server/api/voiceRecording/voiceRecording.attributes.js
+++ b/server/api/voiceRecording/voiceRecording.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceRecording/voiceRecording.controller.js b/server/api/voiceRecording/voiceRecording.controller.js
index 8614145..1e53ec2 100644
--- a/server/api/voiceRecording/voiceRecording.controller.js
+++ b/server/api/voiceRecording/voiceRecording.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceRecording/voiceRecording.model.js b/server/api/voiceRecording/voiceRecording.model.js
index 94eee04..4144edf 100644
--- a/server/api/voiceRecording/voiceRecording.model.js
+++ b/server/api/voiceRecording/voiceRecording.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceRecording/voiceRecording.rpc.js b/server/api/voiceRecording/voiceRecording.rpc.js
index 7c44e6f..54f90b5 100644
--- a/server/api/voiceRecording/voiceRecording.rpc.js
+++ b/server/api/voiceRecording/voiceRecording.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceTransferReport/index.js b/server/api/voiceTransferReport/index.js
index 0ac33a7..f7637e2 100644
--- a/server/api/voiceTransferReport/index.js
+++ b/server/api/voiceTransferReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceTransferReport/voiceTransferReport.attributes.js b/server/api/voiceTransferReport/voiceTransferReport.attributes.js
index e3f1b0a..381517d 100644
--- a/server/api/voiceTransferReport/voiceTransferReport.attributes.js
+++ b/server/api/voiceTransferReport/voiceTransferReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceTransferReport/voiceTransferReport.controller.js b/server/api/voiceTransferReport/voiceTransferReport.controller.js
index 3b6ebde..72b5f74 100644
--- a/server/api/voiceTransferReport/voiceTransferReport.controller.js
+++ b/server/api/voiceTransferReport/voiceTransferReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceTransferReport/voiceTransferReport.model.js b/server/api/voiceTransferReport/voiceTransferReport.model.js
index a0538aa..3fe3ec5 100644
--- a/server/api/voiceTransferReport/voiceTransferReport.model.js
+++ b/server/api/voiceTransferReport/voiceTransferReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/voiceTransferReport/voiceTransferReport.rpc.js b/server/api/voiceTransferReport/voiceTransferReport.rpc.js
index 74d91c2..36aea31 100644
--- a/server/api/voiceTransferReport/voiceTransferReport.rpc.js
+++ b/server/api/voiceTransferReport/voiceTransferReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/webbar/index.js b/server/api/webbar/index.js
index e767e19..16c7271 100644
--- a/server/api/webbar/index.js
+++ b/server/api/webbar/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/webbar/webbar.controller.js b/server/api/webbar/webbar.controller.js
index 9e5f083..7471992 100644
--- a/server/api/webbar/webbar.controller.js
+++ b/server/api/webbar/webbar.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappAccount/index.js b/server/api/whatsappAccount/index.js
index 07c0ead..5b34b20 100644
--- a/server/api/whatsappAccount/index.js
+++ b/server/api/whatsappAccount/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappAccount/whatsappAccount.attributes.js b/server/api/whatsappAccount/whatsappAccount.attributes.js
index 86ab167..91f7c32 100644
--- a/server/api/whatsappAccount/whatsappAccount.attributes.js
+++ b/server/api/whatsappAccount/whatsappAccount.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappAccount/whatsappAccount.controller.js b/server/api/whatsappAccount/whatsappAccount.controller.js
index a341d2c..2fe2dd6 100644
--- a/server/api/whatsappAccount/whatsappAccount.controller.js
+++ b/server/api/whatsappAccount/whatsappAccount.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappAccount/whatsappAccount.events.js b/server/api/whatsappAccount/whatsappAccount.events.js
index 0aaac97..3a818e8 100644
--- a/server/api/whatsappAccount/whatsappAccount.events.js
+++ b/server/api/whatsappAccount/whatsappAccount.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappAccount/whatsappAccount.model.js b/server/api/whatsappAccount/whatsappAccount.model.js
index 163708a..12103ab 100644
--- a/server/api/whatsappAccount/whatsappAccount.model.js
+++ b/server/api/whatsappAccount/whatsappAccount.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappAccount/whatsappAccount.rpc.js b/server/api/whatsappAccount/whatsappAccount.rpc.js
index 164d839..1ee2736 100644
--- a/server/api/whatsappAccount/whatsappAccount.rpc.js
+++ b/server/api/whatsappAccount/whatsappAccount.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappAccount/whatsappAccount.socket.js b/server/api/whatsappAccount/whatsappAccount.socket.js
index 9c39d88..5fa30f8 100644
--- a/server/api/whatsappAccount/whatsappAccount.socket.js
+++ b/server/api/whatsappAccount/whatsappAccount.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappApplication/index.js b/server/api/whatsappApplication/index.js
index ed16da5..0d394ed 100644
--- a/server/api/whatsappApplication/index.js
+++ b/server/api/whatsappApplication/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappApplication/whatsappApplication.attributes.js b/server/api/whatsappApplication/whatsappApplication.attributes.js
index 0c3ffce..6288c63 100644
--- a/server/api/whatsappApplication/whatsappApplication.attributes.js
+++ b/server/api/whatsappApplication/whatsappApplication.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappApplication/whatsappApplication.controller.js b/server/api/whatsappApplication/whatsappApplication.controller.js
index 66aa1eb..301f992 100644
--- a/server/api/whatsappApplication/whatsappApplication.controller.js
+++ b/server/api/whatsappApplication/whatsappApplication.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappApplication/whatsappApplication.model.js b/server/api/whatsappApplication/whatsappApplication.model.js
index ec51528..e723d28 100644
--- a/server/api/whatsappApplication/whatsappApplication.model.js
+++ b/server/api/whatsappApplication/whatsappApplication.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappApplication/whatsappApplication.rpc.js b/server/api/whatsappApplication/whatsappApplication.rpc.js
index 6b3839d..6d2ec66 100644
--- a/server/api/whatsappApplication/whatsappApplication.rpc.js
+++ b/server/api/whatsappApplication/whatsappApplication.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappInteraction/index.js b/server/api/whatsappInteraction/index.js
index 2b9c336..ff3335e 100644
--- a/server/api/whatsappInteraction/index.js
+++ b/server/api/whatsappInteraction/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappInteraction/whatsappInteraction.attributes.js b/server/api/whatsappInteraction/whatsappInteraction.attributes.js
index e3ac84d..be21af0 100644
--- a/server/api/whatsappInteraction/whatsappInteraction.attributes.js
+++ b/server/api/whatsappInteraction/whatsappInteraction.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappInteraction/whatsappInteraction.controller.js b/server/api/whatsappInteraction/whatsappInteraction.controller.js
index 7144c35..0533037 100644
--- a/server/api/whatsappInteraction/whatsappInteraction.controller.js
+++ b/server/api/whatsappInteraction/whatsappInteraction.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappInteraction/whatsappInteraction.events.js b/server/api/whatsappInteraction/whatsappInteraction.events.js
index 822226a..c07e5bd 100644
--- a/server/api/whatsappInteraction/whatsappInteraction.events.js
+++ b/server/api/whatsappInteraction/whatsappInteraction.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappInteraction/whatsappInteraction.model.js b/server/api/whatsappInteraction/whatsappInteraction.model.js
index 0079676..bb61585 100644
--- a/server/api/whatsappInteraction/whatsappInteraction.model.js
+++ b/server/api/whatsappInteraction/whatsappInteraction.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappInteraction/whatsappInteraction.rpc.js b/server/api/whatsappInteraction/whatsappInteraction.rpc.js
index 6671d7c..6d25ab0 100644
--- a/server/api/whatsappInteraction/whatsappInteraction.rpc.js
+++ b/server/api/whatsappInteraction/whatsappInteraction.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappInteraction/whatsappInteraction.socket.js b/server/api/whatsappInteraction/whatsappInteraction.socket.js
index ce472ca..3de610b 100644
--- a/server/api/whatsappInteraction/whatsappInteraction.socket.js
+++ b/server/api/whatsappInteraction/whatsappInteraction.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappMessage/index.js b/server/api/whatsappMessage/index.js
index d52f11f..262fcc4 100644
--- a/server/api/whatsappMessage/index.js
+++ b/server/api/whatsappMessage/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappMessage/whatsappMessage.attributes.js b/server/api/whatsappMessage/whatsappMessage.attributes.js
index 66e73be..6578a75 100644
--- a/server/api/whatsappMessage/whatsappMessage.attributes.js
+++ b/server/api/whatsappMessage/whatsappMessage.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappMessage/whatsappMessage.controller.js b/server/api/whatsappMessage/whatsappMessage.controller.js
index 2690ad2..19b4b9a 100644
--- a/server/api/whatsappMessage/whatsappMessage.controller.js
+++ b/server/api/whatsappMessage/whatsappMessage.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappMessage/whatsappMessage.events.js b/server/api/whatsappMessage/whatsappMessage.events.js
index 237d02b..a36911d 100644
--- a/server/api/whatsappMessage/whatsappMessage.events.js
+++ b/server/api/whatsappMessage/whatsappMessage.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappMessage/whatsappMessage.model.js b/server/api/whatsappMessage/whatsappMessage.model.js
index e0c89d3..5e7cd43 100644
--- a/server/api/whatsappMessage/whatsappMessage.model.js
+++ b/server/api/whatsappMessage/whatsappMessage.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappMessage/whatsappMessage.rpc.js b/server/api/whatsappMessage/whatsappMessage.rpc.js
index 1a724a9..c0cadc6 100644
--- a/server/api/whatsappMessage/whatsappMessage.rpc.js
+++ b/server/api/whatsappMessage/whatsappMessage.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappMessage/whatsappMessage.socket.js b/server/api/whatsappMessage/whatsappMessage.socket.js
index 8dbd287..6dfa9c8 100644
--- a/server/api/whatsappMessage/whatsappMessage.socket.js
+++ b/server/api/whatsappMessage/whatsappMessage.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueue/index.js b/server/api/whatsappQueue/index.js
index 3801137..7e1943e 100644
--- a/server/api/whatsappQueue/index.js
+++ b/server/api/whatsappQueue/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueue/whatsappQueue.attributes.js b/server/api/whatsappQueue/whatsappQueue.attributes.js
index 59a7069..3045ce2 100644
--- a/server/api/whatsappQueue/whatsappQueue.attributes.js
+++ b/server/api/whatsappQueue/whatsappQueue.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueue/whatsappQueue.controller.js b/server/api/whatsappQueue/whatsappQueue.controller.js
index d1cdf21..a52bf2a 100644
--- a/server/api/whatsappQueue/whatsappQueue.controller.js
+++ b/server/api/whatsappQueue/whatsappQueue.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueue/whatsappQueue.events.js b/server/api/whatsappQueue/whatsappQueue.events.js
index db2ab79..4648b83 100644
--- a/server/api/whatsappQueue/whatsappQueue.events.js
+++ b/server/api/whatsappQueue/whatsappQueue.events.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueue/whatsappQueue.model.js b/server/api/whatsappQueue/whatsappQueue.model.js
index 6029b33..fa02e3a 100644
--- a/server/api/whatsappQueue/whatsappQueue.model.js
+++ b/server/api/whatsappQueue/whatsappQueue.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueue/whatsappQueue.rpc.js b/server/api/whatsappQueue/whatsappQueue.rpc.js
index 611b3b6..f203b1f 100644
--- a/server/api/whatsappQueue/whatsappQueue.rpc.js
+++ b/server/api/whatsappQueue/whatsappQueue.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueue/whatsappQueue.socket.js b/server/api/whatsappQueue/whatsappQueue.socket.js
index b4c4ef6..5f380c7 100644
--- a/server/api/whatsappQueue/whatsappQueue.socket.js
+++ b/server/api/whatsappQueue/whatsappQueue.socket.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueueReport/index.js b/server/api/whatsappQueueReport/index.js
index 3697fbe..004c0e5 100644
--- a/server/api/whatsappQueueReport/index.js
+++ b/server/api/whatsappQueueReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueueReport/whatsappQueueReport.attributes.js b/server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
index fedbe3f..7a2fb26 100644
--- a/server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
+++ b/server/api/whatsappQueueReport/whatsappQueueReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueueReport/whatsappQueueReport.controller.js b/server/api/whatsappQueueReport/whatsappQueueReport.controller.js
index 0097cab..ca54fa1 100644
--- a/server/api/whatsappQueueReport/whatsappQueueReport.controller.js
+++ b/server/api/whatsappQueueReport/whatsappQueueReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueueReport/whatsappQueueReport.model.js b/server/api/whatsappQueueReport/whatsappQueueReport.model.js
index 2c04002..84ac2bd 100644
--- a/server/api/whatsappQueueReport/whatsappQueueReport.model.js
+++ b/server/api/whatsappQueueReport/whatsappQueueReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappQueueReport/whatsappQueueReport.rpc.js b/server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
index 60ab3bc..c15b593 100644
--- a/server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
+++ b/server/api/whatsappQueueReport/whatsappQueueReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappTransferReport/index.js b/server/api/whatsappTransferReport/index.js
index 359fad0..5b17940 100644
--- a/server/api/whatsappTransferReport/index.js
+++ b/server/api/whatsappTransferReport/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappTransferReport/whatsappTransferReport.attributes.js b/server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
index 1954ba0..83c133e 100644
--- a/server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
+++ b/server/api/whatsappTransferReport/whatsappTransferReport.attributes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappTransferReport/whatsappTransferReport.controller.js b/server/api/whatsappTransferReport/whatsappTransferReport.controller.js
index 330e2d9..c5a6e33 100644
--- a/server/api/whatsappTransferReport/whatsappTransferReport.controller.js
+++ b/server/api/whatsappTransferReport/whatsappTransferReport.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappTransferReport/whatsappTransferReport.model.js b/server/api/whatsappTransferReport/whatsappTransferReport.model.js
index df13120..4f59f7c 100644
--- a/server/api/whatsappTransferReport/whatsappTransferReport.model.js
+++ b/server/api/whatsappTransferReport/whatsappTransferReport.model.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/api/whatsappTransferReport/whatsappTransferReport.rpc.js b/server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
index efe8587..94dbe6c 100644
--- a/server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
+++ b/server/api/whatsappTransferReport/whatsappTransferReport.rpc.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/app.js b/server/app.js
index d727243..266d2d7 100644
--- a/server/app.js
+++ b/server/app.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/auth/service.js b/server/components/auth/service.js
index 0a38878..0a6a3af 100644
--- a/server/components/auth/service.js
+++ b/server/components/auth/service.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/encryptor/index.js b/server/components/encryptor/index.js
index cd93fdd..e7da531 100644
--- a/server/components/encryptor/index.js
+++ b/server/components/encryptor/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/export/csv.js b/server/components/export/csv.js
index 5e22fc3..7444da9 100644
--- a/server/components/export/csv.js
+++ b/server/components/export/csv.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/export/pdf.js b/server/components/export/pdf.js
index c57de62..b3dcf88 100644
--- a/server/components/export/pdf.js
+++ b/server/components/export/pdf.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/export/xlsx.js b/server/components/export/xlsx.js
index eadac6d..8600fea 100644
--- a/server/components/export/xlsx.js
+++ b/server/components/export/xlsx.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/extensions/rewrite.js b/server/components/extensions/rewrite.js
index 2cc6497..a3e858e 100644
--- a/server/components/extensions/rewrite.js
+++ b/server/components/extensions/rewrite.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/import/cm/csv.js b/server/components/import/cm/csv.js
index 80ec72f..97e1a5c 100644
--- a/server/components/import/cm/csv.js
+++ b/server/components/import/cm/csv.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/import/cm/csv2.js b/server/components/import/cm/csv2.js
index ee451a1..67589c5 100644
--- a/server/components/import/cm/csv2.js
+++ b/server/components/import/cm/csv2.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/integrations/configuration.js b/server/components/integrations/configuration.js
index 1efb40d..3aadbba 100644
--- a/server/components/integrations/configuration.js
+++ b/server/components/integrations/configuration.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/interaction/service.js b/server/components/interaction/service.js
index 847efdc..037f11a 100644
--- a/server/components/interaction/service.js
+++ b/server/components/interaction/service.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/license/service.js b/server/components/license/service.js
index f42ceb1..3b07eaa 100644
--- a/server/components/license/service.js
+++ b/server/components/license/service.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/parsers/advancedSearch.js b/server/components/parsers/advancedSearch.js
index 6c0d6ab..c63c4df 100644
--- a/server/components/parsers/advancedSearch.js
+++ b/server/components/parsers/advancedSearch.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/components/parsers/qs.js b/server/components/parsers/qs.js
index 47cc5ae..4c1ec31 100644
--- a/server/components/parsers/qs.js
+++ b/server/components/parsers/qs.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/environment/development.js b/server/config/environment/development.js
index 30f27f6..e86a0b9 100644
--- a/server/config/environment/development.js
+++ b/server/config/environment/development.js
@@ -13,7 +13,7 @@ module.exports = {
     username: 'xcall',
     password: 'xC@LL1234',
     options: {
-      host: '192.168.1.204',
+      host: '127.0.0.1',
       port: 3306,
       dialect: 'mysql',
       dialectOptions: {
@@ -32,7 +32,7 @@ module.exports = {
     username: 'xcall',
     password: 'xC@LL1234',
     options: {
-      host: '192.168.1.204',
+      host: '127.0.0.1',
       port: 3306,
       dialect: 'mysql',
       dialectOptions: {
@@ -47,7 +47,7 @@ module.exports = {
     }
   },
   asterisk: {
-    ip: '192.168.1.204',
+    ip: '127.0.0.1',
     port: '5038',
     username: 'xcall',
     password: 'xcall1234'
diff --git a/server/config/express.js b/server/config/express.js
index 4161d53..a8922d4 100644
--- a/server/config/express.js
+++ b/server/config/express.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/license/hardware.js b/server/config/license/hardware.js
index acc4321..adddbd9 100644
--- a/server/config/license/hardware.js
+++ b/server/config/license/hardware.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/license/index.js b/server/config/license/index.js
index 4244ebb..b8d378d 100644
--- a/server/config/license/index.js
+++ b/server/config/license/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/license/util.js b/server/config/license/util.js
index a7e7bb7..35f2154 100644
--- a/server/config/license/util.js
+++ b/server/config/license/util.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/local.env.js b/server/config/local.env.js
index 4b6146c..9226ef1 100644
--- a/server/config/local.env.js
+++ b/server/config/local.env.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x2ab3=['secret','exports'];(function(_0x91d019,_0x5223c4){var _0x19de1f=function(_0x3e1311){while(--_0x3e1311){_0x91d019['push'](_0x91d019['shift']());}};_0x19de1f(++_0x5223c4);}(_0x2ab3,0x1d3));var _0x32ab=function(_0x43776a,_0x4eb74c){_0x43776a=_0x43776a-0x0;var _0x18eb8f=_0x2ab3[_0x43776a];return _0x18eb8f;};'use strict';module[_0x32ab('0x0')]={'DOMAIN':'http://localhost:9000','SESSION_SECRET':'myappanuglar-secret','GOOGLE_ID':'app-id','GOOGLE_SECRET':_0x32ab('0x1'),'DEBUG':''};
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/logger.js b/server/config/logger.js
index 77bd6e1..8e280b9 100644
--- a/server/config/logger.js
+++ b/server/config/logger.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/pm2/config.js b/server/config/pm2/config.js
index c95fa35..be992cf 100644
--- a/server/config/pm2/config.js
+++ b/server/config/pm2/config.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/pm2/index.js b/server/config/pm2/index.js
index 28027bd..36d499c 100644
--- a/server/config/pm2/index.js
+++ b/server/config/pm2/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/schedule/chat.js b/server/config/schedule/chat.js
index e013e20..e6f64a2 100644
--- a/server/config/schedule/chat.js
+++ b/server/config/schedule/chat.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/schedule/index.js b/server/config/schedule/index.js
index 05c6a4e..a06d5ad 100644
--- a/server/config/schedule/index.js
+++ b/server/config/schedule/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/schedule/transcribe.js b/server/config/schedule/transcribe.js
index 23696de..d8ef30f 100644
--- a/server/config/schedule/transcribe.js
+++ b/server/config/schedule/transcribe.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/seedContact.js b/server/config/seedContact.js
index b702f00..a4898bd 100644
--- a/server/config/seedContact.js
+++ b/server/config/seedContact.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/seedDB/report/default.js b/server/config/seedDB/report/default.js
index c6c7a8e..cfc7402 100644
--- a/server/config/seedDB/report/default.js
+++ b/server/config/seedDB/report/default.js
@@ -1,6 +1,6 @@
 'use strict';
 
-module.exports = function(prefix) {
+module.exports = function (prefix) {
     return [{
         id: 1,
         name: 'Details',
@@ -302,14 +302,14 @@ module.exports = function(prefix) {
         parent: prefix + '_bull_ivr_campaigns',
         table: 'cm_hopper_final',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"campaigntype","value":"\'ivr\'"}]}}'
-    },{
+    }, {
         id: 44,
         name: 'Website Summary',
         description: 'Chat interactions by website',
         parent: prefix + '_chat',
         table: 'chat_interactions',
         joins: '[{"parentKey":"ChatWebsiteId","foreignTable":"chat_websites","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 45,
         name: 'Website Times',
         description: 'Chat interaction times by website',
@@ -317,7 +317,7 @@ module.exports = function(prefix) {
         table: 'chat_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"chat_interactions.closed","value":"1"},{"group":{"operator":"OR","rules":[{"condition":"IS NULL","field":"chat_interactions.disposition","value":""},{"group":{"operator":"AND","rules":[{"condition":"!=","field":"chat_interactions.disposition","value":"\'abandoned\'"},{"condition":"!=","field":"chat_interactions.disposition","value":"\'unmanaged\'"}]}}]}}]}}',
         joins: '[{"parentKey":"ChatWebsiteId","foreignTable":"chat_websites","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 46,
         name: 'Chat By Agent',
         description: 'Chat interactions by agent',
@@ -325,28 +325,28 @@ module.exports = function(prefix) {
         table: 'chat_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"chat_interactions.closed","value":"1"}]}}',
         joins: '[{"parentKey":"UserId","foreignTable":"users","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 47,
         name: 'Chat By Date',
         description: 'Chat interactions by date',
         parent: prefix + '_chat',
         table: 'chat_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"chat_interactions.closed","value":"1"}]}}'
-    },{
+    }, {
         id: 48,
         name: 'Chat By Queue',
         description: 'Chat interactions by queue',
         parent: prefix + '_chat',
         table: 'report_chat_queue',
         joins: '[{"parentKey":"ChatQueueId","foreignTable":"chat_queues","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 49,
         name: 'Email Account Summary',
         description: 'Email interactions by account',
         parent: prefix + '_mail',
         table: 'mail_interactions',
         joins: '[{"parentKey":"MailAccountId","foreignTable":"mail_accounts","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 50,
         name: 'Email Account Times',
         description: 'Email interaction times by account',
@@ -354,7 +354,7 @@ module.exports = function(prefix) {
         table: 'mail_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"mail_interactions.closed","value":"1"},{"group":{"operator":"OR","rules":[{"condition":"!=","field":"mail_interactions.disposition","value":"\'unmanaged\'"},{"condition":"IS NULL","field":"mail_interactions.disposition","value":""}]}}]}}',
         joins: '[{"parentKey":"MailAccountId","foreignTable":"mail_accounts","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 51,
         name: 'Email By Agent',
         description: 'Email interactions by agent',
@@ -362,28 +362,28 @@ module.exports = function(prefix) {
         table: 'mail_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"mail_interactions.closed","value":"1"}]}}',
         joins: '[{"parentKey":"UserId","foreignTable":"users","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 52,
         name: 'Email By Date',
         description: 'Email interactions by date',
         parent: prefix + '_mail',
         table: 'mail_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"mail_interactions.closed","value":"1"}]}}'
-    },{
+    }, {
         id: 53,
         name: 'Email By Queue',
         description: 'Email interactions by queue',
         parent: prefix + '_mail',
         table: 'report_mail_queue',
         joins: '[{"parentKey":"MailQueueId","foreignTable":"mail_queues","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 54,
         name: 'Openchannel Account Summary',
         description: 'Openchannel interactions by account',
         parent: prefix + '_openchannel',
         table: 'openchannel_interactions',
         joins: '[{"parentKey":"OpenchannelAccountId","foreignTable":"openchannel_accounts","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 55,
         name: 'Openchannel Account Times',
         description: 'Openchannel interaction times by account',
@@ -391,7 +391,7 @@ module.exports = function(prefix) {
         table: 'openchannel_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"openchannel_interactions.closed","value":"1"},{"group":{"operator":"OR","rules":[{"condition":"!=","field":"openchannel_interactions.disposition","value":"\'unmanaged\'"},{"condition":"IS NULL","field":"openchannel_interactions.disposition","value":""}]}}]}}',
         joins: '[{"parentKey":"OpenchannelAccountId","foreignTable":"openchannel_accounts","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 56,
         name: 'Openchannel By Agent',
         description: 'Openchannel interactions by agent',
@@ -399,28 +399,28 @@ module.exports = function(prefix) {
         table: 'openchannel_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"openchannel_interactions.closed","value":"1"}]}}',
         joins: '[{"parentKey":"UserId","foreignTable":"users","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 57,
         name: 'Openchannel By Date',
         description: 'Openchannel interactions by date',
         parent: prefix + '_openchannel',
         table: 'openchannel_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"openchannel_interactions.closed","value":"1"}]}}'
-    },{
+    }, {
         id: 58,
         name: 'Openchannel By Queue',
         description: 'Openchannel interactions by queue',
         parent: prefix + '_openchannel',
         table: 'report_openchannel_queue',
         joins: '[{"parentKey":"OpenchannelQueueId","foreignTable":"openchannel_queues","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 59,
         name: 'Sms Account Summary',
         description: 'Sms interactions by account',
         parent: prefix + '_sms',
         table: 'sms_interactions',
         joins: '[{"parentKey":"SmsAccountId","foreignTable":"sms_accounts","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 60,
         name: 'Sms Account Times',
         description: 'Sms interaction times by account',
@@ -428,7 +428,7 @@ module.exports = function(prefix) {
         table: 'sms_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"sms_interactions.closed","value":"1"},{"group":{"operator":"OR","rules":[{"condition":"!=","field":"sms_interactions.disposition","value":"\'unmanaged\'"},{"condition":"IS NULL","field":"sms_interactions.disposition","value":""}]}}]}}',
         joins: '[{"parentKey":"SmsAccountId","foreignTable":"sms_accounts","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 61,
         name: 'Sms By Agent',
         description: 'Sms interactions by agent',
@@ -436,28 +436,28 @@ module.exports = function(prefix) {
         table: 'sms_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"sms_interactions.closed","value":"1"}]}}',
         joins: '[{"parentKey":"UserId","foreignTable":"users","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 62,
         name: 'Sms By Date',
         description: 'Sms interactions by date',
         parent: prefix + '_sms',
         table: 'sms_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"sms_interactions.closed","value":"1"}]}}'
-    },{
+    }, {
         id: 63,
         name: 'Sms By Queue',
         description: 'Sms interactions by queue',
         parent: prefix + '_sms',
         table: 'report_sms_queue',
         joins: '[{"parentKey":"SmsQueueId","foreignTable":"sms_queues","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 64,
         name: 'Fax Account Summary',
         description: 'Fax interactions by account',
         parent: prefix + '_fax',
         table: 'fax_interactions',
         joins: '[{"parentKey":"FaxAccountId","foreignTable":"fax_accounts","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 65,
         name: 'Fax Account Times',
         description: 'Fax interaction times by account',
@@ -465,7 +465,7 @@ module.exports = function(prefix) {
         table: 'fax_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"fax_interactions.closed","value":"1"},{"group":{"operator":"OR","rules":[{"condition":"!=","field":"fax_interactions.disposition","value":"\'unmanaged\'"},{"condition":"IS NULL","field":"fax_interactions.disposition","value":""}]}}]}}',
         joins: '[{"parentKey":"FaxAccountId","foreignTable":"fax_accounts","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 66,
         name: 'Fax By Agent',
         description: 'Fax interactions by agent',
@@ -473,19 +473,71 @@ module.exports = function(prefix) {
         table: 'fax_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"fax_interactions.closed","value":"1"}]}}',
         joins: '[{"parentKey":"UserId","foreignTable":"users","foreignKey":"id","type":"join"}]'
-    },{
+    }, {
         id: 67,
         name: 'Fax By Date',
         description: 'Fax interactions by date',
         parent: prefix + '_fax',
         table: 'fax_interactions',
         conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"fax_interactions.closed","value":"1"}]}}'
-    },{
+    }, {
         id: 68,
         name: 'Fax By Queue',
         description: 'Fax interactions by queue',
         parent: prefix + '_fax',
         table: 'report_fax_queue',
         joins: '[{"parentKey":"FaxQueueId","foreignTable":"fax_queues","foreignKey":"id","type":"join"}]'
+    }, {
+        id: 69,
+        name: 'WhatsApp Account Summary',
+        description: 'WhatsApp interactions by account',
+        parent: prefix + '_whatsapp',
+        table: 'whatsapp_interactions',
+        joins: '[{"parentKey":"WhatsappAccountId","foreignTable":"whatsapp_accounts","foreignKey":"id","type":"join"}]'
+    },{
+        id: 70,
+        name: 'WhatsApp Account Times',
+        description: 'WhatsApp interaction times by account',
+        parent: prefix + '_whatsapp',
+        table: 'whatsapp_interactions',
+        conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"whatsapp_interactions.closed","value":"1"},{"group":{"operator":"OR","rules":[{"condition":"!=","field":"whatsapp_interactions.disposition","value":"\'unmanaged\'"},{"condition":"IS NULL","field":"whatsapp_interactions.disposition","value":""}]}}]}}',
+        joins: '[{"parentKey":"WhatsappAccountId","foreignTable":"whatsapp_accounts","foreignKey":"id","type":"join"}]'
+    },{
+        id: 71,
+        name: 'WhatsApp By Agent',
+        description: 'WhatsApp interactions by agent',
+        parent: prefix + '_whatsapp',
+        table: 'whatsapp_interactions',
+        conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"whatsapp_interactions.closed","value":"1"}]}}',
+        joins: '[{"parentKey":"UserId","foreignTable":"users","foreignKey":"id","type":"join"}]'
+    },{
+        id: 72,
+        name: 'WhatsApp By Date',
+        description: 'WhatsApp interactions by date',
+        parent: prefix + '_whatsapp',
+        table: 'whatsapp_interactions',
+        conditions: '{"group":{"operator":"AND","rules":[{"condition":"=","field":"whatsapp_interactions.closed","value":"1"}]}}'
+    },{
+        id: 73,
+        name: 'WhatsApp By Queue',
+        description: 'WhatsApp interactions by queue',
+        parent: prefix + '_whatsapp',
+        table: 'report_whatsapp_queue',
+        joins: '[{"parentKey":"WhatsappQueueId","foreignTable":"whatsapp_queues","foreignKey":"id","type":"join"}]'
+    },{
+        id: 74,
+        name: 'Sentiment by Agent',
+        description: 'Sentiment by agent',
+        parent: prefix + '_voice_recordings',
+        table: 'voice_recordings',
+        conditions: '{"group":{"operator":"AND","rules":[{"condition":"IS NOT NULL","field":"voice_recordings.sentiment","value":"NULL"}]}}',
+        joins: '[{"parentKey":"UserId","foreignTable":"users","foreignKey":"id","type":"join"}]'
+    },{
+        id: 75,
+        name: 'Sentiment Summary',
+        description: 'Sentiment Summary',
+        parent: prefix + '_voice_recordings',
+        table: 'voice_recordings',
+        conditions: '{"group":{"operator":"AND","rules":[{"condition":"IS NOT NULL","field":"voice_recordings.sentiment","value":""}]}}'
     }];
 };
diff --git a/server/config/seedDB/report/fields.js b/server/config/seedDB/report/fields.js
index 29398fb..77b592a 100644
--- a/server/config/seedDB/report/fields.js
+++ b/server/config/seedDB/report/fields.js
@@ -2089,6 +2089,263 @@ module.exports = function() {
         alias: 'Closed',
         custom: true,
         ReportId: 64
+    },{
+        field: 'voice_recordings.UserId',
+        alias: 'UserId',
+        groupBy: true,
+        custom: false,
+        ReportId: 74
+    },{
+        field: 'users.fullname',
+        alias: 'Full Name',
+        groupBy: false,
+        custom: false,
+        ReportId: 74
+    },{
+        field: 'COUNT (IF(voice_recordings.sentiment = \'POSITIVE\',1,NULL))',
+        alias: 'POSITIVE',
+        groupBy: false,
+        custom: true,
+        ReportId: 74
+    },{
+        field: 'COUNT (IF(voice_recordings.sentiment = \'NEGATIVE\',1,NULL))',
+        alias: 'NEGATIVE',
+        groupBy: false,
+        custom: true,
+        ReportId: 74
+    },{
+        field: 'COUNT (IF(voice_recordings.sentiment = \'NEUTRAL\',1,NULL))',
+        alias: 'NEUTRAL',
+        groupBy: false,
+        custom: true,
+        ReportId: 74
+    },{
+        field: 'COUNT (IF(voice_recordings.sentiment = \'MIXED\',1,NULL))',
+        alias: 'MIXED',
+        groupBy: false,
+        custom: true,
+        ReportId: 74
+    },{
+        field: 'voice_recordings.sentiment',
+        alias: 'TOT',
+        function: 'COUNT',
+        groupBy: false,
+        custom: false,
+        ReportId: 74
+    },{
+        field: 'CONCAT(ROUND(( (SELECT COUNT(IF(voice_recordings.sentiment = \'POSITIVE\',1,NULL)))*100/ COUNT (voice_recordings.sentiment)),2),\'%\')',
+        alias: 'Positive(%)',
+        groupBy: false,
+        custom: true,
+        ReportId: 69
+    },
+    {
+        field: 'CONCAT(ROUND(( (SELECT COUNT(IF(voice_recordings.sentiment = \'NEGATIVE\',1,NULL)))*100/ COUNT (voice_recordings.sentiment)),2),\'%\')',
+        alias: 'Negative(%)',
+        groupBy: false,
+        custom: true,
+        ReportId: 74
+    },
+    {
+        field: 'CONCAT(ROUND(( (SELECT COUNT(IF(voice_recordings.sentiment = \'NEUTRAL\',1,NULL)))*100/ COUNT (voice_recordings.sentiment)),2),\'%\')',
+        alias: 'Neutral(%)',
+        groupBy: false,
+        custom: true,
+        ReportId: 74
+    },
+    {
+        field: 'CONCAT(ROUND(( (SELECT COUNT(IF(voice_recordings.sentiment = \'MIXED\',1,NULL)))*100/ COUNT (voice_recordings.sentiment)),2),\'%\')',
+        alias: 'Mixed(%)',
+        groupBy: false,
+        custom: true,
+        ReportId: 74
+    },{
+        field: 'voice_recordings.sentiment',
+        alias: 'Sentiment TOT',
+        function: 'COUNT',
+        groupBy: false,
+        custom: false,
+        ReportId: 75
+    },{
+        field: 'COUNT (IF(voice_recordings.sentiment = \'POSITIVE\',1,NULL))',
+        alias: 'POSITIVE',
+        groupBy: false,
+        custom: true,
+        ReportId: 75
+    },{
+        field: 'COUNT (IF(voice_recordings.sentiment = \'NEGATIVE\',1,NULL))',
+        alias: 'NEGATIVE',
+        groupBy: false,
+        custom: true,
+        ReportId: 75
+    },{
+        field: 'COUNT (IF(voice_recordings.sentiment = \'NEUTRAL\',1,NULL))',
+        alias: 'NEUTRAL',
+        groupBy: false,
+        custom: true,
+        ReportId: 75
+    },{
+        field: 'COUNT (IF(voice_recordings.sentiment = \'MIXED\',1,NULL))',
+        alias: 'MIXED',
+        groupBy: false,
+        custom: true,
+        ReportId: 75
+    },{
+        field: 'CONCAT(ROUND(( (SELECT COUNT(IF(voice_recordings.sentiment = \'POSITIVE\',1,NULL)))*100/ COUNT (voice_recordings.sentiment)),2),\'%\')',
+        alias: 'Positive(%)',
+        groupBy: false,
+        custom: true,
+        ReportId: 75
+    },
+    {
+        field: 'CONCAT(ROUND(( (SELECT COUNT(IF(voice_recordings.sentiment = \'NEGATIVE\',1,NULL)))*100/ COUNT (voice_recordings.sentiment)),2),\'%\')',
+        alias: 'Negative(%)',
+        groupBy: false,
+        custom: true,
+        ReportId: 75
+    },
+    {
+        field: 'CONCAT(ROUND(( (SELECT COUNT(IF(voice_recordings.sentiment = \'NEUTRAL\',1,NULL)))*100/ COUNT (voice_recordings.sentiment)),2),\'%\')',
+        alias: 'Neutral(%)',
+        groupBy: false,
+        custom: true,
+        ReportId: 75
+    },
+    {
+        field: 'CONCAT(ROUND(( (SELECT COUNT(IF(voice_recordings.sentiment = \'MIXED\',1,NULL)))*100/ COUNT (voice_recordings.sentiment)),2),\'%\')',
+        alias: 'Mixed(%)',
+        groupBy: false,
+        custom: true,
+        ReportId: 75
+    }, {
+        field: 'whatsapp_accounts.name',
+        alias: 'Whatsapp Account',
+        groupBy: true,
+        ReportId: 69
+    }, {
+        field: 'whatsapp_interactions.id',
+        alias: 'Interactions',
+        function: 'COUNT',
+        ReportId: 69
+    }, {
+        field: 'COUNT(IF(closed=0,1,NULL))',
+        alias: 'Open',
+        custom: true,
+        ReportId: 69
+    }, {
+        field: 'COUNT(IF(closed=1,1,NULL))',
+        alias: 'Closed',
+        custom: true,
+        ReportId: 69
+    }, {
+        field: 'whatsapp_accounts.name',
+        alias: 'Whatsapp Account',
+        groupBy: true,
+        ReportId: 70
+    }, {
+        field: 'UNIX_TIMESTAMP(closedAt)-UNIX_TIMESTAMP(whatsapp_interactions.createdAt)',
+        alias: 'Interaction Time',
+        function: 'SUM',
+        format: 'SEC_TO_TIME',
+        custom: true,
+        ReportId: 70
+    }, {
+        field: 'ROUND(AVG(UNIX_TIMESTAMP(closedAt)-UNIX_TIMESTAMP(whatsapp_interactions.createdAt)))',
+        alias: 'AVG Interaction Time',
+        format: 'SEC_TO_TIME',
+        custom: true,
+        ReportId: 70
+    }, {
+        field: 'users.fullname',
+        alias: 'Agent',
+        groupBy: true,
+        ReportId: 71
+    }, {
+        field: 'whatsapp_interactions.closed',
+        alias: 'Closed',
+        function: 'SUM',
+        ReportId: 71
+    }, {
+        field: 'UNIX_TIMESTAMP(closedAt)-UNIX_TIMESTAMP(whatsapp_interactions.createdAt)',
+        alias: 'Interaction Time',
+        function: 'SUM',
+        format: 'SEC_TO_TIME',
+        custom: true,
+        ReportId: 71
+    }, {
+        field: 'ROUND(AVG(UNIX_TIMESTAMP(closedAt)-UNIX_TIMESTAMP(whatsapp_interactions.createdAt)))',
+        alias: 'AVG Interaction Time',
+        format: 'SEC_TO_TIME',
+        custom: true,
+        ReportId: 71
+    }, {
+        field: 'whatsapp_interactions.createdAt',
+        alias: 'Date',
+        format: 'DATE',
+        groupBy: true,
+        custom: true,
+        ReportId: 72
+    }, {
+        field: 'whatsapp_interactions.id',
+        alias: 'Interactions',
+        function: 'COUNT',
+        ReportId: 72
+    }, {
+        field: 'COUNT(IF(closed=1,1,NULL))',
+        alias: 'Completed',
+        custom: true,
+        ReportId: 72
+    }, {
+        field: 'ROUND(COUNT(IF(closed=1,1,NULL))/COUNT(id) *100,1)',
+        alias: 'Completed (%)',
+        custom: true,
+        ReportId: 72
+    }, {
+        field: 'UNIX_TIMESTAMP(closedAt)-UNIX_TIMESTAMP(createdAt)',
+        alias: 'Interaction Time',
+        function: 'SUM',
+        format: 'SEC_TO_TIME',
+        custom: true,
+        ReportId: 72
+    }, {
+        field: 'ROUND(AVG(UNIX_TIMESTAMP(closedAt)-UNIX_TIMESTAMP(createdAt)))',
+        alias: 'AVG Interaction Time',
+        format: 'SEC_TO_TIME',
+        custom: true,
+        ReportId: 72
+    }, {
+        field: 'whatsapp_queues.name',
+        alias: 'Queue',
+        groupBy: true,
+        ReportId: 73
+    }, {
+        field: 'report_whatsapp_queue.id',
+        alias: 'Interactions',
+        function: 'COUNT',
+        ReportId: 73
+    }, {
+        field: 'COUNT(IF(reason=\'accepted\',1,NULL))',
+        alias: 'Accepted',
+        custom: true,
+        ReportId: 73
+    }, {
+        field: 'COUNT(IF(reason=\'timeout\',1,NULL))',
+        alias: 'Timeout',
+        custom: true,
+        ReportId: 73
+    }, {
+        field: 'UNIX_TIMESTAMP(leaveAt)-UNIX_TIMESTAMP(joinAt)',
+        alias: 'Hold Time',
+        function: 'SUM',
+        format: 'SEC_TO_TIME',
+        custom: true,
+        ReportId: 73
+    }, {
+        field: 'ROUND(AVG(UNIX_TIMESTAMP(leaveAt)-UNIX_TIMESTAMP(joinAt)))',
+        alias: 'AVG Hold Time',
+        format: 'SEC_TO_TIME',
+        custom: true,
+        ReportId: 73
     }];
 
     return _.groupBy(fields, 'ReportId');
diff --git a/server/config/seedDB/tree/index.js b/server/config/seedDB/tree/index.js
index 2c048aa..ddb5de5 100644
--- a/server/config/seedDB/tree/index.js
+++ b/server/config/seedDB/tree/index.js
@@ -101,6 +101,10 @@ var getMotionChildren = function(prefix) {
         text: 'Fax',
         icon: 'icon s20 icon-deskphone'
     }, {
+        id: prefix + 'whatsapp',
+        text: 'WhatsApp Connector',
+        icon: 'icon s20 icon-whatsapp'
+    }, {
         id: prefix + 'agents',
         text: 'Agents',
         icon: 'icon s20 icon-account-multiple'
diff --git a/server/config/seedDB/users.js b/server/config/seedDB/users.js
index f230daa..b648cf7 100644
--- a/server/config/seedDB/users.js
+++ b/server/config/seedDB/users.js
@@ -20,7 +20,7 @@ var users = [{
     password: 'shuttle55',
     fullname: 'John Doe',
     internal: 1001,
-    permissions: '101,102,103,110,104,105,106,107,108,109,100,111'.split(','),
+    permissions: '101,102,103,113,110,104,105,106,107,108,109,100,111,114'.split(','),
     description: 'agent auto generated'
 }, {
     id: 3,
@@ -30,7 +30,7 @@ var users = [{
     password: 'shuttle55',
     fullname: 'Jane Miller',
     internal: 1002,
-    permissions: '101,102,103,110,104,105,106,107,108,109,100,111'.split(','),
+    permissions: '101,102,103,113,110,104,105,106,107,108,109,100,111,114'.split(','),
     description: 'agent auto generated'
 }];
 
diff --git a/server/config/seedUsers.js b/server/config/seedUsers.js
index 04f0b45..2a83ab7 100644
--- a/server/config/seedUsers.js
+++ b/server/config/seedUsers.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/socketio.js b/server/config/socketio.js
index 0c12ea5..5502b11 100644
--- a/server/config/socketio.js
+++ b/server/config/socketio.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/triggers/index.js b/server/config/triggers/index.js
index 149e470..7af7d4a 100644
--- a/server/config/triggers/index.js
+++ b/server/config/triggers/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/config/utils.js b/server/config/utils.js
index a174830..02900de 100644
--- a/server/config/utils.js
+++ b/server/config/utils.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/errors/index.js b/server/errors/index.js
index af9a15a..53593a6 100644
--- a/server/errors/index.js
+++ b/server/errors/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/files/attachments/1598272067460-Auto Generated Inline Image 1 b/server/files/attachments/1598272067460-Auto Generated Inline Image 1
deleted file mode 100644
index 6f68a64c6373c0b5762b729b93e60096284f1375..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15665
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
E0o-N}Qvd(}

diff --git a/server/files/attachments/1598272067646-Auto Generated Inline Image 1 b/server/files/attachments/1598272067646-Auto Generated Inline Image 1
deleted file mode 100644
index 6f68a64c6373c0b5762b729b93e60096284f1375..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 15665
zcmb`ueO!`v`!{Z@t+vXtW@f3hs7bT5GFPZTn<%wfj+HVqWtK^0YDzwUJhW>0m}HS=
zDKywt`4B5gQxPkBFf<vJlA(|(VxpoTBJy;9aMyKT``*`ef4}$d_4@r&a&mH>pY!+}
z5AWmsKF*x)c46j!vg{KF2Z#CFx1qmxaG0rdaF|g)=Ob|Bx7V9iIXDDPZbyH$C*#d<
z_lBEZEoqlx990GA6Am9Pd$@b$mOp3BTfO`n=cTmuZ?_$LxAhzpBg#JjTmR$ajE~&l
z=d-T5{#hrj({|9V4DAhz4+~4DFPL1bAYP8;clPy&Zw}JT^|nzq3*75Ig~7J5ZBr<l
z2l!O2S6C+*p{fCRP73&lu7%A8|6v`$Kb(EcnGOyo{yN|-n&IHE<pP^FbtA`q<iv8c
zk!Opy5bdYlKg<n0P%^}Qjh`79(A>f?E6fv$1-Ev8;NXz0ZO2;SkGxI_Hi>Lfn-!I1
zZEv*JG#co^aEDjMVYYSLe5!FWK=y$HmbIQqRl{r=TW@+48t#yt0+s_+p2Au)0_(ts
zg-VB^#Vt_JXy0pKW%rewDR$#LOAj7NH@VQq&F@2PQ*5i1$EIsvLJ&4{5~{mD$)+{V
zMp-&_H9j0Oxce2hM)lHSJ)1E9ejhA-LeGKO^mKf$sUEdh>2PdeAN!P%XC1Opx4Y(R
z*_vLPty2N6v;d{>bSTYIGwC^6agRl9v#D*)N{2t+U3qKuE5~rn@h5C4R}}QMV2Pdu
zT1^3yZZL4%9E4-5Z_@Rfw>L>6X?CO1et{}^oG7sN%{13?V9~8i&*y7w%LW^*Hed~b
z|M&6@6w8j*&GYf}F<|;^Eh=sMCWm|1=>9Wgvc(Nl#CDmu(E2i&Y3toc*W&0lpTyqV
zhk>EMCQw}Z8>5%?LwZekN4(ALo$b@!Z=0mHDZ_}g`lAzw;~3+d<sJ@iC@4>ge0au*
z`CK=LODkeVYQScKUvK(o9JOGBZ6gj?_OBfW8vs^d_ld3la)W;zyt-Lr>!n+L?B8!a
z!bEv20Ds*Rux*9~w$TMa|2lD@5?BH_)?b(V%dzYSCKy_UxqtKYmvI=Q_$#Z|^p_Vn
zX5u->&(nT*;#Zh$**i?kwDYZiix}3O_O)#Niiz1Z^|{?6S0wMM-N6BW{M}98I%2Jq
z1JBO9IaW46A6{8gvG3Zz6feW<H9V8$<ABu28dU|}D6NI`R3pQgtVy;`f(?F<Nf-_+
z!CJ>-@Intp4zF`JGs!j;{n_^w9XpsNbE(mK+bWHwYZMKJtbF~D@g~zbOk9xaFZ;^F
z#IRgDXzN6ZDn3|EhE(~O+pSJ;o$d(fc{t_m$gx+nacf&OJ11qtLm4WQOc9@nRh4vc
zW+RbdwzO>d*lHZQTKB@R+9XDr#P2zRcet|rvT&wGAM-kM)jlRKihT{{GDG+(Np~>i
z>6&dF><S7J6{^)3a~pYyCrV@_gJ#DBn>xYX9YX3TR5uq;i(rk~VpFBm%l~u~lWohZ
zfIU@R`{S;4NNau0DliJZV|EWK;=!^p%=C{a8Xvz-;@Y~bkX5Zc&Hj?60gFKpt!Vh%
z7j+^N6-b^?5t_13V0z;J<U`I5=`<d_-MXk-C_>xWBi&*GLP2<8F|^*w6E?CwX6G;-
zv)K%e0jG(NG-{&yRY6Zo@$FLtv&n<h80aZbq}SOZ*a;V3Zt${ocl(vc4JWnFzCfPX
zZ4&!Uuw@w1lhQ0XeSp2)HhLGys7xh&s<80~^n;d%v?3Ti4ShuE(jtGF;hiDm8&pH7
z&oby?S<ePkkrTr3TH78vExfUjb!CKGfrPNO%aBBi7mCMPEXN1<;4Pgc?&0k=d00rh
z@0#+oH;^>5FxCctY9&5{@s@tFaf<PM-?!gwI2w@h>frdCg!U_OeMYpZv{b*1B+g2F
zoC7cKH#3A*aRKDj7vR?Km-1N}F42TW(r<Hn;62p6V@BiBjOQC6KD~+)l~2XUjTel+
zX=)`Z*@3s1Y{CPT*pcnYcw~@NYJB-99-00_^CxX`vD(!X`FOm^m+J9`e#8L5%Eum#
z&+{quBT)OUf1^Zw(+No_r0>Ku-U}CdKAZe=nQI&30KFA?@*KQ$P4Db0<@EeCs*v&1
zq3c`DlgG^%l$6jQyoe9HZEeWhIcc~_uIm_3#fa8FK21;OcQhI-7iy_-RMs8{^ZF$6
z0_j)2mRdyp^mfW5QE6RoLK7y~>LC<|GKwpF`m4_xUk)X1(;iz;(OB0Pm;-w#we-X#
zN>_|G!R=XF!K>VJwLwf=!PXld4+EegLe{Vd@(aOyPUtW4ZA{A6-ZJcXl6mxrp`=s6
zi?e0Z4KVStHSsnlWn|Q%b@8yLx|3Mp{)`0u`af7b3Aj9MC;kgUqAZ_O;JY%lBl}c0
z?ey!Oqu1LDZ|PL>MBLp=)Fr*G&23AOmYtInnV*OqETcbBJ!_p)F@@w0ntF0I-<O!0
zMzAbn(_M?I%N|H(_-CTVdPW3Rcx0Dx=uoruc9GNPVY;u<^WRp&3;A^8(T{bl(5LMt
zVte5$SMlcfwhEZI#DIjh^10@SapO6-Wz_*@ux1J;UZcs;4oq|^b$x5G9^H_Qw0W7I
zQ&p_w4(%Xu>Cmxb@pn)|C{;JTnxP%4z21=Yt1D*XM*8XsBzHu_=i#Ul(d&>-h<}8-
z%&+v`5o$Sxl}|YlJ|ad0`BY>b37<c^`|u=r!lc|_)bXcET`uk}E1$?}o@$h#zK}C~
z+fM8wIi6vu>Se0!{e*W1nt%)OgkzURBf^Z`2_a1JGHZgZw#`Zu!RTw($7l2mls<0t
z$zc@uxQ9JpBaR9Nzu#KHF(*H4zK%R{dBc(YPptdK7%y5?k#|w-gS(6e##E{U4^1$l
z)m%xRxlzRw%O|+Juf}z;$77%M&SHC(uyZPe;yt#^P4V<A7Rzw*I~Z>={e_jUvGNm`
zeCv++rOArMcbWH1%O*(l?qSP-ZZ?G-^N_Ye#52TIe|yh_+AsWcCZ|iaU=n!><^q6^
z!wP%)-pX8nu8na!!|k*e60El<xK;%Y|2XLnK4xp*!RW{*H$PrpOBGWI-TgX+dw2i9
ztw;}5#AvBkwTY`EweE8PxnG7c^4E(pM>dnMG*5}MwL^NgtCBDM(81wt2T=sY{6c7r
z8i`;RH6M+*w(S_9imsnvAQz0yx8LJKtQA(Et>pG0f?h!8asuO5Jt&8zGeL=3sLW$9
z!QMmMbCKGnua5s<0`}dRpArKQPqy}1F<LgZEkU`^=+31~Ia1E+XMqApVWQ-xGt^G)
zxjir2AH3EzH4VX)P@M*pcksk6!K4l+jRdBFe}FnLN!}zPRMN-&Dy-N?qp5ad_~dI<
z+=)doolg7U`I)OOc@;52NU`^XD*)g^lU|JKpKd*tdu#6SAJLKa)7d_vhS$>hL>ajA
zLL~rX*BJ~39$n0kdy^YW49}OLXy%NTFW=>xh#Cd)ru3!%2Pa_cWqnmM_BppHx_Rpx
zX-w1Y92lWJt%ckr($|E}SRwLpQzFJ9okhG6+$FrJWx}<o%O%#t2b%^;HQIO{#+%od
zZtxNX=V#ovt_2%rnFWxI8m?^k%40qa>%IT#{=w6h2xguguoY)(%Z-Bp0FY$#bl+w?
zk)exu(QJ2a;Ktb&9UD``XiG?nswP+|dV#6gGLb0mP*z9@H861(g#3F}>=2<{4e3_-
zc6dTF2$i;a=?0y(Of%B~D@<lK2F!@;cbX{MH9nENqRxyN({j~(S*dp5S<lKA#-pSV
zCZ=gsZ%eX%D%OX6m)f>ai4bp|@>teg1QOxk>`IYA+Nw|L=2hVFV4+t+jEA=16!fHX
z5ci)GYo8BjtHuzwk^D0Y36%GFvzqID?pzGo9w{`3H2#R2-{aBEYLGRin#L=|iBMFz
zAq$70XEG`om7yAIso&n;QmN%3ocv0gq%P!?V80DmNca_#(6*VKYU{*2Qv@Fy->|Xh
z`48-iSXOd<v&&NnWOfKgpu(IKK}oJMe!7W(9*$@${BwCB7Zc#yfvQ6`@WMi0#Z`*S
zVG#Gj8`Ks6iNLCZjm@Rw64}TS<pOLp`8+4W3BHjR7$B-B*mHIk3#RZDVSdN$L6e@u
zUvyP^?P^W`9R@-8%mD6tA(#{^Hzs1ENz1W9{GF;?Z3HnICyc9zR&@6>3HhbjtmdP~
zCyy(I-|4OON0_*8)18#ycX<o&;w`RSq8@cXFiBjRf~6I}=q_RHL=i5Sq$z#Vj+OiR
z_!D=fwdgASbMWo(c_5z<s>C;mBCil>Yp!-k>InQL2gWG<p~`?hiU48MGjAwhKAwFG
z84zO3g)2LYmtJ-kM2Jb@k8oAuN|>VO_Q3|aJo9+N;8A%*@#x;<)Kd{^#bN{a5lAK3
z+6OSyULl!Ul<$!-9_1n+XHy<eUD_Q@kLnrXihMaSkK-vtpWSIU1*MMSkcw8r5BjM+
z!K!?S@ix5=G!@y}$4%0oEFXwnzE7JhoM*?oHD^;~vjH5PM%JJcnntkyZEN%okUX8*
z{`srv{%M8C9{YbG>HmO*i_dCRb5}3tjtYw#|C}ivCKV<urh4Gykem0CPz`a#w1k8O
z_RNs2Rn5R#(WG{r%S=^%a`K37E;#HNY^?X`D8bihw86CT+A@+19UU2yewO+sKD}zV
z$1(>z+|Sr(%j(@sg{NqEfuWP#K$DsZAF4kF-<;(L$aCs_l+w;Gp{Cq9TMXC~9@_|#
zGe_`tNPQ9Cx=~X@xT#h(=E?gHb+Sw&onIE}jUzNZUe?VKq|mQ-(Kk-~;;Ly^U7^PJ
zStAWE2|by&(?=-clqv(nSh~E--~+O}-S=_yHCJ4f;?uHNZ`01#U;0W_`B)*Dp0O*M
z-3e;;%+OG#W`cY$#5iC*cS`}<4)DkYT33AY7yH+1_w8krBRs|y_XHP<Sxw6==cAL`
zPDIgu%?at}|7c`cKC46eas{hj5Zu<#cV<w%<c*9+;tS<Y>%qQ(AVC{@Kftn_oFpc3
z?nq(b4DrJO_--bKksn@}q_@I-MP4-6^`*jS<5YME>4|FllLblBKLq`+r=!$Gc?<rO
zW426CjxJP+mxquv+vYY&XMj}rqDLg2i!qk>JaFcz2U8a+5ByZ*tW<m$`^2Pf#j;Wh
zerlyI0S^-DZ<=!D3f?sz(v)h;?~@#94_Ho0@lzJ+MP<IW9C9|!t*6reo9GRnT5>_J
z%a6Lv?ZVnEfS=rE94KV5pb6r>IeF-y@!Ghx^(m86&BeA>%P%S+A(+xW1wzV|CvE<7
z=wg$Uy`7DUfX2kRVP}H}=TP1pQ$B?P*I=B6(dW&IP6ch6Q5x0OrSO;www@a2uB^-`
zLn_i+*a$Squ)w9@+)M{f*QkCt>)|QG%zEMPVW=NLvPi*te|<mmrvg|F^*=On|4teF
z4=(@TN0Udk7J{Nt)a{F>CMPr2q+H28+f7vPJJ!UT(0E=rZ)CG6IqlYzF&1fc#zVf;
z=?LGe2z>=6RTxStw?>XnP6qc=?;dJcpz#GY^8lq`u2!>uV;v>c?15m5R@g?Ynbiz?
zHKXj>Nft`;wauzGVRBsOSimx6VaDtek-^48<1~X|T?-*ANlguhG$hs9@`o?DE9*lN
zCoFj>8`g+4E=ox%++-^Mf`%E{kv(&TXfa2STGD)OxD#tl?HuGzXhNLw6CnW5_#~r4
znRs#lNYUve{O}UxNjC><w41W<&$IK?ZLHlM2o5BQ-C=@sg6vn@qvn{ao1}DVzWX~o
zGf$gC6nzMH;80SSgr5_4+`|PMC0zyyjL~Ilp6FaBip)Aa(G~`2uyIwgdhbH`4SaFc
zQlUrg(~fibT>vfxdwACEY@uR`+&hsHeUe2ppc^0w3svTkyHQK4C1Per>a)qpWyX2s
zucP@YCJsr9Eu%Pn_;v{vxrhToDm^h>J%!fLV@-QNW<FGKI-!GVsN6AeU?<`Om$Pq%
z7A8_l<$B23S1kR_0&O#~&FsV>L@g07K#}POg;E0bql0v0Eau3nR!rLq)-7*g{s+h2
z!x*OziJb=J`e)|)@~3TYkO63tntX=>A8xS8V{YJ+7F%>Uh9U*E1Awt@6WDvf5PF{m
z<B{I6-XMo6CHm+7bvEy*boV;NByGs}Ao=*6@5X(V^ROPS<w&yeP8n-Cuvi5w39&p=
z{oQZ`HafMWdcZ<RVEdL0B*gykz8PDdpPCcBF|mHfI=u&+<)^v##hc8Pci+K|Js#DU
zpuUdPcwHzc5?|geCvJb%$)3S)(uXl|t(yTVJP{c}I=&@ce^AoqrsT>nOvBHlU?$F^
zlkL%;o~IpL&+`z{nqV4NYr{qnj{ecmLghuZXX}i6VN3>Vd~M2YelDL!V68~(vtoc7
zLhw8}O#H?}R@!bnilrUj1P@s1)z756bVz!JHZ!zx11^;*Hn(>7ppycEYh#8Tx;__i
zll}dlnnYNZpE!ysKCA6WZT6o#u7znzc1OD_+nYwcI0D0?BlXYMxG1AE2H#*(i&Ou=
zvGGCRU2Z2@&_>C3^{gI6L(t<)-duUWr_@v?20)^<4O~g&21Y=Ntt1G;hxDcq@ZukM
z&4vB>Eu~>>s--=pfe^qzGDMJ%mxLHAd(;<kgiEOp?{>s=SN-IMNS5U<Zg3Sko`5B7
zS!_Dgbu(8hsvVIGLq)y#Twlf;9RBme+b<Ei<HDJQKuzWFOTPCydeH{|tM4#*SDvq-
z>$kMCvk2K*7OCrE&)Vi0TT+=bk0v#>B+dZ9IT&tl7v4GoChbffVV?M=+vm|6@PWP7
z^rb?i+IqwNiI*s;4rHf$7$!z_0T;D6(CcOe9X3!B-#Ca)YS6LM^U4CANW&!&spv?+
zAsy4hAZO+2;1T`H%SfLJrv|8fvofGEPZK%`;~5D64;%hwI<vhE!OH7)>JL5%c{ioL
z-HsVnoL#xJ8_91IdW*zP{hY2jfYMC_x#Qmh+KXdedy6QYT%??s>)_z+p^W%NwrC^_
zOWS0iZW2KasN2-I1$agqN?g~iLZSB3`u4tcRwFltHm=&z7&0uO(=9q~d<2H~8})d7
zx*8%VxCc4`fT|0$g$v7El?}xDNU0~;29;g=Vhi~s-1j@^FP2neJ7`fuUIyLr6e)h5
zsE}be0=<yi@`1zsC{Exa4gzyMQ|hVHlzRlkn_BBu?bUZm8K4>zWUdlLa%lDZ4ui)U
zhNEXv1Dku5=3*%{&9IjuKT)LkiQIorW;hcU_4_)qEkZ^J={m@wHmJ54y@|ch!tTs>
zf?-Y|`LzEsr7Lk7^?-;NI5sla!YPA`Fg4=Jdo9^od5@Y<pdDD<zbk+Os8F!EDztH6
zyLc~$uN_h&YFa*-s2ui<pUjA38oF#HTncC{6hEgP-%<~l%B@T>Lwl&SplwVDQsQ$W
zJ9$E%-=j{?*WzM?v6JNEu&GKIqiqd)p%RK)dHn|uhZCUuOPmD%=I`_;zuhJ88ZS!z
zT-ypTF_aR{O!B>E4x3|O4F~$qZqQ;r0Qm0&%y!8C@7}x{G0$K9rnjOWgbX2!>2vlr
z?z8U2&kJS247raRa0xpwcm<n%<ftzjfJVCqVZEE}7EE`<C%JmFHU!qET*`P%8Ot{*
zVkXJrQjOOvowJ8+$t~1+H1+8)@hRjm(gV^sQ2V?>MzxxFlo>M|yj_(NV_%qbmN-{E
z2>FEE|Ayx;xdMt<MX%8tD<`&{s+dJuRm50niaIx!=<t?_MJ{X5v<X?MdjfPYie6%B
z{&+N`T3o4S@(Q}j7r)6#!3w`<7XQJHdy=t=$w+j8pB%}X<8Z7NmK62-)W!qQWXpdo
zV>P)o^SP93!^GSjs&xfgUW+hKJJh2E210@C@%847l>wQ%NaNYG<J7(OdNH(Ad4`t<
zfP)AFHP&Zna#Ap&87FpxkirM5PiKZPA<wChv)X10<0!kEL+K;;OJw>kn?&c{@OkFA
z|3FxiGzgnHuE5*O1AE^|;!7aiBi&P&k;W}Yxu)alx>x}&L_X75R<Ze4Oh1QFsZM8f
z6JNmbr-7l1F~)7#ZTVVxZFiM=af7XJcsJ;MIPgW)5r%HQcPC?me$Js#X5-vpTnz)1
z9xA3dYCXz4pnu*ajcb^F+aQ+1-!>2>{H*Spwq%!n;Gx$-NUPA91>YHNhW0DM5NRC~
zou7#!rQFqyWKCoG52I2U+GcL=t?3d^fcB?Upr;j_oQfL9j1Vrw402H!XA8n}MqXBM
zD6xqdakFZ`O`VS0R~k%GcfO9yIwH>1mbcsq)}Z1|rSH*6&?YjbU{PG<j`8!!vZ%rG
z{gdPnCZTnWV)Br&60SrPZz^qAFcF<3P+liaVBd2GXnIA#dBEGVmnbDYUG2re0YtE=
zfK7DicLp6^EZx+j-kh%mLEy!u=#f7-E1hS!owXAg9LkaZwlMABn(O~4a3nO6m<FM+
z9gEZ<*i=r<Q0)Mp8>oW=xEQ!@7e<wVhl}|AwRzfFkSrY|2tD2(>zZ@g)2{6H7S&JG
zc!iLZg@-^qaVXoFkol=YuGa2=Jpx1B+lC+s4nvByRJ5HBT-M;My9YI};m0?dHdJph
zO;s!$LC8qQ9mz_@throD$EaRZF|&2fSYb>zf)D_iKhX;Ri<Ec)qo>P;NPQQv(QqlE
zj*2D)ezVbDa(+MZ&7~T11i;<6nmmt&&DYGsy?YuV!6bQU%CxgULjI;poZ&StfAQLP
zj{soof%W4N>N}=UeS{%&c>NJs(*&qL53wF)q0y<|j#l2gY5nCY;ijd0af7~%E?<{6
zvJ}sGX+P(K{~UXv6FKsNUDavrFck4l&Mw((prC>6-`HO4x;#hCYYB(krEkvt@wlng
z-&6-fVKS!vylby#hyPP_Rc34XkJ_SocN~9%ba2=gDB^!zv$_jVe1}F%hnScV5P+>7
zLXR>!E45xsr`<6(-@WhEL5*e6B94XJ^pg{>i0SFauXL!3Jp*Td<p@07$6X2i%->g(
zsY<K489ENYNod%y@ma*Ut07;T)Y=MeVBOi@v))x)O2`@Nkh!h18NWne<+^E>3|FAt
zmObJ2%SaTvwXuRc1k$(q{GoON9+j&dgpU-$l5(bo+x9}{OPjG{MKW|j5k^z5GTQ69
z*h5)GIFRICj_?vyc)wiIU;{sfj%*YQ<-}hp#kFIF%_E3p`FW@kfq9mB=2uMCb;eDg
zH0|>fahqx@eDc!zVGvM^-+4ntnOQtGT*NKDB>TKI^MiYy`H@+7=K}o-O*$$}U)2TT
z2T~gq{s+K;5lv44xK&xjZc5qnHR3IM%MfUxr^vzuHL{Ewxa=C2DB!s%BXnJaQYzxW
z<di$t9CpdaRVZJsbZwGwF{7FN_d+k<ytSVMO8+7y1~W=NLpL}&YZ|;WG~bPb0vus;
zE$$eEOCq0?H2ZQX<N2czSel*NAmDkR2CD3E25l_kn!6MDszMxyk9~%Li5ngtm8A}k
zg#pe|&HqAFb7eOx^-AHE#D?M1#y-$CfnM@#%2nFZ@gm(bdriqpxp#mm11_*aRDZ_H
zFwdFiCPezrqjvZYBPk7pHiPp?<0lNC32_Z|WD@%PX>YHK#(FbYY|q<`JO2|>0zGe@
zHWdm>>kj3gvhx=l%G>jY5QLrLdwsY~6s~7_MXvTg6cb%tsU`J!Zr?xx=vM&7|G$(G
z-f^_P910~%gY5huD2kX^HCE4!>Fy+oxR`OS`lTJs5T3$Z4s*KH>qK5(N7!3Z0TG$r
zVsEbghMdy!w1w&tOp=sn!-&(zFAqu7S8?<4sC{YusUk)qar`yUD(r>tIg@alofuV|
zZxA(SUfrKrwno(07L`<+M0^9}S08YZ{{u+@*p4QyI?5lZCq&(b92j)^6SqOOsI#gD
zzSpWtAOn^TzVkAKHa-<M63>^<>@*QVf4%AdjR)eV(hJXLoPgn%C<_-3!@usXN0!iW
z`quy_WdU<Aina{c`<n-U?{5U2?=m^?+vWkPA+YgT(<=;pbeVhAqV8+Kq@mW4cgv^w
z*8f`{qiM!I{AV8%br7;z<9go1orA1HE_YkU_PZufoj=1jJQ%#+Hm~>pp+b-^8D<>|
zU0UN9kBT{`S)!~kJn+KQt_R{U(ocj5B`<+@Mm+A6`i3stoC3B8!({MqNlZclBcZK4
z%JsD~R``B&Jl_K1kRVjqtBk8OlS6qzo&hR^+rI)T*w_V(kyXh*=EKnD_Y6p&lL%s0
zuyLX|5-9KhO=N4izZ4*v8Z)zU4bd)wblB7&j8RE%k2sIv*6jC4@3Z=5jl`jz47UlR
zos<pYn4UlNtuUUz|9<{L#yqvWr>?JL8hmDJf5TcwsylVfUR*)S&CKJbY;6WJ*5fWu
zxU>EIdU4(JZEiL4v<t>QUsW<;D5;`=saP#iAaMV$bs>l<HpdAc67S{JH--~Tl+mdV
zfTwQIa&*rsZhp*imbRll9dEshPvvaJbAG;mvHE=(zQUJ=%%B2FOg^goU6uddwb-0{
zCTYAcF%0VgpCNCaa8gPsj_ElCQCxGS%qIHG4k)qmg*oiv8^YGt+xF3;s;917>anxz
zy=PvEY!6eGWKVIh<Itu$(86OF0~qNw{d99_aC>x7`VBMF=L3h$dD_Z96FxSS!%&w^
zNYJd<`37hFu12|7LdU4?(XF~>ZHe?l##%*PmDjtgsdG}4#t&};UR$=V&I&Y2{RE!W
zJvCq%AF;KYqT1Cm;<rYTv}Tb1iNn1JCgb!#D@;=+>#jpe>{qTwlltZkNN#gmaDgG}
zFZVhr`Mur;=oxp1zc@*VHO0<~eqt?g;`@HEF}|^aMkP>@d%Ea)lRNPD9Pa<wqg3Yp
zF@RNe`0&?>D^x8515=Fw{x$nE67|Jn|DXfN-BVK`r!xECXGfAQVm+v+YWeSjS=Wc8
z>9L>ge4>`s3w**riVVUqpiQp`A*A+$Z#V{^38ZCfn+qlKr<#vBh5Ezu*<r-E3dZHI
zd3Ycp<qzZBl_fwL9M!Y*5k}~q4)Dy!>)z>yE#~7u9RhsW-#VK%K$y&cN{(g0cvem{
zf?~M|_H*Mp5fQIw6<1akZfz%a%{Y+<=*{iom7W0=TTJBskKcvZ3-un1F&#fye#S?<
zbcE&ScKjOXk7N)qD&X56o2Rv=0+{TI`sC)NC&0TXO)$oj_XBPkFAS+8(BMiywq2@s
zEmQcbx0#z=OrrI8u;w5tu5FECjYx5}8UQ^6;N7``L4BE%vQWC&)R!SVI^%vY$2^ez
zt$0);|K(kS^h1q%E>LZuYSaObWU-UFoX@LqT+V2dv|hFerp|v?KePZLL)D>h^AR3V
z>_KQ_SYfzd`;U6Y)(8_puT~GKfpM>)jrFoPF_f48SKGha^4m~*@mQx*iJz)|<tI3|
zvglhrXhW8~r_;4~tQ_g|!$Br{%wNfGq8Q*xSMH*H*W4Tu-IRYo@mp#Kk?U>>gdiOl
z9<C6@a1ZgR_D?<P`S_KrB!O(sEm`YQR+NeItP3)tqp(kz_Q_J(36>?R?ZVt@taaW;
z&(yL~sOV=>;??NXD<Lcm@tA4IUHK5;6)cjn{Z0{-vW{+@^Yag3Oce_MW~SazwrPqI
zN$)z6V>7;-#VHo}Qo-;NmbK&t;}lE`zg-i`M4^q}{fbPy{Vi9V4jLSHB_V$wfV3+_
zNeh+nLbp6^6jVPV#(|m%fcTdbODk5sajmg%y#`5+_1hR)OYj&!Flt0D4!Wy~J#3eo
zC&_UjUhip~ln5twvPD;<lJUC+Qadb%?9k{`VPP_-hL0xo=M1xEGMs=Lc=oqY00xgv
zexfU+UN>x;G;+-K1Fc}<XryBE315zYKm}tqCt#5LSC`i-HjCKX$6jTw{DTEmK{08W
zq5Xz!j=I8Zx+78{S`VSphn<vF58#WGRZi|v$hxSN1_gPK0(BYC|A8^P;z$0JH>jA5
zRxSkL^t!oFD~Ei>TKw?tN|7(^&h<-4EWg{o*k=D6CS4=W*H$X|fUCO)fCwk>aGUzI
zHZ#Q7I}0lhp!ml(rzTymHvc%fg=Ck3CPz)>J!&rI3~!mT0W&fKuo)jatr6*}Rq12x
zQ?E;YLiD2J2xqlJhL&26zz?lir0fS41u|`uG*cC=NSGvRT!%A5cYbNT+?pwrJRQu@
zmcx}?)x1l-DZfnt@<!L-+n>!|EyDi{TD!Z#UF|LQpL1X+<bGfBJAQR`CGzAZl`-7?
zeZF~egKkLeTQC#{!inJ)Ax_`L#5FXMIU99-$09&q{p@Z&Bw*U4q1mqvT?*U<C>#tf
zvzh=1^N)Jdi&a-PY-&tBy*2I}Mq{f3lz-o3Io6|AUI(a(dp|Optl@0t{6X5nPaoMe
zq*?H_`9M~3xIe0Y(9=a~x=5fNw&>|;FD?%o^csd$r3cbCn$+p0rtTX5d}<<J%QGnL
z#}b{DmZt2;HmhZhxtmM0y!&d6xgTScs6PYM!2#>RlF5iUo}kw@6$7Dop)v?74*@VP
zLi|_=lqZh)^Cqb@n3S}(`V2*>ZC9sEz%*2$orMSKmJ_H(Cz&uLjcb!v5ih!!5A<%*
zKfe5sBlx@($a-q5y0e84tSg7{Kyz{(3@o;;NkV=g>>pAW#_z{rV$`<1MGU#E02^J4
zpe~#NT(B{Ni8_h3{;*6L;CADz2VB0c6_droU_O~cv@6$H97^L3&hS!Yd$M3KIr5Bx
z;9<Y*J9qn<KFk7r7zarQLdP++bBhKT{pF0?v`>Nl=y3lA*IZ%vtegC<dNQZyjr7`=
zB252Rik=~L33LI6IFMOnSKvTD;{j0lYgv&!4?d3Gw8ytd@!nr4d3t?IWTtw73o_fj
zilpV>TyXM#E6~~P^k2s!1uH}-BvO7`pj?+kYKfF<jljh?UB#c<|1PQ#D8cozQ|uZM
zxX1Ja<=+P$0Pg+Q^`-~gfKp>lp_wPg^1Kkm7saaHv9Y<P@a}4adLkjhRzHGb*F47+
z%Fqxf5%e3_0vIZpiAhSY-j;n+o!*kCefoYvEdjzta(bk2zinFi>C!nVTdJScE5)=&
z-!q@mu1}6=xF(EV8zQ!QqFtBp?GyODKpXG=C0tCnw&1Cv5ADXNh51mC&Q0CCPnF!S
zus}pJ2Vz;yzg9`i-3xVtN`UWIh$5CK*{7;kC-RF>d!=O@fpQ1sxco@Jws3LO@WQ^r
zEv;J){~!i}JfxdW?r2P*w-mhSI7GX<Q?ET~m*m#wXwx5<yQv3#6pM5fT!CL~IEK{!
zUAJox1@pmOmES-Ft#4a~*b>Kjbo3yzCNR9kZIpYWZC|v#87O^^l`nf))gv=a){EEB
zU4ndpV})|=%G|Vt*AtBOoxB~IDZ>y>a^ctEO;PU#jMX9Jf8IAw+tDcY@SqpL#6Wz2
zi3_S+Js*g2<(1p2!0_c%dV_d#=4(r(;bme_=k$Zt#)9b@K<nxD$9F{BNYB=~Hc2Zu
zg3YbCCvh6mvbeQAfZW5j0X1n;T{_Y<B?7Y@w{fXo-^*Xz3^aAo0Lxj)rwN|rT5u9U
z(_c@&FL75bjF+d)UEJ_on5Y|s17*oLaBL8?jm8+5E-O#+myx&UX`7FYf%zdrrMO;J
zwob(N>Cq=1N_^rp8X?8;1oQUwceZdDg|}>b01caN8*)Efs9)B)_b)50#>y8zC{z-H
zjk|~<47b)(+ZNlN`jj66*#pJ|rwoFR+Ibp~W-C>5!G`vH{s;__*oAAmzb{m(+`V@l
zmF513+9X(Zrqqv8w?89IU8*1QeaC1u6wK>HwOD_=Clqf0r*Z;^lhH;vhtl!!%kaeF
zd?luBLY~RF;~E1LU%s?K1>f^1p~L!}1^T=s^e9eGn{97vjtNA)U8$yAZLK(A{84N}
zOKjA`Du7$@(oQh(;QiH?YEnVL#^%?*6B=igO1`!`CKnK%o~CzKQr&ffEy-aCY9Q)Z
z9sXDeEEJF5uqm_8uO(MoY58pGGQ*o~vEQZ^26!v6aF?-@Bbb6EhixN#_&OgZ{^Y&0
z^v@B*;9kGeh)mRwrM?p4My@7II|<sjjw?`-<yFLv%>FtEVx-ycQRdBf`BWf4i@CKG
zB`rAC+Dh%5$oSJ?^F42xB?rb&AMvH%%L$BAI+<H7F@S}BJUTHjQ5g;P0VKjb%$ko>
z6^-#mUA{v>NZRqTjU)7@FbF)z-nJ|~vJcVcXEMf>4hQNmdGZV8&)vRtBDD@eC!I~U
ze8Y}DeL^>@y#??X3zaqbTFtu+zPq59$B~J;L}NY-u$(19!bs?f%*m-C?tS0>s|6vi
zbAA87o!xpV`TM(tFn01RR3`n>T_1GEZ>gE#KEPYIG8N=qr1teAtQ~j47Cg{c#`a%>
z@sK~g%Kb$iFw1yoRjkKF{Dx55q1;EU5NEO~hzA;ehFitTP2@e96W^r)x`<<*@FeHC
zMS$Cv^*_$jBDj?Ph|8Fo-txt`FxH%-H83`57K%u}jvT`)No%HqWGge^`{;~c1zI@z
z@3HbC48%$$zYZ5-EMLK!#Kv?mc2$XW<ye-!3kvwtf2{aR5x}%AN@)%V8eG-Af@J-u
zzC8XHf?FAH%MR)UZL{h8{(6AhU)OMotJP&Q<@ExflwfH$U`g&QcZ6w5(mP)HG8ZQH
zKVSmB;CU%hd_O9A`yG26A+b2|F-@WLhCY7~8YCe^HwN@(U6m)W8&G?AbTBI7{g>7J
zMVNwRjD1TICJMC@5}>sdhj$qdZQ|Wq+mSo$ul}AGfw5$&D1_GecxR=nNtbA9s`TZF
zt(2vfm`}j=-9JfsJUypuABFzsh{(Scm+6_2|1!+{4r?778!P%}u_+ScJ;2q3n<D-y
zHtWEM#a8BW;q=7*f4<!Ru5bXZg4*n&{M0no`_zX+x2f55zf21X=nbQLI}&94L`9Ll
zQEk<cWEAJxZ^t(Xu7T|4Epk#u)dWPs&{BQ9GT1nk%69KlAQJUj+#3}rNZz87CCVzg
zkI10-TvLR~T#=*w!LFc7EL;M85K(T&$WEZfy$WiJgnrA!dx;{8b38gn5R0a}TQKxz
zJPksjpY|IJGXMP03Kyjc#PQXHvqPGd{&fPlofiOlz4>dbT>Bf!U+hOTHs{<*o1@*f
z;$Z2fN`g_MXN;f_YJ6?uK@2HAwsG(0bpn9EK=`{TU2?P?=OWyd&Yrd9p8z#Vl`p+Y
zFc#id*D6{su&VO4MNf~E_|iV@DufS$)CbbpJ|_G4E@S=D%Ww*Uyr`<X{~QCI(4u%w
zi`v+~g%GHS0@@GbEe6`)IS2~<bir&K$dLm+YUu5CM{VoC^W0bEP+$<Li2^hPF&P!M
z;2=N%(+>eIzEMP&1yma(7yt}o8qOF+>xU7cL1OJc?~b1wQiGN)HG>$sMf{1@og>&-
z2eNqO`sbjC6h__p$D^sf{h?;o9hewZeucF0US&&V)#cs7c&5QTa2pJ_(3XnKJ^NL^
zm_WHNRbs8*^nFPH3*3>>uv~N{c^0KZ-|pozvzRoY9XJp>gt|z;Yr0XHn7y$LA8}DT
z&+hwXA;2!g_v^)bX*B>|OS&=_Rq%gE?H;R?%mzbicdZECS9*1T$+FT;P<V@C-Y`J@
zus@=m**sAJ#$-C{D$WE!o)<?`xAQ9Ikz5|o4rTa#3Xh*W{&;k#1Fr5QJc5*H++A<e
zi!42fO?v7Xz@E7%e`Y{|uBznkx>TJ~AG;QnQf-i5AU~fYYlX2JMiAm(RwnW%vIZfC
z(*kcrO)%{JPAKRB?v**8O-H=*7V(I&nd8^-?W=1ya>vvPhVUjo^qcVHk8hW&;Qpc&
z2d<2eKi=ZW2SbGRX;WC^AtoW}sbDH)Uzp6FY%4)I0CGJ7v)?OAhqGQk*MLIfb(IE}
zzxFwlB<J&X)2czf{AQo?i-;LtLIL&ePd=Th#A?ew8|pO0XcPx6Z~x>Ye5)JnZ&rAV
zX134`=?%J9&>EvTeO=A_h-(tnEigFU8ufgiP#YT)_LWD@ALTudE~3c!tnU)y_62+J
zwR31`u@jDX-cmW3G<22W?Js3Ce)~UE64yQn_ooO?a!UcTa<TYsm$>!tvUR^80jZCd
zx@wA>)v~&OEo=FItt2c9`QYR5_*t<F@NDX*_xziER~~)r`nn=yMeCLuZ?-YTTTX&}
z*!sq0rTWGHzDnXGc}2gk$2HZWg!Z7(OuFFp8c{{)io5%-8yvqvP6ag$#(zn0OfEpH
zhUOG_e9HzD1Oy(wlQ01P1nJKN;;((bXU4GfTM$8yacy}nO3*h}t`NU2=q&#8vTGk9
zM_Ym!^)+M-F1CfSidV*)0C={~HAxD!BGp3hEl)bc=K;#0`QwKiC%A7jh?D<RMli)7
z{_GqDsb%5&a;U7+Nw6Pautw1CfpP4#b7C<4mAY;`pR02w+z`t(arp0#7WaVJ{P6J?
zX${4{MZy;WDF#SjtbOZz<s9NYE{K;1TiF?&p*2}UZAb&!+K-8dndy&LOX8yN4O8eS
zL{kGM`dWu?Ib&Whn`9ZuhnytWP$#V4HCWr#yOTLV_*@WS3oxY6J76dXiaE<?YYK>>
zifCR*&|wUR^!VVd@T1a*;>#`mgNguE0Q6jVFzJa^AhWJlx2pLl2&f|2+8bEM^u8T_
ze@AZrV@G2*`t(Un$p3%4nB~Dn1_UM4n?n1IPwLMutpC<DHGV@#pNh^ZH&p{MYb(<>
zlHRCJI}f9Objqwx_=0O}r_N>HeXvHPN@NEZGbrZ$S^813oyDoa(#)~ZKaW>5)6%;7
zQ?Kqh^TxGTRe7tUzKUB@E1QV1!GJUi2v?X0G8?q&^i(YEVs=30@o>dRqAZJuwsY5D
zC>jvX+nfRnxx26<hir+M>p$BQhT_oVR2@v?{$=;Zrw02}d0byJRZV<fg2E#-v~j;?
zS}9AK{)93)aJy67qqc-}BxS*DZujvGS9F%t5?l=_-KOCLEb5n-3gpvc>A&kq2LnO#
zjioJBf)Kny?_0m@iexKdFLKdlpqkcM+hsH`k<3z8LcBK8x4M!Xp{9osfa`oCQF3GC
zM1@3#W(9>Z4T%tN5xKk4F9r!jG!5t1)P}t$Ym~LYCvOu<(ou`hEKMbhcWJi=RoGrw
z;@(&&H5{UE(K*izVSHmi9|^gHX}YVj?mdY}*(A^cjV)W-4_8)U?yJ~T1bJ1p=Qp<>
z-tre^a)|mas|d!(Kl(a#lH4&dV9`{dNgBE#Fj0dY%7-|IJVf=v>=UnO5_!6nfBl7s
zQLr{7i%tkk>>nK(&{eq=P=1Grk#BrN!KARi<O9O<T9-axVD=)VO1SDxe*9t0r%Esz
zoPJgtCRT~Cv?rjO2{B^N#mz%#5PQq+CWL^-+3p!W?m}x~_7pJ!jCI_)Ij3!C1?cFl
zUp(Sbel_m`11&Z%<B^~J9Q*@)AmLXqtP9sKYLoPg3+LFKV1tO!^oI(aG`6@Y%yB^*
za=9@VrfEP&ruKzD)epEn!x*w6JOi&JYwKA$XemO(4XTCO%KSE&29Op15EATq+5#|N
z=QL3bnx@c$ePK^t=fd!CN`qD}%AFJum+$$uINN&v&dXA5VNZ`U7THS*$6phW_nrVy
z6K%W#%j(3O>KS^pdb$kmv`-LEQ%8!l$*JDkP0|wG%&qOzztp;<z-#6%Px1k|6A6n<
z0!136_gAYW(ZLh7J~?Sc#{!7Q!jX#l1mFyBtFhKCU@Xd1k*BRdcXe|4Q)%h;tDJyo
zaz~;#rSZYnVCi?jne*_Wb9A6T&FudLQl*w8gcNkuAd6W>UAt}sgFiL&v{sZV;<KBi
zrn8m!_UfEy-IPv&;dKw!y#Y3)^a6A&k(r@clGphk4NA0y_ihwuC3>EG!j}`M-AAze
zP-vVfY9=o2boqi~4qI!O1%`|Cfq)I-P`EJO$GV7Obf(MdDs}rJ!8-A}MNCACz*M+G
zOCbc49)r1jU6n^c**_fibx-bxh#0f?^+qcx{;df!9~eIgc}<|7Gim1YFpNhN=<VTK
z04Wf9{3c6=cU2Y^&aZdGgGspt8<2{D)Qdx-{<<-J7T0_W43xM><U88hGP+uOIwh(|
zxSMe&mPNgTXNu?BUs1jPoNMkXMqf!@Hw@?s@-E{|tZ>k{4=y4&CfU<rwzjxQqL`1R
zdjq8e-r@Y9#61>4e1!jb@*;x?NF=Vw*3IcE1>6l*xc2{xvsHpwE${{q@*ieG`9G9b
zn=1!y<O@VgBb}69;7Nqh5l(ng;;HiYizJXsX{_BW_^K$tbYyGaV;%X7kL+)Prp!Ut
z4ud~R{X}#}wUfO`|Myoar{~qc3hk``sH90W-Ib(XQ#*T_a@q#y#2MCZ@ERic7M82U
zL(OXX^f$25-QW#f#fQ`L?I-$RN${_yd8w-~k)o{YTRVldHJRyCyXp-{?_Ueff#3go
z`*K2OZ)+U>^j>G@Bv0)7`wGGF|M(8+3h4B?MypR(<?$C{-tHi9ro;B&UFe%%|9J9$
E0o-N}Qvd(}

diff --git a/server/files/attachments/1598272068853-Captura de pantalla 2020-08-14 a las 15.53.25.png b/server/files/attachments/1598272068853-Captura de pantalla 2020-08-14 a las 15.53.25.png
deleted file mode 100644
index 183ee98ad5746385c9ce1fdc40e776d0c8af2951..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 443861
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
U-*5Bi4)CM!Mn$Gf>b>9p10@8#1poj5

diff --git a/server/files/attachments/1598272068853-Captura de pantalla 2020-08-14 a las 15.57.11.png b/server/files/attachments/1598272068853-Captura de pantalla 2020-08-14 a las 15.57.11.png
deleted file mode 100644
index 4d63c57c4a1b2e01a7257fd6fd20da52a3a4c3c6..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 266109
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

diff --git a/server/files/attachments/1598360289779-Captura de pantalla 2020-08-25 a las 13.11.05.png b/server/files/attachments/1598360289779-Captura de pantalla 2020-08-25 a las 13.11.05.png
deleted file mode 100644
index b687e0670c162a3eb7a705a7f6285162c518131e..0000000000000000000000000000000000000000
GIT binary patch
literal 0
HcmV?d00001

literal 291579
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
Om5XK<3jVqo_P+on#qnwY

diff --git a/server/migrations/2.4.13.js b/server/migrations/2.4.13.js
index 162e8ed..781dab2 100644
--- a/server/migrations/2.4.13.js
+++ b/server/migrations/2.4.13.js
@@ -160,7 +160,7 @@ module.exports = {
                 type: Sequelize.BOOLEAN,
                 defaultValue: false
             });
-            // END JSCRIPTY_PROJECTS
+			// END JSCRIPTY_PROJECTS
 
 			// START FINAL
 			migration.final(resolve);
diff --git a/server/migrations/2.4.17.js b/server/migrations/2.4.17.js
index 89a0ffb..577b158 100644
--- a/server/migrations/2.4.17.js
+++ b/server/migrations/2.4.17.js
@@ -155,161 +155,6 @@ module.exports = {
 			
 			var migration = new Migration(queryInterface);
 
-			//START voice_queues
-			migration.addColumn('voice_queues', 'dialNoSuchNumberMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('voice_queues', 'dialNoSuchNumberRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-			migration.addColumn('voice_queues', 'dialDropMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('voice_queues', 'dialDropRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-			migration.addColumn('voice_queues', 'dialAbandonedMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('voice_queues', 'dialAbandonedRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-			migration.addColumn('voice_queues', 'dialMachineMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('voice_queues', 'dialMachineRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-			migration.addColumn('voice_queues', 'dialAgentRejectMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('voice_queues', 'dialAgentRejectRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-			//END voice_queues
-
-			//START cm_hopper
-			migration.addColumn('cm_hopper', 'countnosuchnumberretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper', 'countdropretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper', 'countabandonedretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper', 'countmachineretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper', 'countagentrejectretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			//END cm_hopper
-
-			//START cm_hopper_final
-			migration.addColumn('cm_hopper_final', 'countnosuchnumberretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper_final', 'countdropretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper_final', 'countabandonedretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper_final', 'countmachineretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper_final', 'countagentrejectretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			//END cm_hopper_final
-
-			//START cm_hopper_history
-			migration.addColumn('cm_hopper_history', 'countnosuchnumberretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper_history', 'countdropretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper_history', 'countabandonedretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper_history', 'countmachineretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			migration.addColumn('cm_hopper_history', 'countagentrejectretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
-			});
-			//END cm_hopper_history
-
-			//START campaigns
-			migration.addColumn('campaigns', 'dialNoSuchNumberMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('campaigns', 'dialNoSuchNumberRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-			migration.addColumn('campaigns', 'dialDropMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('campaigns', 'dialDropRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-			migration.addColumn('campaigns', 'dialAbandonedMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('campaigns', 'dialAbandonedRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-			migration.addColumn('campaigns', 'dialMachineMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('campaigns', 'dialMachineRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-			migration.addColumn('campaigns', 'dialAgentRejectMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('campaigns', 'dialAgentRejectRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-			//END voice_queues
-
 			// START FINAL
 			migration.final(resolve);
 			// END FINAL
diff --git a/server/migrations/2.4.6.js b/server/migrations/2.4.6.js
index b19526c..64f1121 100644
--- a/server/migrations/2.4.6.js
+++ b/server/migrations/2.4.6.js
@@ -153,7 +153,9 @@ module.exports = {
 	up: function (queryInterface, Sequelize) {
 		return new BPromise(function (resolve) {
 			var migration = new Migration(queryInterface);
-
+			
+			
+		
 			// START FINAL
 			migration.final(resolve);
 			// END FINAL
diff --git a/server/migrations/2.5.0.js b/server/migrations/2.5.0.js
index ed8c1c4..5f4bd45 100644
--- a/server/migrations/2.5.0.js
+++ b/server/migrations/2.5.0.js
@@ -155,163 +155,152 @@ module.exports = {
 
 			var migration = new Migration(queryInterface);
 
-			//START voice_queues
-			migration.addColumn('voice_queues', 'dialNoSuchNumberMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('voice_queues', 'dialNoSuchNumberRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
+			// START whatsapp
+			migration.query('CREATE TABLE `whatsapp_accounts` (' +
+				' `id` int(11) NOT NULL AUTO_INCREMENT,' +
+				' `name` varchar(255) NOT NULL,' +
+				' `key` varchar(255) NOT NULL,' +
+				' `remote` varchar(255) NOT NULL,' +
+				' `token` varchar(255) DEFAULT NULL,' +
+				' `phone` varchar(255) DEFAULT NULL,' +
+				' `type` enum(\'twilio\') DEFAULT NULL,' +
+				' `accountSid` varchar(255) DEFAULT NULL,' +
+				' `authToken` varchar(255) DEFAULT NULL,' +
+				' `notificationTemplate` text,' +
+				' `notificationSound` tinyint(1) DEFAULT \'0\',' +
+				' `notificationShake` tinyint(1) DEFAULT \'0\',' +
+				' `waitForTheAssignedAgent` int(11) DEFAULT \'10\',' +
+				' `queueTransfer` tinyint(1) DEFAULT \'0\',' +
+				' `queueTransferTimeout` int(11) DEFAULT \'300\',' +
+				' `agentTransfer` tinyint(1) DEFAULT \'0\',' +
+				' `agentTransferTimeout` int(11) DEFAULT \'300\',' +
+				' `mandatoryDispositionPauseId` int(11) DEFAULT NULL,' +
+				' `mandatoryDisposition` tinyint(1) DEFAULT \'0\',' +
+				' `description` varchar(255) DEFAULT NULL,' +
+				' `createdAt` datetime NOT NULL,' +
+				' `updatedAt` datetime NOT NULL,' +
+				' `ListId` int(11) DEFAULT NULL,' +
+				' PRIMARY KEY (`id`),' +
+				' UNIQUE KEY `name` (`name`),' +
+				' KEY `mandatoryDispositionPauseId` (`mandatoryDispositionPauseId`),' +
+				' KEY `ListId` (`ListId`),' +
+				' CONSTRAINT `whatsapp_accounts_ibfk_1` FOREIGN KEY (`mandatoryDispositionPauseId`) REFERENCES `tools_pauses` (`id`) ON DELETE NO ACTION ON UPDATE CASCADE,' +
+				' CONSTRAINT `whatsapp_accounts_ibfk_2` FOREIGN KEY (`ListId`) REFERENCES `cm_lists` (`id`) ON DELETE SET NULL ON UPDATE CASCADE' +
+				') ENGINE=InnoDB DEFAULT CHARSET=utf8;');
+			  
+            migration.addColumn('tools_dispositions', 'WhatsappAccountId', {
+                type: Sequelize.INTEGER
+            });
 
-			migration.addColumn('voice_queues', 'dialDropMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('voice_queues', 'dialDropRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
+            migration.addColumn('tools_canned_answers', 'WhatsappAccountId', {
+                type: Sequelize.INTEGER
+			});
+			
+			migration.addColumn('users', 'whatsappPause', {
+                type: Sequelize.BOOLEAN,
+    			defaultValue: false
+            });
 
-			migration.addColumn('voice_queues', 'dialAbandonedMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('voice_queues', 'dialAbandonedRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
+            migration.addColumn('users', 'whatsappCapacity', {
+                type: Sequelize.BOOLEAN,
+    			defaultValue: false
+			});
+                      
+			migration.query('ALTER TABLE tools_dispositions ADD CONSTRAINT `tools_dispositions_ibfk_7` FOREIGN KEY (`WhatsappAccountId`) REFERENCES `whatsapp_accounts` (`id`) ON DELETE SET NULL ON UPDATE CASCADE');			
+			migration.query('ALTER TABLE tools_dispositions ADD CONSTRAINT `name_whatsapp` UNIQUE KEY (`name`,`WhatsappAccountId`)');
+            migration.query('ALTER TABLE tools_canned_answers ADD CONSTRAINT `tools_canned_answers_ibfk_6` FOREIGN KEY (`WhatsappAccountId`) REFERENCES `whatsapp_accounts` (`id`) ON DELETE SET NULL ON UPDATE CASCADE');
+						
+			migration.query('UPDATE users SET permissions=\'101,102,103,113,110,104,105,106,107,108,109,100,111,114\' WHERE role=\'agent\' AND permissions=\'101,102,103,110,104,105,106,107,108,109,100,111\'');
+			// END whatsapp
 
-			migration.addColumn('voice_queues', 'dialMachineMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('voice_queues', 'dialMachineRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
+			// START chat_interactions
+			migration.addColumn('chat_interactions', 'vidaooSessionId', {
+				type: Sequelize.TEXT
 			});
 
-			migration.addColumn('voice_queues', 'dialAgentRejectMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('voice_queues', 'dialAgentRejectRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-            //END voice_queues
-			//START campaigns
-			migration.addColumn('campaigns', 'dialNoSuchNumberMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('campaigns', 'dialNoSuchNumberRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
-			});
-			migration.addColumn('campaigns', 'dialDropMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
-			});
-			migration.addColumn('campaigns', 'dialDropRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
+			// START chat_websites
+            migration.addColumn('chat_websites', 'vidaooEscalation', {
+                type: Sequelize.BOOLEAN,
+                defaultValue: false
+            });
+            
+            migration.addColumn('chat_websites', 'vidaooApiKey', {
+                type: Sequelize.STRING
+            });
+			// END chat_websites
+
+			// START voice_recordings
+			migration.addColumn('voice_recordings', 'location', {
+				type: Sequelize.TEXT
 			});
-			migration.addColumn('campaigns', 'dialAbandonedMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
+			migration.addColumn('voice_recordings', 'transcribeName', {
+				type: Sequelize.STRING
 			});
-			migration.addColumn('campaigns', 'dialAbandonedRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
+			migration.addColumn('voice_recordings', 'transcribeStatus', {
+				type: Sequelize.STRING,
+				defaultValue: 'NEW'
 			});
-			migration.addColumn('campaigns', 'dialMachineMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
+			migration.addColumn('voice_recordings', 'fileUri', {
+				type: Sequelize.TEXT
 			});
-			migration.addColumn('campaigns', 'dialMachineRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
+			migration.addColumn('voice_recordings', 'fileText', {
+				type: Sequelize.TEXT
 			});
-			migration.addColumn('campaigns', 'dialAgentRejectMaxRetry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 3
+			migration.addColumn('voice_recordings', 'failureReason', {
+				type: Sequelize.TEXT
 			});
-			migration.addColumn('campaigns', 'dialAgentRejectRetryFrequency', {
-				type: Sequelize.INTEGER,
-				defaultValue: 150
+			migration.addColumn('voice_recordings', 'sentiment', {
+				type: Sequelize.STRING
 			});
-			//END campaigns            
-
-			//START cm_hopper
-			migration.addColumn('cm_hopper', 'countnosuchnumberretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('voice_recordings', 'sPositive', {
+				type: Sequelize.FLOAT
 			});
-			migration.addColumn('cm_hopper', 'countdropretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('voice_recordings', 'sNegative', {
+				type: Sequelize.FLOAT
 			});
-			migration.addColumn('cm_hopper', 'countabandonedretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('voice_recordings', 'sNeutral', {
+				type: Sequelize.FLOAT
 			});
-			migration.addColumn('cm_hopper', 'countmachineretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('voice_recordings', 'sMixed', {
+				type: Sequelize.FLOAT
 			});
-			migration.addColumn('cm_hopper', 'countagentrejectretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('voice_recordings', 'tempSentiment', {
+				type: Sequelize.BOOLEAN
 			});
-			//END cm_hopper
+			// END voice_recordings
 
-			//START cm_hopper_final
-			migration.addColumn('cm_hopper_final', 'countnosuchnumberretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			// START settings
+			migration.addColumn('settings', 'transcribe', {
+				type: Sequelize.BOOLEAN
 			});
-			migration.addColumn('cm_hopper_final', 'countdropretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('settings', 'automaticTranscribe', {
+				type: Sequelize.BOOLEAN
 			});
-			migration.addColumn('cm_hopper_final', 'countabandonedretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('settings', 'transcribeAccountId', {
+				type: Sequelize.INTEGER
 			});
-			migration.addColumn('cm_hopper_final', 'countmachineretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('settings', 'transcribeRegion', {
+				type: Sequelize.STRING
 			});
-			migration.addColumn('cm_hopper_final', 'countagentrejectretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('settings', 'sentiment', {
+				type: Sequelize.BOOLEAN
 			});
-			//END cm_hopper_final
-
-			//START cm_hopper_history
-			migration.addColumn('cm_hopper_history', 'countnosuchnumberretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('settings', 'automaticSentiment', {
+				type: Sequelize.BOOLEAN
 			});
-			migration.addColumn('cm_hopper_history', 'countdropretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('settings', 'sentimentAccountId', {
+				type: Sequelize.INTEGER
 			});
-			migration.addColumn('cm_hopper_history', 'countabandonedretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('settings', 'sentimentRegion', {
+				type: Sequelize.STRING
 			});
-			migration.addColumn('cm_hopper_history', 'countmachineretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('settings', 'language', {
+				type: Sequelize.STRING
 			});
-			migration.addColumn('cm_hopper_history', 'countagentrejectretry', {
-				type: Sequelize.INTEGER,
-				defaultValue: 0
+			migration.addColumn('settings', 'bucket', {
+				type: Sequelize.STRING
 			});
-			//END cm_hopper_history
+			// END settings
 
 			// START FINAL
 			migration.final(resolve);
diff --git a/server/migrations/2.5.2.js b/server/migrations/2.5.2.js
index 17894c1..0ec5ab4 100644
--- a/server/migrations/2.5.2.js
+++ b/server/migrations/2.5.2.js
@@ -170,7 +170,166 @@ module.exports = {
             migration.query('ALTER TABLE voice_extensions DROP FOREIGN KEY voice_extensions_ibfk_7');
             migration.query('ALTER TABLE voice_extensions DROP INDEX voice_extensions_ibfk_7');
             migration.query('ALTER TABLE voice_extensions ADD CONSTRAINT voice_extensions_ibfk_7 FOREIGN KEY (VoicePrefixId) REFERENCES voice_prefixes(id) ON UPDATE CASCADE ON DELETE CASCADE');
-            // END  voice_extensions
+			// END  voice_extensions
+			
+			//START voice_queues
+			migration.addColumn('voice_queues', 'dialNoSuchNumberMaxRetry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 3
+			});
+			migration.addColumn('voice_queues', 'dialNoSuchNumberRetryFrequency', {
+				type: Sequelize.INTEGER,
+				defaultValue: 150
+			});
+
+			migration.addColumn('voice_queues', 'dialDropMaxRetry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 3
+			});
+			migration.addColumn('voice_queues', 'dialDropRetryFrequency', {
+				type: Sequelize.INTEGER,
+				defaultValue: 150
+			});
+
+			migration.addColumn('voice_queues', 'dialAbandonedMaxRetry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 3
+			});
+			migration.addColumn('voice_queues', 'dialAbandonedRetryFrequency', {
+				type: Sequelize.INTEGER,
+				defaultValue: 150
+			});
+
+			migration.addColumn('voice_queues', 'dialMachineMaxRetry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 3
+			});
+			migration.addColumn('voice_queues', 'dialMachineRetryFrequency', {
+				type: Sequelize.INTEGER,
+				defaultValue: 150
+			});
+
+			migration.addColumn('voice_queues', 'dialAgentRejectMaxRetry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 3
+			});
+			migration.addColumn('voice_queues', 'dialAgentRejectRetryFrequency', {
+				type: Sequelize.INTEGER,
+				defaultValue: 150
+			});
+			//END voice_queues
+			
+			//START campaigns
+			migration.addColumn('campaigns', 'dialNoSuchNumberMaxRetry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 3
+			});
+			migration.addColumn('campaigns', 'dialNoSuchNumberRetryFrequency', {
+				type: Sequelize.INTEGER,
+				defaultValue: 150
+			});
+			migration.addColumn('campaigns', 'dialDropMaxRetry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 3
+			});
+			migration.addColumn('campaigns', 'dialDropRetryFrequency', {
+				type: Sequelize.INTEGER,
+				defaultValue: 150
+			});
+			migration.addColumn('campaigns', 'dialAbandonedMaxRetry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 3
+			});
+			migration.addColumn('campaigns', 'dialAbandonedRetryFrequency', {
+				type: Sequelize.INTEGER,
+				defaultValue: 150
+			});
+			migration.addColumn('campaigns', 'dialMachineMaxRetry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 3
+			});
+			migration.addColumn('campaigns', 'dialMachineRetryFrequency', {
+				type: Sequelize.INTEGER,
+				defaultValue: 150
+			});
+			migration.addColumn('campaigns', 'dialAgentRejectMaxRetry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 3
+			});
+			migration.addColumn('campaigns', 'dialAgentRejectRetryFrequency', {
+				type: Sequelize.INTEGER,
+				defaultValue: 150
+			});
+			//END campaigns            
+
+			//START cm_hopper
+			migration.addColumn('cm_hopper', 'countnosuchnumberretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper', 'countdropretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper', 'countabandonedretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper', 'countmachineretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper', 'countagentrejectretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			//END cm_hopper
+
+			//START cm_hopper_final
+			migration.addColumn('cm_hopper_final', 'countnosuchnumberretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper_final', 'countdropretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper_final', 'countabandonedretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper_final', 'countmachineretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper_final', 'countagentrejectretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			//END cm_hopper_final
+
+			//START cm_hopper_history
+			migration.addColumn('cm_hopper_history', 'countnosuchnumberretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper_history', 'countdropretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper_history', 'countabandonedretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper_history', 'countmachineretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			migration.addColumn('cm_hopper_history', 'countagentrejectretry', {
+				type: Sequelize.INTEGER,
+				defaultValue: 0
+			});
+			//END cm_hopper_history
 
 			// START FINAL
 			migration.final(resolve);
diff --git a/server/migrations/2.5.3.js b/server/migrations/2.5.3.js
new file mode 100644
index 0000000..577b158
--- /dev/null
+++ b/server/migrations/2.5.3.js
@@ -0,0 +1,167 @@
+'use strict';
+
+var BPromise = require('bluebird');
+var util = require('util');
+
+var logger = require('../config/logger')('migration');
+
+var Sequence = function () {};
+
+Sequence.prototype.enqueue = function (fn) {
+	this.tail = this.tail ? this.tail.finally(fn) : fn();
+};
+
+var Migration = function (queryInterface) {
+	this.queryInterface = queryInterface;
+	this.sequence = new Sequence();
+};
+
+Migration.prototype.changeColumn = function (table, column, type) {
+	var _this = this;
+	this.sequence.enqueue(function () {
+		return _this.queryInterface
+			.changeColumn(table, column, type)
+			.then(function () {
+				logger.info('Changed column %s in table %s', column, table);
+			})
+			.catch(function (err) {
+				logger.info(JSON.stringify(err));
+			});
+	});
+};
+
+Migration.prototype.addColumn = function (table, column, type) {
+	var _this = this;
+	this.sequence.enqueue(function () {
+		return _this.queryInterface
+			.addColumn(table, column, type)
+			.then(function () {
+				logger.info('Added column %s to %s', column, table);
+			})
+			.catch(function (err) {
+				logger.info(JSON.stringify(err));
+			});
+	});
+};
+
+Migration.prototype.dropTable = function (table) {
+	var _this = this;
+	this.sequence.enqueue(function () {
+		return _this.queryInterface
+			.dropTable(table, {
+				force: true
+			})
+			.then(function () {
+				logger.info('table dropped %s', table);
+			})
+			.catch(function (err) {
+				logger.info(JSON.stringify(err));
+			});
+	});
+};
+
+Migration.prototype.addIndex = function (table, column, options) {
+	var _this = this;
+	this.sequence.enqueue(function () {
+		return _this.queryInterface
+			.addIndex(table, column, {
+				indexName: options.indexName,
+				indicesType: options.indicesType
+			})
+			.then(function () {
+				logger.info('addIndex %s %s %s [%s]', table, column.join(','), options.indexName, options.indicesType);
+			})
+			.catch(function (err) {
+				logger.info(JSON.stringify(err));
+			});
+	});
+};
+
+Migration.prototype.removeIndex = function (table, indexName) {
+	var _this = this;
+	this.sequence.enqueue(function () {
+		return _this.queryInterface
+			.removeIndex(table, indexName)
+			.then(function () {
+				logger.info('removeIndex %s %s', table, indexName);
+			})
+			.catch(function (err) {
+				logger.info(JSON.stringify(err));
+			});
+	});
+};
+
+Migration.prototype.query = function (sql) {
+	var _this = this;
+	this.sequence.enqueue(function () {
+		return _this.queryInterface.sequelize
+			.query(sql)
+			.then(function () {
+				logger.info('query %s', sql);
+			})
+			.catch(function (err) {
+				logger.info(JSON.stringify(err));
+			});
+	});
+};
+
+Migration.prototype.removeColumn = function (table, column) {
+	var _this = this;
+	this.sequence.enqueue(function () {
+		return _this.queryInterface
+			.removeColumn(table, column)
+			.then(function () {
+				logger.info('Removed column %s from %s', column, table);
+			})
+			.catch(function (err) {
+				logger.info(
+					util.inspect(err, {
+						showHidden: false,
+						depth: null
+					})
+				);
+			});
+	});
+};
+
+Migration.prototype.renameColumn = function (table, oldColumn, newColumn) {
+	var _this = this;
+	this.sequence.enqueue(function () {
+		return _this.queryInterface
+			.renameColumn(table, oldColumn, newColumn)
+			.then(function () {
+				logger.info('Renamed column from %s to %s on %s', oldColumn, newColumn, table);
+			})
+			.catch(function (err) {
+				logger.info(
+					util.inspect(err, {
+						showHidden: false,
+						depth: null
+					})
+				);
+			});
+	});
+};
+
+Migration.prototype.final = function (resolve) {
+	this.sequence.enqueue(function () {
+		return resolve();
+	});
+};
+
+module.exports = {
+	up: function (queryInterface, Sequelize) {
+		return new BPromise(function (resolve) {
+			
+			var migration = new Migration(queryInterface);
+
+			// START FINAL
+			migration.final(resolve);
+			// END FINAL
+		});
+	},
+
+	down: function (queryInterface, Sequelize) {
+		// var migration = new Migration(queryInterface);
+	}
+};
\ No newline at end of file
diff --git a/server/mysqldb/index.js b/server/mysqldb/index.js
index 6aa91a7..de4cf09 100644
--- a/server/mysqldb/index.js
+++ b/server/mysqldb/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/routes.js b/server/routes.js
index 3d94781..0adb19f 100644
--- a/server/routes.js
+++ b/server/routes.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/rpc/index.js b/server/rpc/index.js
index ee19d2e..69f13a9 100644
--- a/server/rpc/index.js
+++ b/server/rpc/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/channel.js b/server/services/agi/channel.js
index 141ff87..c9f7fd9 100644
--- a/server/services/agi/channel.js
+++ b/server/services/agi/channel.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/error.js b/server/services/agi/error.js
index 669ef30..ebfe68b 100644
--- a/server/services/agi/error.js
+++ b/server/services/agi/error.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/graph/index.js b/server/services/agi/graph/index.js
index 85172ab..9d20a89 100644
--- a/server/services/agi/graph/index.js
+++ b/server/services/agi/graph/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/index.js b/server/services/agi/index.js
index 056815d..41560f7 100644
--- a/server/services/agi/index.js
+++ b/server/services/agi/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/mailRpc/index.js b/server/services/agi/mailRpc/index.js
index e2faaae..a0f524f 100644
--- a/server/services/agi/mailRpc/index.js
+++ b/server/services/agi/mailRpc/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/reply.js b/server/services/agi/reply.js
index e4f9398..4580d24 100644
--- a/server/services/agi/reply.js
+++ b/server/services/agi/reply.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/rpc/index.js b/server/services/agi/rpc/index.js
index 14d88df..2f89240 100644
--- a/server/services/agi/rpc/index.js
+++ b/server/services/agi/rpc/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/scripts/aws/index.js b/server/services/agi/scripts/aws/index.js
index 4422ff6..106a879 100644
--- a/server/services/agi/scripts/aws/index.js
+++ b/server/services/agi/scripts/aws/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x579c=['./lex','exports','./polly'];(function(_0x10b317,_0x2adf32){var _0x1e3054=function(_0x38ed3e){while(--_0x38ed3e){_0x10b317['push'](_0x10b317['shift']());}};_0x1e3054(++_0x2adf32);}(_0x579c,0xda));var _0xc579=function(_0x53e51e,_0x416eaa){_0x53e51e=_0x53e51e-0x0;var _0x48c2fb=_0x579c[_0x53e51e];return _0x48c2fb;};var polly=require(_0xc579('0x0'));var lex=require(_0xc579('0x1'));module[_0xc579('0x2')]={'polly':polly,'lex':lex};
\ No newline at end of file
+var _0x0bde=['./lex'];(function(_0x43e772,_0x4832d3){var _0x109875=function(_0x2bb528){while(--_0x2bb528){_0x43e772['push'](_0x43e772['shift']());}};_0x109875(++_0x4832d3);}(_0x0bde,0xe7));var _0xe0bd=function(_0x2641f9,_0x26715f){_0x2641f9=_0x2641f9-0x0;var _0x585741=_0x0bde[_0x2641f9];return _0x585741;};var polly=require('./polly');var lex=require(_0xe0bd('0x0'));module['exports']={'polly':polly,'lex':lex};
\ No newline at end of file
diff --git a/server/services/agi/scripts/aws/lex/index.js b/server/services/agi/scripts/aws/lex/index.js
index 56bc28d..baa4c08 100644
--- a/server/services/agi/scripts/aws/lex/index.js
+++ b/server/services/agi/scripts/aws/lex/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/scripts/aws/lex/lib/api.js b/server/services/agi/scripts/aws/lex/lib/api.js
index 9f45291..ac0cb54 100644
--- a/server/services/agi/scripts/aws/lex/lib/api.js
+++ b/server/services/agi/scripts/aws/lex/lib/api.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/scripts/aws/polly/index.js b/server/services/agi/scripts/aws/polly/index.js
index 6653aa4..d9a1960 100644
--- a/server/services/agi/scripts/aws/polly/index.js
+++ b/server/services/agi/scripts/aws/polly/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/scripts/aws/polly/lib/api.js b/server/services/agi/scripts/aws/polly/lib/api.js
index 09e2299..8adf4f6 100644
--- a/server/services/agi/scripts/aws/polly/lib/api.js
+++ b/server/services/agi/scripts/aws/polly/lib/api.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/scripts/google/asr/index.js b/server/services/agi/scripts/google/asr/index.js
index a18bf7d..4a463f0 100644
--- a/server/services/agi/scripts/google/asr/index.js
+++ b/server/services/agi/scripts/google/asr/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x52e7=['exports','./lib/api'];(function(_0x126558,_0x143c9a){var _0x1f6d14=function(_0x2b0eea){while(--_0x2b0eea){_0x126558['push'](_0x126558['shift']());}};_0x1f6d14(++_0x143c9a);}(_0x52e7,0xc7));var _0x752e=function(_0x480fc2,_0x482fba){_0x480fc2=_0x480fc2-0x0;var _0x540a95=_0x52e7[_0x480fc2];return _0x540a95;};'use strict';var asr=require(_0x752e('0x0'));module[_0x752e('0x1')]=function(_0xe6c91a,_0x49ce28,_0x478e8c,_0xbcc952){return asr(_0xe6c91a,_0x49ce28,_0x478e8c);};
\ No newline at end of file
+var _0xcbe6=['exports','./lib/api'];(function(_0x20fee2,_0x24eba7){var _0x25da52=function(_0x3ecd9b){while(--_0x3ecd9b){_0x20fee2['push'](_0x20fee2['shift']());}};_0x25da52(++_0x24eba7);}(_0xcbe6,0x73));var _0x6cbe=function(_0x2ae286,_0x2b93a8){_0x2ae286=_0x2ae286-0x0;var _0x31b8e8=_0xcbe6[_0x2ae286];return _0x31b8e8;};'use strict';var asr=require(_0x6cbe('0x0'));module[_0x6cbe('0x1')]=function(_0x1398fb,_0x21c1eb,_0x5d88b3,_0x1140d5){return asr(_0x1398fb,_0x21c1eb,_0x5d88b3);};
\ No newline at end of file
diff --git a/server/services/agi/scripts/google/asr/lib/api.js b/server/services/agi/scripts/google/asr/lib/api.js
index 0936dcd..35160fc 100644
--- a/server/services/agi/scripts/google/asr/lib/api.js
+++ b/server/services/agi/scripts/google/asr/lib/api.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/scripts/google/index.js b/server/services/agi/scripts/google/index.js
index e942d12..b4bfd9b 100644
--- a/server/services/agi/scripts/google/index.js
+++ b/server/services/agi/scripts/google/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x5f60=['exports'];(function(_0x546af9,_0x5b49cf){var _0xfdcffa=function(_0x40d3f8){while(--_0x40d3f8){_0x546af9['push'](_0x546af9['shift']());}};_0xfdcffa(++_0x5b49cf);}(_0x5f60,0x134));var _0x05f6=function(_0x41a073,_0x3ea9e2){_0x41a073=_0x41a073-0x0;var _0x4b2c53=_0x5f60[_0x41a073];return _0x4b2c53;};var asr=require('./asr');module[_0x05f6('0x0')]={'asr':asr};
\ No newline at end of file
+var _0xf347=['exports','./asr'];(function(_0xb7874d,_0x15fa9c){var _0x9367f=function(_0x33b3ea){while(--_0x33b3ea){_0xb7874d['push'](_0xb7874d['shift']());}};_0x9367f(++_0x15fa9c);}(_0xf347,0xa1));var _0x7f34=function(_0x185a2f,_0x38d079){_0x185a2f=_0x185a2f-0x0;var _0x18602e=_0xf347[_0x185a2f];return _0x18602e;};var asr=require(_0x7f34('0x0'));module[_0x7f34('0x1')]={'asr':asr};
\ No newline at end of file
diff --git a/server/services/agi/scripts/index.js b/server/services/agi/scripts/index.js
index e2257e1..8627f35 100644
--- a/server/services/agi/scripts/index.js
+++ b/server/services/agi/scripts/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/scripts/sestek/index.js b/server/services/agi/scripts/sestek/index.js
index e721094..8f34e03 100644
--- a/server/services/agi/scripts/sestek/index.js
+++ b/server/services/agi/scripts/sestek/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x5913=['./nda'];(function(_0x1a9e30,_0x4c390f){var _0x47344f=function(_0x5224dd){while(--_0x5224dd){_0x1a9e30['push'](_0x1a9e30['shift']());}};_0x47344f(++_0x4c390f);}(_0x5913,0xea));var _0x3591=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x5913[_0x3dd15e];return _0x231fd0;};var nda=require(_0x3591('0x0'));module['exports']={'nda':nda};
\ No newline at end of file
+var nda=require('./nda');module['exports']={'nda':nda};
\ No newline at end of file
diff --git a/server/services/agi/scripts/sestek/nda/index.js b/server/services/agi/scripts/sestek/nda/index.js
index 70c67a1..89fc1c2 100644
--- a/server/services/agi/scripts/sestek/nda/index.js
+++ b/server/services/agi/scripts/sestek/nda/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/scripts/tilde/asr/index.js b/server/services/agi/scripts/tilde/asr/index.js
index 620a406..02d5eac 100644
--- a/server/services/agi/scripts/tilde/asr/index.js
+++ b/server/services/agi/scripts/tilde/asr/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x6a42=['exports','./lib/api'];(function(_0x263965,_0x5e0cb8){var _0x41f0fe=function(_0x33acad){while(--_0x33acad){_0x263965['push'](_0x263965['shift']());}};_0x41f0fe(++_0x5e0cb8);}(_0x6a42,0x175));var _0x26a4=function(_0x93a74a,_0x27916c){_0x93a74a=_0x93a74a-0x0;var _0x1b557b=_0x6a42[_0x93a74a];return _0x1b557b;};'use strict';var asr=require(_0x26a4('0x0'));module[_0x26a4('0x1')]=function(_0x5cfead,_0x44edf9,_0x55569e,_0x22a9e0){return asr(_0x5cfead,_0x44edf9,_0x55569e,_0x22a9e0);};
\ No newline at end of file
+var _0x64e9=['exports','./lib/api'];(function(_0x50c819,_0x2027bc){var _0x567e31=function(_0xdea71c){while(--_0xdea71c){_0x50c819['push'](_0x50c819['shift']());}};_0x567e31(++_0x2027bc);}(_0x64e9,0x161));var _0x964e=function(_0x42c93e,_0x17b116){_0x42c93e=_0x42c93e-0x0;var _0x39b6b3=_0x64e9[_0x42c93e];return _0x39b6b3;};'use strict';var asr=require(_0x964e('0x0'));module[_0x964e('0x1')]=function(_0xe127bd,_0x3f39dd,_0x39d5c5,_0x5aeaf1){return asr(_0xe127bd,_0x3f39dd,_0x39d5c5,_0x5aeaf1);};
\ No newline at end of file
diff --git a/server/services/agi/scripts/tilde/asr/lib/api.js b/server/services/agi/scripts/tilde/asr/lib/api.js
index e999951..8d46171 100644
--- a/server/services/agi/scripts/tilde/asr/lib/api.js
+++ b/server/services/agi/scripts/tilde/asr/lib/api.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/scripts/tilde/index.js b/server/services/agi/scripts/tilde/index.js
index 0c771f9..a41b545 100644
--- a/server/services/agi/scripts/tilde/index.js
+++ b/server/services/agi/scripts/tilde/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0x2752=['exports','./asr'];(function(_0x9c6e38,_0x1fc24e){var _0x148e08=function(_0x415b66){while(--_0x415b66){_0x9c6e38['push'](_0x9c6e38['shift']());}};_0x148e08(++_0x1fc24e);}(_0x2752,0x199));var _0x2275=function(_0x3dd15e,_0x1f0015){_0x3dd15e=_0x3dd15e-0x0;var _0x231fd0=_0x2752[_0x3dd15e];return _0x231fd0;};var asr=require(_0x2275('0x0'));module[_0x2275('0x1')]={'asr':asr};
\ No newline at end of file
+var _0x3b68=['./asr'];(function(_0x2aae91,_0x1ac716){var _0x541127=function(_0x324656){while(--_0x324656){_0x2aae91['push'](_0x2aae91['shift']());}};_0x541127(++_0x1ac716);}(_0x3b68,0xd6));var _0x83b6=function(_0x116bdc,_0x384b87){_0x116bdc=_0x116bdc-0x0;var _0x21f218=_0x3b68[_0x116bdc];return _0x21f218;};var asr=require(_0x83b6('0x0'));module['exports']={'asr':asr};
\ No newline at end of file
diff --git a/server/services/agi/server.js b/server/services/agi/server.js
index 905f040..245f4e4 100644
--- a/server/services/agi/server.js
+++ b/server/services/agi/server.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/agi/vertices.js b/server/services/agi/vertices.js
index c73d603..f3e8a62 100644
--- a/server/services/agi/vertices.js
+++ b/server/services/agi/vertices.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/acw/index.js b/server/services/ami/acw/index.js
index ce2cb61..11e704c 100644
--- a/server/services/ami/acw/index.js
+++ b/server/services/ami/acw/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/ami.js b/server/services/ami/ami.js
index b137621..0fc9d1f 100644
--- a/server/services/ami/ami.js
+++ b/server/services/ami/ami.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/client.js b/server/services/ami/client.js
index 6d42d40..1f4526f 100644
--- a/server/services/ami/client.js
+++ b/server/services/ami/client.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/dialer/action.js b/server/services/ami/dialer/action.js
index c305d15..7ed67ae 100644
--- a/server/services/ami/dialer/action.js
+++ b/server/services/ami/dialer/action.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/dialer/agentComplete.js b/server/services/ami/dialer/agentComplete.js
index 7029f81..0f1a03f 100644
--- a/server/services/ami/dialer/agentComplete.js
+++ b/server/services/ami/dialer/agentComplete.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/dialer/final.js b/server/services/ami/dialer/final.js
index 0c6dc3a..d2a29ac 100644
--- a/server/services/ami/dialer/final.js
+++ b/server/services/ami/dialer/final.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/dialer/hangup.js b/server/services/ami/dialer/hangup.js
index 1fcf7c2..5bef000 100644
--- a/server/services/ami/dialer/hangup.js
+++ b/server/services/ami/dialer/hangup.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/dialer/history.js b/server/services/ami/dialer/history.js
index cc96c6c..93f6b8b 100644
--- a/server/services/ami/dialer/history.js
+++ b/server/services/ami/dialer/history.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/dialer/index.js b/server/services/ami/dialer/index.js
index c336826..1942612 100644
--- a/server/services/ami/dialer/index.js
+++ b/server/services/ami/dialer/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/dialer/queueCallerAbandon.js b/server/services/ami/dialer/queueCallerAbandon.js
index 5778818..2bc43d2 100644
--- a/server/services/ami/dialer/queueCallerAbandon.js
+++ b/server/services/ami/dialer/queueCallerAbandon.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/fax/action.js b/server/services/ami/fax/action.js
index 5a607d5..b106989 100644
--- a/server/services/ami/fax/action.js
+++ b/server/services/ami/fax/action.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/fax/index.js b/server/services/ami/fax/index.js
index ac1124b..db081f4 100644
--- a/server/services/ami/fax/index.js
+++ b/server/services/ami/fax/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/fax/rpcDb.js b/server/services/ami/fax/rpcDb.js
index 0885721..72d605f 100644
--- a/server/services/ami/fax/rpcDb.js
+++ b/server/services/ami/fax/rpcDb.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/fax/util/gs.js b/server/services/ami/fax/util/gs.js
index c12c654..e9941e3 100644
--- a/server/services/ami/fax/util/gs.js
+++ b/server/services/ami/fax/util/gs.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/fax/util/util.js b/server/services/ami/fax/util/util.js
index 11393c1..ba491c8 100644
--- a/server/services/ami/fax/util/util.js
+++ b/server/services/ami/fax/util/util.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/index.js b/server/services/ami/index.js
index 6e2b810..48b4693 100644
--- a/server/services/ami/index.js
+++ b/server/services/ami/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/agent.js b/server/services/ami/model/agent.js
index 163ddf7..69fb08f 100644
--- a/server/services/ami/model/agent.js
+++ b/server/services/ami/model/agent.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/campaign.js b/server/services/ami/model/campaign.js
index 9d48205..356c94b 100644
--- a/server/services/ami/model/campaign.js
+++ b/server/services/ami/model/campaign.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/channel.js b/server/services/ami/model/channel.js
index 56daf1f..fbc8d7c 100644
--- a/server/services/ami/model/channel.js
+++ b/server/services/ami/model/channel.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/deskAccount.js b/server/services/ami/model/deskAccount.js
index 5a5c569..8476c25 100644
--- a/server/services/ami/model/deskAccount.js
+++ b/server/services/ami/model/deskAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/dynamics365Account.js b/server/services/ami/model/dynamics365Account.js
index fe4ec9f..5f8fe6f 100644
--- a/server/services/ami/model/dynamics365Account.js
+++ b/server/services/ami/model/dynamics365Account.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/faxAccount.js b/server/services/ami/model/faxAccount.js
index 0319a5a..fc99dee 100644
--- a/server/services/ami/model/faxAccount.js
+++ b/server/services/ami/model/faxAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/freshdeskAccount.js b/server/services/ami/model/freshdeskAccount.js
index 0e3e1b9..5fb5050 100644
--- a/server/services/ami/model/freshdeskAccount.js
+++ b/server/services/ami/model/freshdeskAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/freshsalesAccount.js b/server/services/ami/model/freshsalesAccount.js
index 0c68b68..83b2cff 100644
--- a/server/services/ami/model/freshsalesAccount.js
+++ b/server/services/ami/model/freshsalesAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/queueReport.js b/server/services/ami/model/queueReport.js
index 6339a88..19a23cf 100644
--- a/server/services/ami/model/queueReport.js
+++ b/server/services/ami/model/queueReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/salesforceAccount.js b/server/services/ami/model/salesforceAccount.js
index 63b3745..87905f7 100644
--- a/server/services/ami/model/salesforceAccount.js
+++ b/server/services/ami/model/salesforceAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/servicenowAccount.js b/server/services/ami/model/servicenowAccount.js
index 5db93e6..71c0408 100644
--- a/server/services/ami/model/servicenowAccount.js
+++ b/server/services/ami/model/servicenowAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/sugarcrmAccount.js b/server/services/ami/model/sugarcrmAccount.js
index 34d2dcf..95ca04f 100644
--- a/server/services/ami/model/sugarcrmAccount.js
+++ b/server/services/ami/model/sugarcrmAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/telephone.js b/server/services/ami/model/telephone.js
index 2a365e8..9f3b93b 100644
--- a/server/services/ami/model/telephone.js
+++ b/server/services/ami/model/telephone.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/template.js b/server/services/ami/model/template.js
index 3a1395d..29935de 100644
--- a/server/services/ami/model/template.js
+++ b/server/services/ami/model/template.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/trigger.js b/server/services/ami/model/trigger.js
index 0314fe8..2ab3432 100644
--- a/server/services/ami/model/trigger.js
+++ b/server/services/ami/model/trigger.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/trunk.js b/server/services/ami/model/trunk.js
index 224302c..6650efd 100644
--- a/server/services/ami/model/trunk.js
+++ b/server/services/ami/model/trunk.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/voiceExtension.js b/server/services/ami/model/voiceExtension.js
index 21f659e..dfad347 100644
--- a/server/services/ami/model/voiceExtension.js
+++ b/server/services/ami/model/voiceExtension.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/voiceQueue.js b/server/services/ami/model/voiceQueue.js
index b33da23..2273240 100644
--- a/server/services/ami/model/voiceQueue.js
+++ b/server/services/ami/model/voiceQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/vtigerAccount.js b/server/services/ami/model/vtigerAccount.js
index 0921e84..0c9c150 100644
--- a/server/services/ami/model/vtigerAccount.js
+++ b/server/services/ami/model/vtigerAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/zendeskAccount.js b/server/services/ami/model/zendeskAccount.js
index 6eaeda7..1ec1449 100644
--- a/server/services/ami/model/zendeskAccount.js
+++ b/server/services/ami/model/zendeskAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/model/zohoAccount.js b/server/services/ami/model/zohoAccount.js
index 949f9cf..3a20dee 100644
--- a/server/services/ami/model/zohoAccount.js
+++ b/server/services/ami/model/zohoAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/preview/action.js b/server/services/ami/preview/action.js
index 197f4ca..b523d02 100644
--- a/server/services/ami/preview/action.js
+++ b/server/services/ami/preview/action.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/preview/index.js b/server/services/ami/preview/index.js
index ae81cb9..cb50059 100644
--- a/server/services/ami/preview/index.js
+++ b/server/services/ami/preview/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/preview/rpcDb.js b/server/services/ami/preview/rpcDb.js
index 0ed097c..09911a0 100644
--- a/server/services/ami/preview/rpcDb.js
+++ b/server/services/ami/preview/rpcDb.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/preview/util/util.js b/server/services/ami/preview/util/util.js
index 75a0007..86793fe 100644
--- a/server/services/ami/preview/util/util.js
+++ b/server/services/ami/preview/util/util.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/properties.js b/server/services/ami/properties.js
index 635ce09..93f828f 100644
--- a/server/services/ami/properties.js
+++ b/server/services/ami/properties.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/realtime/index.js b/server/services/ami/realtime/index.js
index b4dc9ac..6dc19af 100644
--- a/server/services/ami/realtime/index.js
+++ b/server/services/ami/realtime/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/report/index.js b/server/services/ami/report/index.js
index 1366afc..16343cd 100644
--- a/server/services/ami/report/index.js
+++ b/server/services/ami/report/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/report/userReport.js b/server/services/ami/report/userReport.js
index 34c3852..b73278e 100644
--- a/server/services/ami/report/userReport.js
+++ b/server/services/ami/report/userReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/report/voiceAgentReport.js b/server/services/ami/report/voiceAgentReport.js
index abf3a5e..d6b73c5 100644
--- a/server/services/ami/report/voiceAgentReport.js
+++ b/server/services/ami/report/voiceAgentReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/report/voiceCallReport.js b/server/services/ami/report/voiceCallReport.js
index 134f21f..2a4d273 100644
--- a/server/services/ami/report/voiceCallReport.js
+++ b/server/services/ami/report/voiceCallReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/report/voiceDialReport.js b/server/services/ami/report/voiceDialReport.js
index cb24d7d..d14c1e4 100644
--- a/server/services/ami/report/voiceDialReport.js
+++ b/server/services/ami/report/voiceDialReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/report/voiceQueueReport.js b/server/services/ami/report/voiceQueueReport.js
index 68d0062..bd7129b 100644
--- a/server/services/ami/report/voiceQueueReport.js
+++ b/server/services/ami/report/voiceQueueReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/agentReportPreview.js b/server/services/ami/rpc/agentReportPreview.js
index bc59bff..0c4a8ca 100644
--- a/server/services/ami/rpc/agentReportPreview.js
+++ b/server/services/ami/rpc/agentReportPreview.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/attachment.js b/server/services/ami/rpc/attachment.js
index 4aeee95..414c053 100644
--- a/server/services/ami/rpc/attachment.js
+++ b/server/services/ami/rpc/attachment.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/campaign.js b/server/services/ami/rpc/campaign.js
index a003c27..c9b6ffc 100644
--- a/server/services/ami/rpc/campaign.js
+++ b/server/services/ami/rpc/campaign.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/cmContact.js b/server/services/ami/rpc/cmContact.js
index 88af3b0..40e4d39 100644
--- a/server/services/ami/rpc/cmContact.js
+++ b/server/services/ami/rpc/cmContact.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/cmHopper.js b/server/services/ami/rpc/cmHopper.js
index 7b35df5..d0c3871 100644
--- a/server/services/ami/rpc/cmHopper.js
+++ b/server/services/ami/rpc/cmHopper.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/cmHopperBlack.js b/server/services/ami/rpc/cmHopperBlack.js
index f24a515..7a093f4 100644
--- a/server/services/ami/rpc/cmHopperBlack.js
+++ b/server/services/ami/rpc/cmHopperBlack.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/cmHopperFinal.js b/server/services/ami/rpc/cmHopperFinal.js
index fe9afbe..8968a30 100644
--- a/server/services/ami/rpc/cmHopperFinal.js
+++ b/server/services/ami/rpc/cmHopperFinal.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/cmHopperHistory.js b/server/services/ami/rpc/cmHopperHistory.js
index ca95f8d..b1b7a6b 100644
--- a/server/services/ami/rpc/cmHopperHistory.js
+++ b/server/services/ami/rpc/cmHopperHistory.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/faxAccount.js b/server/services/ami/rpc/faxAccount.js
index 62a56a4..b3f0470 100644
--- a/server/services/ami/rpc/faxAccount.js
+++ b/server/services/ami/rpc/faxAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/faxMessage.js b/server/services/ami/rpc/faxMessage.js
index 5db6314..d039a68 100644
--- a/server/services/ami/rpc/faxMessage.js
+++ b/server/services/ami/rpc/faxMessage.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/integrations/desk.js b/server/services/ami/rpc/integrations/desk.js
index 31cb97c..b2a8622 100644
--- a/server/services/ami/rpc/integrations/desk.js
+++ b/server/services/ami/rpc/integrations/desk.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/integrations/dynamics365.js b/server/services/ami/rpc/integrations/dynamics365.js
index b48252f..ccb3c5b 100644
--- a/server/services/ami/rpc/integrations/dynamics365.js
+++ b/server/services/ami/rpc/integrations/dynamics365.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/integrations/freshdesk.js b/server/services/ami/rpc/integrations/freshdesk.js
index 2694c19..cd9f242 100644
--- a/server/services/ami/rpc/integrations/freshdesk.js
+++ b/server/services/ami/rpc/integrations/freshdesk.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/integrations/freshsales.js b/server/services/ami/rpc/integrations/freshsales.js
index ec801d8..3ccd249 100644
--- a/server/services/ami/rpc/integrations/freshsales.js
+++ b/server/services/ami/rpc/integrations/freshsales.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/integrations/salesforce.js b/server/services/ami/rpc/integrations/salesforce.js
index 7843b61..a325454 100644
--- a/server/services/ami/rpc/integrations/salesforce.js
+++ b/server/services/ami/rpc/integrations/salesforce.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/integrations/servicenow.js b/server/services/ami/rpc/integrations/servicenow.js
index 93a3cc9..9419f38 100644
--- a/server/services/ami/rpc/integrations/servicenow.js
+++ b/server/services/ami/rpc/integrations/servicenow.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/integrations/sugarcrm.js b/server/services/ami/rpc/integrations/sugarcrm.js
index 55f3505..1be5cdf 100644
--- a/server/services/ami/rpc/integrations/sugarcrm.js
+++ b/server/services/ami/rpc/integrations/sugarcrm.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/integrations/vtiger.js b/server/services/ami/rpc/integrations/vtiger.js
index 3539e46..65e2079 100644
--- a/server/services/ami/rpc/integrations/vtiger.js
+++ b/server/services/ami/rpc/integrations/vtiger.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/integrations/zendesk.js b/server/services/ami/rpc/integrations/zendesk.js
index 347f366..c79cc99 100644
--- a/server/services/ami/rpc/integrations/zendesk.js
+++ b/server/services/ami/rpc/integrations/zendesk.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/integrations/zoho.js b/server/services/ami/rpc/integrations/zoho.js
index 1890213..c57a46e 100644
--- a/server/services/ami/rpc/integrations/zoho.js
+++ b/server/services/ami/rpc/integrations/zoho.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/memberReport.js b/server/services/ami/rpc/memberReport.js
index 0b0fdcb..831c49c 100644
--- a/server/services/ami/rpc/memberReport.js
+++ b/server/services/ami/rpc/memberReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/template.js b/server/services/ami/rpc/template.js
index e6c088c..b2fa830 100644
--- a/server/services/ami/rpc/template.js
+++ b/server/services/ami/rpc/template.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/trigger.js b/server/services/ami/rpc/trigger.js
index c66e10e..80023a8 100644
--- a/server/services/ami/rpc/trigger.js
+++ b/server/services/ami/rpc/trigger.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/trunk.js b/server/services/ami/rpc/trunk.js
index b6fdfd8..6a019d7 100644
--- a/server/services/ami/rpc/trunk.js
+++ b/server/services/ami/rpc/trunk.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/user.js b/server/services/ami/rpc/user.js
index a691ff1..5d96da7 100644
--- a/server/services/ami/rpc/user.js
+++ b/server/services/ami/rpc/user.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/voiceAgentReport.js b/server/services/ami/rpc/voiceAgentReport.js
index 9ea31d3..3766e46 100644
--- a/server/services/ami/rpc/voiceAgentReport.js
+++ b/server/services/ami/rpc/voiceAgentReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/voiceCallReport.js b/server/services/ami/rpc/voiceCallReport.js
index 073e253..523a4e5 100644
--- a/server/services/ami/rpc/voiceCallReport.js
+++ b/server/services/ami/rpc/voiceCallReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/voiceDialReport.js b/server/services/ami/rpc/voiceDialReport.js
index 4b080e1..3c4579c 100644
--- a/server/services/ami/rpc/voiceDialReport.js
+++ b/server/services/ami/rpc/voiceDialReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/voiceExtension.js b/server/services/ami/rpc/voiceExtension.js
index 4ce206f..f51f5c2 100644
--- a/server/services/ami/rpc/voiceExtension.js
+++ b/server/services/ami/rpc/voiceExtension.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/voiceQueue.js b/server/services/ami/rpc/voiceQueue.js
index fe2e147..0887fe2 100644
--- a/server/services/ami/rpc/voiceQueue.js
+++ b/server/services/ami/rpc/voiceQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/voiceQueueReport.js b/server/services/ami/rpc/voiceQueueReport.js
index 62f37ae..100ffd6 100644
--- a/server/services/ami/rpc/voiceQueueReport.js
+++ b/server/services/ami/rpc/voiceQueueReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/voiceQueueRt.js b/server/services/ami/rpc/voiceQueueRt.js
index 9db296e..de64526 100644
--- a/server/services/ami/rpc/voiceQueueRt.js
+++ b/server/services/ami/rpc/voiceQueueRt.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/voiceRecording.js b/server/services/ami/rpc/voiceRecording.js
index 5fc3ebc..d298985 100644
--- a/server/services/ami/rpc/voiceRecording.js
+++ b/server/services/ami/rpc/voiceRecording.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/rpc/voiceTransferReport.js b/server/services/ami/rpc/voiceTransferReport.js
index f207e06..c5d5c63 100644
--- a/server/services/ami/rpc/voiceTransferReport.js
+++ b/server/services/ami/rpc/voiceTransferReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/server/index.js b/server/services/ami/server/index.js
index 85ccf32..4c1b0ab 100644
--- a/server/services/ami/server/index.js
+++ b/server/services/ami/server/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/cmContact/index.js b/server/services/ami/trigger/cmContact/index.js
index 4f73604..4bdde95 100644
--- a/server/services/ami/trigger/cmContact/index.js
+++ b/server/services/ami/trigger/cmContact/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/index.js b/server/services/ami/trigger/index.js
index b42a2c4..ebb2ce3 100644
--- a/server/services/ami/trigger/index.js
+++ b/server/services/ami/trigger/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/desk.js b/server/services/ami/trigger/integration/desk.js
index 039bfbd..6df0e09 100644
--- a/server/services/ami/trigger/integration/desk.js
+++ b/server/services/ami/trigger/integration/desk.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/dynamics365.js b/server/services/ami/trigger/integration/dynamics365.js
index 5058f81..9199856 100644
--- a/server/services/ami/trigger/integration/dynamics365.js
+++ b/server/services/ami/trigger/integration/dynamics365.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/freshdesk.js b/server/services/ami/trigger/integration/freshdesk.js
index 22c02cf..1ab4971 100644
--- a/server/services/ami/trigger/integration/freshdesk.js
+++ b/server/services/ami/trigger/integration/freshdesk.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/freshsales.js b/server/services/ami/trigger/integration/freshsales.js
index 51392f6..1658ec9 100644
--- a/server/services/ami/trigger/integration/freshsales.js
+++ b/server/services/ami/trigger/integration/freshsales.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/index.js b/server/services/ami/trigger/integration/index.js
index 33699f1..2963c26 100644
--- a/server/services/ami/trigger/integration/index.js
+++ b/server/services/ami/trigger/integration/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/salesforce.js b/server/services/ami/trigger/integration/salesforce.js
index bcbdb1e..be598d6 100644
--- a/server/services/ami/trigger/integration/salesforce.js
+++ b/server/services/ami/trigger/integration/salesforce.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/servicenow.js b/server/services/ami/trigger/integration/servicenow.js
index b7c70dd..4e49c94 100644
--- a/server/services/ami/trigger/integration/servicenow.js
+++ b/server/services/ami/trigger/integration/servicenow.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/sugarcrm.js b/server/services/ami/trigger/integration/sugarcrm.js
index 65cac1f..3a34e36 100644
--- a/server/services/ami/trigger/integration/sugarcrm.js
+++ b/server/services/ami/trigger/integration/sugarcrm.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/util.js b/server/services/ami/trigger/integration/util.js
index c923cd5..7960f27 100644
--- a/server/services/ami/trigger/integration/util.js
+++ b/server/services/ami/trigger/integration/util.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/vtiger.js b/server/services/ami/trigger/integration/vtiger.js
index 6163fd8..c8c86b4 100644
--- a/server/services/ami/trigger/integration/vtiger.js
+++ b/server/services/ami/trigger/integration/vtiger.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/zendesk.js b/server/services/ami/trigger/integration/zendesk.js
index 7b86f41..b741c07 100644
--- a/server/services/ami/trigger/integration/zendesk.js
+++ b/server/services/ami/trigger/integration/zendesk.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/integration/zoho.js b/server/services/ami/trigger/integration/zoho.js
index 01a2ca2..7b185d9 100644
--- a/server/services/ami/trigger/integration/zoho.js
+++ b/server/services/ami/trigger/integration/zoho.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/script/index.js b/server/services/ami/trigger/script/index.js
index 3acc577..81178bc 100644
--- a/server/services/ami/trigger/script/index.js
+++ b/server/services/ami/trigger/script/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/ami/trigger/urlforward/index.js b/server/services/ami/trigger/urlforward/index.js
index 616120e..2897e30 100644
--- a/server/services/ami/trigger/urlforward/index.js
+++ b/server/services/ami/trigger/urlforward/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/email/client.js b/server/services/email/client.js
index 6f98089..7047f76 100644
--- a/server/services/email/client.js
+++ b/server/services/email/client.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/email/index.js b/server/services/email/index.js
index 0cdb29c..168e1d6 100644
--- a/server/services/email/index.js
+++ b/server/services/email/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/email/lib/email.js b/server/services/email/lib/email.js
index 5b087f5..88ae4da 100644
--- a/server/services/email/lib/email.js
+++ b/server/services/email/lib/email.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/email/lib/imap.js b/server/services/email/lib/imap.js
index 4301beb..9c67e02 100644
--- a/server/services/email/lib/imap.js
+++ b/server/services/email/lib/imap.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/email/lib/smtp.js b/server/services/email/lib/smtp.js
index b2c324d..42f8260 100644
--- a/server/services/email/lib/smtp.js
+++ b/server/services/email/lib/smtp.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/email/lib/utils.js b/server/services/email/lib/utils.js
index 1562542..27861ca 100644
--- a/server/services/email/lib/utils.js
+++ b/server/services/email/lib/utils.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/email/model/mailAccount.js b/server/services/email/model/mailAccount.js
index e6952b0..02e5364 100644
--- a/server/services/email/model/mailAccount.js
+++ b/server/services/email/model/mailAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/email/realtime/index.js b/server/services/email/realtime/index.js
index 3d9a3d6..cc3fc63 100644
--- a/server/services/email/realtime/index.js
+++ b/server/services/email/realtime/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/email/rpc/mailAccount.js b/server/services/email/rpc/mailAccount.js
index 4203240..0f67b16 100644
--- a/server/services/email/rpc/mailAccount.js
+++ b/server/services/email/rpc/mailAccount.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/email/server/index.js b/server/services/email/server/index.js
index 364a15c..a6aa47d 100644
--- a/server/services/email/server/index.js
+++ b/server/services/email/server/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/express/index.js b/server/services/express/index.js
index 6c09b93..da40b4e 100644
--- a/server/services/express/index.js
+++ b/server/services/express/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/client.js b/server/services/routing/client.js
index c3ccd18..364c674 100644
--- a/server/services/routing/client.js
+++ b/server/services/routing/client.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/index.js b/server/services/routing/index.js
index 2d5248d..82ca091 100644
--- a/server/services/routing/index.js
+++ b/server/services/routing/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/lib/rule-engine.js b/server/services/routing/lib/rule-engine.js
index 0d922b2..541433d 100644
--- a/server/services/routing/lib/rule-engine.js
+++ b/server/services/routing/lib/rule-engine.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/mailRpc/index.js b/server/services/routing/mailRpc/index.js
index 2e4a1aa..b14fc3a 100644
--- a/server/services/routing/mailRpc/index.js
+++ b/server/services/routing/mailRpc/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/model/agent.js b/server/services/routing/model/agent.js
index 63b1338..908770a 100644
--- a/server/services/routing/model/agent.js
+++ b/server/services/routing/model/agent.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/model/chatQueue.js b/server/services/routing/model/chatQueue.js
index 4fc3def..1320c43 100644
--- a/server/services/routing/model/chatQueue.js
+++ b/server/services/routing/model/chatQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/model/faxQueue.js b/server/services/routing/model/faxQueue.js
index f6bf289..28320fb 100644
--- a/server/services/routing/model/faxQueue.js
+++ b/server/services/routing/model/faxQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/model/interval.js b/server/services/routing/model/interval.js
index 31cec6e..df05cba 100644
--- a/server/services/routing/model/interval.js
+++ b/server/services/routing/model/interval.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/model/mailQueue.js b/server/services/routing/model/mailQueue.js
index 7ee731b..14bce35 100644
--- a/server/services/routing/model/mailQueue.js
+++ b/server/services/routing/model/mailQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/model/openchannelQueue.js b/server/services/routing/model/openchannelQueue.js
index 664e614..0a41c8b 100644
--- a/server/services/routing/model/openchannelQueue.js
+++ b/server/services/routing/model/openchannelQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/model/smsQueue.js b/server/services/routing/model/smsQueue.js
index f689d8d..f7f7e21 100644
--- a/server/services/routing/model/smsQueue.js
+++ b/server/services/routing/model/smsQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/model/whatsappQueue.js b/server/services/routing/model/whatsappQueue.js
index 8afe329..8d14e57 100644
--- a/server/services/routing/model/whatsappQueue.js
+++ b/server/services/routing/model/whatsappQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/realtime/index.js b/server/services/routing/realtime/index.js
index 38ae0fa..adb1fd4 100644
--- a/server/services/routing/realtime/index.js
+++ b/server/services/routing/realtime/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/chatInteraction.js b/server/services/routing/rpc/chatInteraction.js
index d3af7df..ea1e8e9 100644
--- a/server/services/routing/rpc/chatInteraction.js
+++ b/server/services/routing/rpc/chatInteraction.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/chatMessage.js b/server/services/routing/rpc/chatMessage.js
index de71295..c9b2763 100644
--- a/server/services/routing/rpc/chatMessage.js
+++ b/server/services/routing/rpc/chatMessage.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/chatQueue.js b/server/services/routing/rpc/chatQueue.js
index 98cac4c..8a4e545 100644
--- a/server/services/routing/rpc/chatQueue.js
+++ b/server/services/routing/rpc/chatQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/chatQueueReport.js b/server/services/routing/rpc/chatQueueReport.js
index af091e1..6c71bf8 100644
--- a/server/services/routing/rpc/chatQueueReport.js
+++ b/server/services/routing/rpc/chatQueueReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/faxInteraction.js b/server/services/routing/rpc/faxInteraction.js
index 434e20e..04a36f5 100644
--- a/server/services/routing/rpc/faxInteraction.js
+++ b/server/services/routing/rpc/faxInteraction.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/faxMessage.js b/server/services/routing/rpc/faxMessage.js
index 3ec05a9..a9412c7 100644
--- a/server/services/routing/rpc/faxMessage.js
+++ b/server/services/routing/rpc/faxMessage.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/faxQueue.js b/server/services/routing/rpc/faxQueue.js
index d247f15..13cd899 100644
--- a/server/services/routing/rpc/faxQueue.js
+++ b/server/services/routing/rpc/faxQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/faxQueueReport.js b/server/services/routing/rpc/faxQueueReport.js
index 3bab331..d23eac8 100644
--- a/server/services/routing/rpc/faxQueueReport.js
+++ b/server/services/routing/rpc/faxQueueReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/interval.js b/server/services/routing/rpc/interval.js
index 4c8d25d..27e3520 100644
--- a/server/services/routing/rpc/interval.js
+++ b/server/services/routing/rpc/interval.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/mailInteraction.js b/server/services/routing/rpc/mailInteraction.js
index 9d5ea90..7e7c5a9 100644
--- a/server/services/routing/rpc/mailInteraction.js
+++ b/server/services/routing/rpc/mailInteraction.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/mailMessage.js b/server/services/routing/rpc/mailMessage.js
index 074f560..e409ff4 100644
--- a/server/services/routing/rpc/mailMessage.js
+++ b/server/services/routing/rpc/mailMessage.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/mailQueue.js b/server/services/routing/rpc/mailQueue.js
index da7918f..b270235 100644
--- a/server/services/routing/rpc/mailQueue.js
+++ b/server/services/routing/rpc/mailQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/mailQueueReport.js b/server/services/routing/rpc/mailQueueReport.js
index 08ed76a..d78b502 100644
--- a/server/services/routing/rpc/mailQueueReport.js
+++ b/server/services/routing/rpc/mailQueueReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/openchannelInteraction.js b/server/services/routing/rpc/openchannelInteraction.js
index c1f7d8a..aed0ece 100644
--- a/server/services/routing/rpc/openchannelInteraction.js
+++ b/server/services/routing/rpc/openchannelInteraction.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/openchannelMessage.js b/server/services/routing/rpc/openchannelMessage.js
index 8fec37f..1ac7827 100644
--- a/server/services/routing/rpc/openchannelMessage.js
+++ b/server/services/routing/rpc/openchannelMessage.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/openchannelQueue.js b/server/services/routing/rpc/openchannelQueue.js
index 9ce407a..74a1092 100644
--- a/server/services/routing/rpc/openchannelQueue.js
+++ b/server/services/routing/rpc/openchannelQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/openchannelQueueReport.js b/server/services/routing/rpc/openchannelQueueReport.js
index deedac6..af69f31 100644
--- a/server/services/routing/rpc/openchannelQueueReport.js
+++ b/server/services/routing/rpc/openchannelQueueReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/smsInteraction.js b/server/services/routing/rpc/smsInteraction.js
index 204bc16..01f67d8 100644
--- a/server/services/routing/rpc/smsInteraction.js
+++ b/server/services/routing/rpc/smsInteraction.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/smsMessage.js b/server/services/routing/rpc/smsMessage.js
index 2f91b6e..7e31ab7 100644
--- a/server/services/routing/rpc/smsMessage.js
+++ b/server/services/routing/rpc/smsMessage.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/smsQueue.js b/server/services/routing/rpc/smsQueue.js
index b357c6d..d238cbb 100644
--- a/server/services/routing/rpc/smsQueue.js
+++ b/server/services/routing/rpc/smsQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/smsQueueReport.js b/server/services/routing/rpc/smsQueueReport.js
index d5f3857..2b00d1e 100644
--- a/server/services/routing/rpc/smsQueueReport.js
+++ b/server/services/routing/rpc/smsQueueReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/user.js b/server/services/routing/rpc/user.js
index 656e068..00ed4c3 100644
--- a/server/services/routing/rpc/user.js
+++ b/server/services/routing/rpc/user.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/whatsappInteraction.js b/server/services/routing/rpc/whatsappInteraction.js
index 183db25..724b995 100644
--- a/server/services/routing/rpc/whatsappInteraction.js
+++ b/server/services/routing/rpc/whatsappInteraction.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/whatsappMessage.js b/server/services/routing/rpc/whatsappMessage.js
index e18fb12..4858881 100644
--- a/server/services/routing/rpc/whatsappMessage.js
+++ b/server/services/routing/rpc/whatsappMessage.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/whatsappQueue.js b/server/services/routing/rpc/whatsappQueue.js
index 1ba74b8..9ae6de2 100644
--- a/server/services/routing/rpc/whatsappQueue.js
+++ b/server/services/routing/rpc/whatsappQueue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/rpc/whatsappQueueReport.js b/server/services/routing/rpc/whatsappQueueReport.js
index 136d469..79edff1 100644
--- a/server/services/routing/rpc/whatsappQueueReport.js
+++ b/server/services/routing/rpc/whatsappQueueReport.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/agent.js b/server/services/routing/server/applications/agent.js
index e814a84..ffe5546 100644
--- a/server/services/routing/server/applications/agent.js
+++ b/server/services/routing/server/applications/agent.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/amazonlex.js b/server/services/routing/server/applications/amazonlex.js
index c88c8ea..e55d621 100644
--- a/server/services/routing/server/applications/amazonlex.js
+++ b/server/services/routing/server/applications/amazonlex.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/autoreply.js b/server/services/routing/server/applications/autoreply.js
index 79d6acf..485e1c9 100644
--- a/server/services/routing/server/applications/autoreply.js
+++ b/server/services/routing/server/applications/autoreply.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/close.js b/server/services/routing/server/applications/close.js
index 07794b2..530c180 100644
--- a/server/services/routing/server/applications/close.js
+++ b/server/services/routing/server/applications/close.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/dialogflow.js b/server/services/routing/server/applications/dialogflow.js
index cecee04..6131818 100644
--- a/server/services/routing/server/applications/dialogflow.js
+++ b/server/services/routing/server/applications/dialogflow.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/gotoif.js b/server/services/routing/server/applications/gotoif.js
index a0e1850..b34db88 100644
--- a/server/services/routing/server/applications/gotoif.js
+++ b/server/services/routing/server/applications/gotoif.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/gotop.js b/server/services/routing/server/applications/gotop.js
index 967b38b..d3a832e 100644
--- a/server/services/routing/server/applications/gotop.js
+++ b/server/services/routing/server/applications/gotop.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/message.js b/server/services/routing/server/applications/message.js
index de542ec..c6ead68 100644
--- a/server/services/routing/server/applications/message.js
+++ b/server/services/routing/server/applications/message.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/noop.js b/server/services/routing/server/applications/noop.js
index cd1426c..076ae12 100644
--- a/server/services/routing/server/applications/noop.js
+++ b/server/services/routing/server/applications/noop.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/queue.js b/server/services/routing/server/applications/queue.js
index dc179bb..cb5f6a8 100644
--- a/server/services/routing/server/applications/queue.js
+++ b/server/services/routing/server/applications/queue.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/strategy/agent.js b/server/services/routing/server/applications/strategy/agent.js
index 6fba113..6fa808b 100644
--- a/server/services/routing/server/applications/strategy/agent.js
+++ b/server/services/routing/server/applications/strategy/agent.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/strategy/beepall.js b/server/services/routing/server/applications/strategy/beepall.js
index 8503d0d..2edbdc9 100644
--- a/server/services/routing/server/applications/strategy/beepall.js
+++ b/server/services/routing/server/applications/strategy/beepall.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/strategy/index.js b/server/services/routing/server/applications/strategy/index.js
index cfe104a..134169a 100644
--- a/server/services/routing/server/applications/strategy/index.js
+++ b/server/services/routing/server/applications/strategy/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
-var _0xdbb1=['exports'];(function(_0x3a96ca,_0x599d1b){var _0x52f475=function(_0xcbd9f9){while(--_0xcbd9f9){_0x3a96ca['push'](_0x3a96ca['shift']());}};_0x52f475(++_0x599d1b);}(_0xdbb1,0x105));var _0x1dbb=function(_0x3511d3,_0x4107ae){_0x3511d3=_0x3511d3-0x0;var _0x5d6321=_0xdbb1[_0x3511d3];return _0x5d6321;};'use strict';module[_0x1dbb('0x0')]={'rrmemory':require('./rrmemory'),'beepall':require('./beepall'),'agent':require('./agent')};
\ No newline at end of file
+var _0xeda8=['./rrmemory','./agent','exports'];(function(_0x3a93c8,_0x317276){var _0x194bb6=function(_0x28e4a3){while(--_0x28e4a3){_0x3a93c8['push'](_0x3a93c8['shift']());}};_0x194bb6(++_0x317276);}(_0xeda8,0x104));var _0x8eda=function(_0x2ebac0,_0x431c32){_0x2ebac0=_0x2ebac0-0x0;var _0x1319ac=_0xeda8[_0x2ebac0];return _0x1319ac;};'use strict';module[_0x8eda('0x0')]={'rrmemory':require(_0x8eda('0x1')),'beepall':require('./beepall'),'agent':require(_0x8eda('0x2'))};
\ No newline at end of file
diff --git a/server/services/routing/server/applications/strategy/rrmemory.js b/server/services/routing/server/applications/strategy/rrmemory.js
index 6a532a5..44ba178 100644
--- a/server/services/routing/server/applications/strategy/rrmemory.js
+++ b/server/services/routing/server/applications/strategy/rrmemory.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/strategy/util.js b/server/services/routing/server/applications/strategy/util.js
index 10d8ce2..f455e4f 100644
--- a/server/services/routing/server/applications/strategy/util.js
+++ b/server/services/routing/server/applications/strategy/util.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/system.js b/server/services/routing/server/applications/system.js
index f6528f8..bce38b5 100644
--- a/server/services/routing/server/applications/system.js
+++ b/server/services/routing/server/applications/system.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/tag.js b/server/services/routing/server/applications/tag.js
index 3373991..9e76276 100644
--- a/server/services/routing/server/applications/tag.js
+++ b/server/services/routing/server/applications/tag.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/applications/utils.js b/server/services/routing/server/applications/utils.js
index 3bfbc22..3d5f4b2 100644
--- a/server/services/routing/server/applications/utils.js
+++ b/server/services/routing/server/applications/utils.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/index.js b/server/services/routing/server/index.js
index ebb1e0d..5926778 100644
--- a/server/services/routing/server/index.js
+++ b/server/services/routing/server/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/routing/server/interval.js b/server/services/routing/server/interval.js
index cd75bbe..38497e2 100644
--- a/server/services/routing/server/interval.js
+++ b/server/services/routing/server/interval.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/xdr/agents.controller.js b/server/services/xdr/agents.controller.js
index 0dbba4d..57fa13c 100644
--- a/server/services/xdr/agents.controller.js
+++ b/server/services/xdr/agents.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/xdr/calls.controller.js b/server/services/xdr/calls.controller.js
index b67029b..39ac55a 100644
--- a/server/services/xdr/calls.controller.js
+++ b/server/services/xdr/calls.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/xdr/core.controller.js b/server/services/xdr/core.controller.js
index 727c450..31359e6 100644
--- a/server/services/xdr/core.controller.js
+++ b/server/services/xdr/core.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/xdr/dials.controller.js b/server/services/xdr/dials.controller.js
index 8b25800..8025821 100644
--- a/server/services/xdr/dials.controller.js
+++ b/server/services/xdr/dials.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/xdr/index.js b/server/services/xdr/index.js
index 6424f38..8c25924 100644
--- a/server/services/xdr/index.js
+++ b/server/services/xdr/index.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/xdr/members.controller.js b/server/services/xdr/members.controller.js
index 0458f1d..adf05d0 100644
--- a/server/services/xdr/members.controller.js
+++ b/server/services/xdr/members.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/xdr/queues.controller.js b/server/services/xdr/queues.controller.js
index b5870e5..05f96f8 100644
--- a/server/services/xdr/queues.controller.js
+++ b/server/services/xdr/queues.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/xdr/recordings.controller.js b/server/services/xdr/recordings.controller.js
index 23b292d..b15aa8b 100644
--- a/server/services/xdr/recordings.controller.js
+++ b/server/services/xdr/recordings.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/xdr/transfers.controller.js b/server/services/xdr/transfers.controller.js
index 01bf7f5..94ce87b 100644
--- a/server/services/xdr/transfers.controller.js
+++ b/server/services/xdr/transfers.controller.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
diff --git a/server/services/xdr/utils.js b/server/services/xdr/utils.js
index f09a688..4c21efd 100644
--- a/server/services/xdr/utils.js
+++ b/server/services/xdr/utils.js
@@ -15,4 +15,4 @@
 // * treaties. The SOFTWARE PRODUCT is licensed, not sold. 		           *
 // *                                                                       *
 // *************************************************************************
\ No newline at end of file
\ No newline at end of file
-- 
1.7.1